Example #1
0
 public function boot()
 {
     $parameterBag = $this->container->getParameterBag();
     $settingsService = $this->container->get('settingsService');
     $rootDir = $parameterBag->get('zenmagick.root_dir');
     $context = \ZenMagick\Base\Runtime::getContext();
     $settingsFiles = array();
     $settingsFiles[] = $rootDir . '/src/ZenMagick/StoreBundle/config/config.yaml';
     $settingsFiles[] = sprintf('%s/src/ZenMagick/%sBundle/config/config.yaml', $rootDir, ucfirst($context));
     foreach ($settingsFiles as $config) {
         if (file_exists($config)) {
             $settingsService->load($config);
         }
     }
     // @todo never do this
     \Zenmagick\Base\Runtime::setContainer($this->container);
     if ('install' == $parameterBag->get('kernel.environment')) {
         return;
     }
     // @todo don't just exit if no plugins
     $pluginsEnabled = $parameterBag->get('zenmagick.plugins.enabled');
     if (!$this->container->has('pluginService') && $pluginsEnabled) {
         return;
     }
     if ($this->container->has('configService')) {
         foreach ($this->container->get('configService')->loadAll() as $key => $value) {
             if (!defined($key)) {
                 define($key, $value);
             }
         }
         $defaults = $rootDir . '/src/ZenMagick/StoreBundle/config/defaults.php';
         if (file_exists($defaults)) {
             include $defaults;
         }
     }
     // @todo switch to using tagged services for events.
     $settingsService = $this->container->get('settingsService');
     $listeners = array(sprintf('ZenMagick\\%sBundle\\EventListener\\%sListener', ucfirst($context), ucfirst($context)));
     if ($this->container->has('pluginService') && $pluginsEnabled) {
         $plugins = $this->container->get('pluginService')->getPluginsForContext($context, true);
         foreach ($plugins as $plugin) {
             // @todo the plugin list will continue disabled plugins on the requests that build the cache.
             if (!$plugin->isEnabled()) {
                 continue;
             }
             $listeners[] = $plugin;
         }
     }
     if ('storefront' == $context) {
         $listeners[] = sprintf('ZenMagick\\themes\\%s\\EventListener', $this->container->get('themeService')->getActiveThemeId());
     }
     // @todo switch to using tagged services for events.
     $dispatcher = $this->container->get('event_dispatcher');
     foreach ($listeners as $eventListener) {
         if (is_string($eventListener)) {
             if (!class_exists($eventListener)) {
                 continue;
             }
             if (null != ($eventListener = new $eventListener())) {
                 $eventListener->setContainer($this->container);
             }
         }
         if (is_object($eventListener)) {
             $events = array();
             foreach (get_class_methods($eventListener) as $method) {
                 if (0 === strpos($method, 'on')) {
                     $eventName = Container::underscore(substr($method, 2));
                     $dispatcher->addListener($eventName, array($eventListener, $method));
                 }
             }
         }
     }
 }