diff options
author | Matthieu Napoli <matthieu@mnapoli.fr> | 2015-02-02 01:04:02 +0300 |
---|---|---|
committer | Matthieu Napoli <matthieu@mnapoli.fr> | 2015-02-10 00:56:03 +0300 |
commit | a028d179e99221149466661f0d7c73feebd348d2 (patch) | |
tree | c0685381ebb739c33147189aac5a51edf552c3ce /core/Container | |
parent | e084b065d0b8abd8684fb74be4d1e0e66db33f74 (diff) |
ref #6609 Plugins can provide their own config files
Diffstat (limited to 'core/Container')
-rw-r--r-- | core/Container/ContainerFactory.php | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/core/Container/ContainerFactory.php b/core/Container/ContainerFactory.php index bf3b157ba8..4098b1e204 100644 --- a/core/Container/ContainerFactory.php +++ b/core/Container/ContainerFactory.php @@ -13,6 +13,7 @@ use DI\ContainerBuilder; use Doctrine\Common\Cache\ArrayCache; use Piwik\Config; use Piwik\Development; +use Piwik\Plugin\Manager; /** * Creates a configured DI container. @@ -41,10 +42,6 @@ class ContainerFactory */ public function create() { - if (!class_exists('DI\ContainerBuilder')) { - throw new \Exception('DI\ContainerBuilder could not be found, maybe you are using Piwik from git and need to update Composer: php composer.phar update'); - } - $builder = new ContainerBuilder(); $builder->useAnnotations(false); @@ -56,6 +53,9 @@ class ContainerFactory // Global config $builder->addDefinitions(PIWIK_USER_PATH . '/config/global.php'); + // Plugin configs + $this->addPluginConfigs($builder); + // Development config if (Development::isEnabled()) { $builder->addDefinitions(PIWIK_USER_PATH . '/config/environment/dev.php'); @@ -82,4 +82,19 @@ class ContainerFactory $builder->addDefinitions($file); } + + private function addPluginConfigs(ContainerBuilder $builder) + { + $plugins = Manager::getInstance()->getActivatedPluginsFromConfig(); + + foreach ($plugins as $plugin) { + $file = Manager::getPluginsDirectory() . $plugin . '/config/config.php'; + + if (! file_exists($file)) { + continue; + } + + $builder->addDefinitions($file); + } + } } |