/** * * 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); } } }
/** * * 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); } } }