1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
<?php
/**
* TfContentHandlerFactory class file.
*
* @copyright Simon Wilkinson 2013+ (https://tuskfish.biz)
* @license https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html GNU General Public License (GPL) V2
* @author Simon Wilkinson <[email protected]>
* @version Release: 1.0
* @since 1.1
* @package core
*/
// Enable strict type declaration.
declare(strict_types=1);
if (!defined("TFISH_ROOT_PATH")) die("TFISH_ERROR_ROOT_PATH_NOT_DEFINED");
/**
* Factory class that instantiates TfContentHandler objects and handles dependency injection.
*
* @copyright Simon Wilkinson 2013+ (https://tuskfish.biz)
* @license https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html GNU General Public License (GPL) V2
* @author Simon Wilkinson <[email protected]>
* @version Release: 1.0
* @since 1.1
* @package content
* @var TfValidator $validator Instance of the Tuskfish data validator class.
* @var TfDatabase $db Instance of the Tuskfish database class.
* @var TfCriteriaFactory $criteriaFactory Instance of the Tuskfish criteria factory class.
* @var TfFileHandler $fileHandler Instance of the Tuskfish file handler class.
* @var TfTaglinkHandler $taglinkHandler Instance of the Tuskfish taglink handler class.
*/
class TfContentHandlerFactory
{
protected $validator;
protected $db;
protected $criteriaFactory;
protected $fileHandler;
protected $taglinkHandler;
/**
* Constructor.
*
* @param TfValidator $validator An instance of the Tuskfish data validator class.
* @param TfDatabase $db An instance of the database class.
* @param TfCriteriaFactory $criteriaFactory an instance of the Tuskfish criteria factory class.
* @param TfFileHandler $fileHandler An instance of the Tuskfish file handler class.
*/
public function __construct(TfValidator $validator, TfDatabase $db,
TfCriteriaFactory $criteriaFactory, TfFileHandler $fileHandler)
{
if (is_a($validator, 'TfValidator')) {
$this->validator = $validator;
} else {
trigger_error(TFISH_ERROR_NOT_VALIDATOR, E_USER_ERROR);
}
if (is_a($db, 'TfDatabase')) {
$this->db = $db;
} else {
trigger_error(TFISH_ERROR_NOT_DATABASE, E_USER_ERROR);
}
if (is_a($criteriaFactory, 'TfCriteriaFactory')) {
$this->criteriaFactory = $criteriaFactory;
} else {
trigger_error(TFISH_ERROR_NOT_CRITERIA_FACTORY, E_USER_ERROR);
}
if (is_a($fileHandler, 'TfFileHandler')) {
$this->fileHandler = $fileHandler;
} else {
trigger_error(TFISH_ERROR_NOT_FILE_HANDLER, E_USER_ERROR);
}
$this->taglinkHandler = new TfTaglinkHandler($validator, $db, $criteriaFactory);
}
/**
* Instantiates and returns the requested TfishContentHandler subclass.
*
* @param string $type Name of the requested handler.
* @return \TfCollectionHandler|\TfContentHandler|\TfTagHandler
*/
public function getHandler(string $type)
{
$cleanType = $this->validator->trimString($type);
// Content is a generic handler that manipulates content objects that do not have dedicated
// handlers.
if ($cleanType === 'content') {
return new TfContentHandler($this->validator, $this->db, $this->criteriaFactory,
$this->fileHandler, $this->taglinkHandler);
}
if ($cleanType === 'block') {
return new TfBlockHandler($this->validator, $this->db, $this->criteriaFactory,
$this->fileHandler, $this->taglinkHandler);
}
if ($cleanType === 'collection') {
return new TfCollectionHandler($this->validator, $this->db, $this->criteriaFactory,
$this->fileHandler, $this->taglinkHandler);
}
if ($cleanType === 'tag') {
return new TfTagHandler($this->validator, $this->db, $this->criteriaFactory,
$this->fileHandler, $this->taglinkHandler);
}
trigger_error(TFISH_ERROR_NO_SUCH_HANDLER, E_USER_ERROR);
}
}