Esempio n. 1
0
 /**
  *
  * Load some configuration
  * Initialize all plugins
  *
  */
 protected function loadConfiguration(ContainerBuilder $container)
 {
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . "/../Config/Resources"));
     $finder = Finder::create()->name('*.xml')->depth(0)->in(__DIR__ . "/../Config/Resources");
     /** @var \SplFileInfo $file */
     foreach ($finder as $file) {
         $loader->load($file->getBaseName());
     }
     if (defined("THELIA_INSTALL_MODE") === false) {
         $modules = ModuleQuery::getActivated();
         $translationDirs = array();
         /** @var Module $module */
         foreach ($modules as $module) {
             try {
                 $definition = new Definition();
                 $definition->setClass($module->getFullNamespace());
                 $definition->addMethodCall("setContainer", array(new Reference('service_container')));
                 $container->setDefinition("module." . $module->getCode(), $definition);
                 $compilers = call_user_func(array($module->getFullNamespace(), 'getCompilers'));
                 foreach ($compilers as $compiler) {
                     if (is_array($compiler)) {
                         $container->addCompilerPass($compiler[0], $compiler[1]);
                     } else {
                         $container->addCompilerPass($compiler);
                     }
                 }
                 $loader = new XmlFileLoader($container, new FileLocator($module->getAbsoluteConfigPath()));
                 $loader->load("config.xml", "module." . $module->getCode());
                 $envConfigFileName = sprintf("config_%s.xml", $this->environment);
                 $envConfigFile = sprintf('%s%s%s', $module->getAbsoluteConfigPath(), DS, $envConfigFileName);
                 if (is_file($envConfigFile) && is_readable($envConfigFile)) {
                     $loader->load($envConfigFileName, "module." . $module->getCode());
                 }
             } catch (\Exception $e) {
                 Tlog::getInstance()->addError(sprintf("Failed to load module %s: %s", $module->getCode(), $e->getMessage()), $e);
             }
         }
         /** @var ParserInterface $parser */
         $parser = $container->getDefinition('thelia.parser');
         /** @var \Thelia\Core\Template\TemplateHelperInterface $templateHelper */
         $templateHelper = $container->get('thelia.template_helper');
         /** @var Module $module */
         foreach ($modules as $module) {
             try {
                 $this->loadModuleTranslationDirectories($module, $translationDirs, $templateHelper);
                 $this->addStandardModuleTemplatesToParserEnvironment($parser, $module);
             } catch (\Exception $e) {
                 Tlog::getInstance()->addError(sprintf("Failed to load module %s: %s", $module->getCode(), $e->getMessage()), $e);
             }
         }
         // Load core translation
         $translationDirs['core'] = THELIA_LIB . 'Config' . DS . 'I18n';
         // Load core translation
         $translationDirs[Translator::GLOBAL_FALLBACK_DOMAIN] = THELIA_LOCAL_DIR . 'I18n';
         // Standard templates (front, back, pdf, mail)
         /** @var TemplateDefinition $templateDefinition */
         foreach ($templateHelper->getStandardTemplateDefinitions() as $templateDefinition) {
             if (is_dir($dir = $templateDefinition->getAbsoluteI18nPath())) {
                 $translationDirs[$templateDefinition->getTranslationDomain()] = $dir;
             }
         }
         if ($translationDirs) {
             $this->loadTranslation($container, $translationDirs);
         }
     }
 }
Esempio n. 2
0
 /**
  *
  * Load some configuration
  * Initialize all plugins
  *
  */
 protected function loadConfiguration(ContainerBuilder $container)
 {
     $loader = new XmlFileLoader($container, new FileLocator(THELIA_ROOT . "/core/lib/Thelia/Config/Resources"));
     $finder = Finder::create()->name('*.xml')->depth(0)->in(THELIA_ROOT . "/core/lib/Thelia/Config/Resources");
     /** @var \SplFileInfo $file */
     foreach ($finder as $file) {
         $loader->load($file->getBaseName());
     }
     if (defined("THELIA_INSTALL_MODE") === false) {
         $modules = ModuleQuery::getActivated();
         $translationDirs = array();
         /** @var ParserInterface $parser */
         $parser = $container->getDefinition('thelia.parser');
         /** @var Module $module */
         foreach ($modules as $module) {
             try {
                 $definition = new Definition();
                 $definition->setClass($module->getFullNamespace());
                 $definition->addMethodCall("setContainer", array(new Reference('service_container')));
                 $container->setDefinition("module." . $module->getCode(), $definition);
                 $compilers = call_user_func(array($module->getFullNamespace(), 'getCompilers'));
                 foreach ($compilers as $compiler) {
                     if (is_array($compiler)) {
                         $container->addCompilerPass($compiler[0], $compiler[1]);
                     } else {
                         $container->addCompilerPass($compiler);
                     }
                 }
                 $loader = new XmlFileLoader($container, new FileLocator($module->getAbsoluteConfigPath()));
                 $loader->load("config.xml", "module." . $module->getCode());
                 // Core module translation
                 if (is_dir($dir = $module->getAbsoluteI18nPath())) {
                     $translationDirs[$module->getTranslationDomain()] = $dir;
                 }
                 // Admin includes translation
                 if (is_dir($dir = $module->getAbsoluteAdminIncludesI18nPath())) {
                     $translationDirs[$module->getAdminIncludesTranslationDomain()] = $dir;
                 }
                 // Module back-office template, if any
                 $templates = TemplateHelper::getInstance()->getList(TemplateDefinition::BACK_OFFICE, $module->getAbsoluteTemplateBasePath());
                 foreach ($templates as $template) {
                     $translationDirs[$module->getBackOfficeTemplateTranslationDomain($template->getName())] = $module->getAbsoluteBackOfficeI18nTemplatePath($template->getName());
                 }
                 // Module front-office template, if any
                 $templates = TemplateHelper::getInstance()->getList(TemplateDefinition::FRONT_OFFICE, $module->getAbsoluteTemplateBasePath());
                 foreach ($templates as $template) {
                     $translationDirs[$module->getFrontOfficeTemplateTranslationDomain($template->getName())] = $module->getAbsoluteFrontOfficeI18nTemplatePath($template->getName());
                 }
                 $this->addStandardModuleTemplatesToParserEnvironment($parser, $module);
             } catch (\InvalidArgumentException $e) {
                 Tlog::getInstance()->addError(sprintf("Failed to load module %s: %s", $module->getCode(), $e->getMessage()), $e);
                 throw $e;
             }
         }
         // Load core translation
         $translationDirs['core'] = THELIA_ROOT . 'core' . DS . 'lib' . DS . 'Thelia' . DS . 'Config' . DS . 'I18n';
         // Standard templates (front, back, pdf, mail)
         $th = TemplateHelper::getInstance();
         /** @var TemplateDefinition $templateDefinition */
         foreach ($th->getStandardTemplateDefinitions() as $templateDefinition) {
             if (is_dir($dir = $templateDefinition->getAbsoluteI18nPath())) {
                 $translationDirs[$templateDefinition->getTranslationDomain()] = $dir;
             }
         }
         if ($translationDirs) {
             $this->loadTranslation($container, $translationDirs);
         }
     }
 }