diff --git a/app/Core/Plugin/Base.php b/app/Core/Plugin/Base.php index 152653700..381b8bb32 100644 --- a/app/Core/Plugin/Base.php +++ b/app/Core/Plugin/Base.php @@ -40,6 +40,17 @@ abstract class Base extends \Kanboard\Core\Base return array(); } + /** + * Returns all helper classes that needs to be stored in the DI container + * + * @access public + * @return array + */ + public function getHelpers() + { + return array(); + } + /** * Listen on internal events * diff --git a/app/Core/Plugin/Loader.php b/app/Core/Plugin/Loader.php index ff4f2c148..775673de6 100644 --- a/app/Core/Plugin/Loader.php +++ b/app/Core/Plugin/Loader.php @@ -70,6 +70,8 @@ class Loader extends \Kanboard\Core\Base Tool::buildDic($this->container, $instance->getClasses()); + Tool::buildDICHelpers($this->container, $instance->getHelpers()); + $instance->initialize(); $this->plugins[] = $instance; } diff --git a/app/Core/Tool.php b/app/Core/Tool.php index edd2e609a..db2445a13 100644 --- a/app/Core/Tool.php +++ b/app/Core/Tool.php @@ -55,6 +55,27 @@ class Tool return $container; } + /** + * Build dependency injection container for custom helpers from an array + * + * @static + * @access public + * @param Container $container + * @param array $namespaces + * @return Container + */ + public static function buildDICHelpers(Container $container, array $namespaces) + { + foreach ($namespaces as $namespace => $classes) { + foreach ($classes as $name) { + $class = '\\Kanboard\\'.$namespace.'\\'.$name; + $container['helper']->register($name, $class); + } + } + + return $container; + } + /** * Generate a jpeg thumbnail from an image *