| namespace Kanboard\Core; | |
| use Pimple\Container; | |
| /** | |
| * Helper base class | |
| * | |
| * @package core | |
| * @author Frederic Guillot | |
| * | |
| * @property \Kanboard\Helper\AppHelper $app | |
| * @property \Kanboard\Helper\AssetHelper $asset | |
| * @property \Kanboard\Helper\AvatarHelper $avatar | |
| * @property \Kanboard\Helper\BoardHelper $board | |
| * @property \Kanboard\Helper\CommentHelper $comment | |
| * @property \Kanboard\Helper\DateHelper $dt | |
| * @property \Kanboard\Helper\FileHelper $file | |
| * @property \Kanboard\Helper\FormHelper $form | |
| * @property \Kanboard\Helper\HookHelper $hook | |
| * @property \Kanboard\Helper\ModalHelper $modal | |
| * @property \Kanboard\Helper\ModelHelper $model | |
| * @property \Kanboard\Helper\SubtaskHelper $subtask | |
| * @property \Kanboard\Helper\TaskHelper $task | |
| * @property \Kanboard\Helper\TextHelper $text | |
| * @property \Kanboard\Helper\UrlHelper $url | |
| * @property \Kanboard\Helper\UserHelper $user | |
| * @property \Kanboard\Helper\LayoutHelper $layout | |
| * @property \Kanboard\Helper\ProjectRoleHelper $projectRole | |
| * @property \Kanboard\Helper\ProjectHeaderHelper $projectHeader | |
| * @property \Kanboard\Helper\ProjectActivityHelper $projectActivity | |
| * @property \Kanboard\Helper\MailHelper $mail | |
| */ | |
| class Helper | |
| { | |
| /** | |
| * Helper instances | |
| * | |
| * @access private | |
| * @var \Pimple\Container | |
| */ | |
| private $helpers; | |
| /** | |
| * Container instance | |
| * | |
| * @access private | |
| * @var \Pimple\Container | |
| */ | |
| private $container; | |
| /** | |
| * Constructor | |
| * | |
| * @access public | |
| * @param \Pimple\Container $container | |
| */ | |
| public function __construct(Container $container) | |
| { | |
| $this->container = $container; | |
| $this->helpers = new Container; | |
| } | |
| /** | |
| * Expose helpers with magic getter | |
| * | |
| * @access public | |
| * @param string $helper | |
| * @return mixed | |
| */ | |
| public function __get($helper) | |
| { | |
| return $this->getHelper($helper); | |
| } | |
| /** | |
| * Expose helpers with method | |
| * | |
| * @access public | |
| * @param string $helper | |
| * @return mixed | |
| */ | |
| public function getHelper($helper) | |
| { | |
| return $this->helpers[$helper]; | |
| } | |
| /** | |
| * Register a new Helper | |
| * | |
| * @access public | |
| * @param string $property | |
| * @param string $className | |
| * @return Helper | |
| */ | |
| public function register($property, $className) | |
| { | |
| $container = $this->container; | |
| $this->helpers[$property] = function() use ($className, $container) { | |
| return new $className($container); | |
| }; | |
| return $this; | |
| } | |
| } | |