예제 #1
0
 /**
  * Extend extra configs from etc folder of module on system init configs
  *
  * @param Varien_Event_Observer $observer
  */
 public function extendConfig($observer)
 {
     $storeCode = Mage::helper("jmbasetheme")->getCurrentStoreCode("backend");
     $profiles = array_keys(Mage::helper("jmbasetheme")->getProfiles($storeCode));
     $mergeObject = new Mage_Core_Model_Config_Base();
     $profilePath = Mage::helper("jmbasetheme")->getProfilePath($storeCode);
     foreach ($profiles as $profile) {
         if (file_exists($profilePath . "core" . DS . $profile . ".xml")) {
             $mergeObject->loadFile($profilePath . "core" . DS . $profile . ".xml");
         } else {
             $mergeObject->loadFile($profilePath . "local" . DS . $profile . ".xml");
         }
         $observer->config->extend($mergeObject, false);
     }
     if (file_exists($profilePath . "core" . DS . "core.xml")) {
         $mergeObject->loadFile($profilePath . "core" . DS . "core.xml");
         $observer->config->extend($mergeObject, false);
     }
     //extend tablet settings
     $mergeObject->loadFile(Mage::getModuleDir('etc', 'Wavethemes_Jmbasetheme') . "/device.xml");
     $observer->config->extend($mergeObject, false);
     //extend mobile settings
     $mergeObject->loadFile(Mage::getModuleDir('etc', 'Wavethemes_Jmbasetheme') . "/mobile.xml");
     $observer->config->extend($mergeObject, false);
 }
예제 #2
0
 public function addMageOneFourConfig($observer)
 {
     if (version_compare(Mage::getVersion(), '1.5.0.0', '<')) {
         $file = Mage::getModuleDir('etc', 'MageBase_DpsPaymentExpress') . DS . 'config-1.4.xml';
         $config = Mage::getConfig();
         $prototype = new Mage_Core_Model_Config_Base();
         $prototype->loadFile($file);
         $config->extend($prototype);
         $config->saveCache();
     }
 }
예제 #3
0
 public function loadModules(array $files)
 {
     $this->loadString('<config/>');
     $loadedModules = array();
     foreach ($files as $file) {
         $this->_magento2config->loadFile($file);
         $moduleName = $this->_magento2config->getNode('module')->getAttribute('name');
         if ($this->isModuleLoaded($moduleName)) {
             $loadedModules[] = $moduleName;
             continue;
         }
         $loadedModules[] = $moduleName;
         $version = $this->_magento2config->getNode('module')->getAttribute('schema_version');
         $modules = Mage::getConfig()->getNode('modules');
         $child = $modules->addChild($moduleName);
         $child->addChild('active', 'true');
         $child->addChild('codePool', 'community');
         $child->addChild('version', $version);
         $this->loadString('<config/>');
     }
     return $loadedModules;
 }
예제 #4
0
 public function Extendconfig($observer)
 {
     $profiles = array_keys(Mage::helper("jmbasetheme")->getProfiles());
     $mergeobject = new Mage_Core_Model_Config_Base();
     foreach ($profiles as $profile) {
         if (file_exists(Mage::helper("jmbasetheme")->getprofileFolder() . DS . "core" . DS . $profile . ".xml")) {
             $mergeobject->loadFile(Mage::helper("jmbasetheme")->getprofileFolder() . DS . "core" . DS . $profile . ".xml");
         } else {
             $mergeobject->loadFile(Mage::helper("jmbasetheme")->getprofileFolder() . DS . "local" . DS . $profile . ".xml");
         }
         $observer->config->extend($mergeobject, false);
     }
     if (file_exists(Mage::helper("jmbasetheme")->getprofileFolder() . DS . "core" . DS . "core.xml")) {
         $mergeobject->loadFile(Mage::helper("jmbasetheme")->getprofileFolder() . DS . "core" . DS . "core.xml");
         $observer->config->extend($mergeobject, false);
     }
     //extend tablet settings
     $mergeobject->loadFile(Mage::getModuleDir('etc', 'Wavethemes_Jmbasetheme') . "/device.xml");
     $observer->config->extend($mergeobject, false);
     //extend mobile settings
     $mergeobject->loadFile(Mage::getModuleDir('etc', 'Wavethemes_Jmbasetheme') . "/mobile.xml");
     $observer->config->extend($mergeobject, false);
 }
예제 #5
0
 protected function _initSectionsAndTabs()
 {
     if (Mage::helper('advanced')->isAnyStoreDisabled()) {
         $mergeConfig = Mage::getModel('core/config_base');
         $config = Mage::getConfig()->loadModulesConfiguration('system.xml');
         //these 4 lines are the only added content
         $configFile = Mage::helper('advanced')->getEtcPath() . DS . 'system-disabled.xml';
         $mergeModel = new Mage_Core_Model_Config_Base();
         $mergeModel->loadFile($configFile);
         $config = $config->extend($mergeModel, true);
         $this->_sections = $config->getNode('sections');
         $this->_tabs = $config->getNode('tabs');
     } else {
         return parent::_initSectionsAndTabs();
     }
     return parent::_initSectionsAndTabs();
 }
예제 #6
0
 /**
  * Load declared modules configuration
  *
  * @param   null $mergeConfig depricated
  * @return  Mage_Core_Model_Config
  */
 protected function _loadDeclaredModules($mergeConfig = null)
 {
     $moduleFiles = $this->_getDeclaredModuleFiles();
     if (!$moduleFiles) {
         return;
     }
     Varien_Profiler::start('config/load-modules-declaration');
     $unsortedConfig = new Mage_Core_Model_Config_Base();
     $unsortedConfig->loadString('<config/>');
     $fileConfig = new Mage_Core_Model_Config_Base();
     // load modules declarations
     foreach ($moduleFiles as $file) {
         $fileConfig->loadFile($file);
         $unsortedConfig->extend($fileConfig);
     }
     $moduleDepends = array();
     foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         if (!$this->_isAllowedModule($moduleName)) {
             continue;
         }
         $depends = array();
         if ($moduleNode->depends) {
             foreach ($moduleNode->depends->children() as $depend) {
                 $depends[$depend->getName()] = true;
             }
         }
         $moduleDepends[$moduleName] = array('module' => $moduleName, 'depends' => $depends, 'active' => 'true' === (string) $moduleNode->active ? true : false);
     }
     // check and sort module dependence
     $moduleDepends = $this->_sortModuleDepends($moduleDepends);
     // create sorted config
     $sortedConfig = new Mage_Core_Model_Config_Base();
     $sortedConfig->loadString('<config><modules/></config>');
     foreach ($unsortedConfig->getNode()->children() as $nodeName => $node) {
         if ($nodeName != 'modules') {
             $sortedConfig->getNode()->appendChild($node);
         }
     }
     foreach ($moduleDepends as $moduleProp) {
         $node = $unsortedConfig->getNode('modules/' . $moduleProp['module']);
         $sortedConfig->getNode('modules')->appendChild($node);
     }
     $this->extend($sortedConfig);
     Varien_Profiler::stop('config/load-modules-declaration');
     return $this;
 }
예제 #7
0
 protected function isRedisEnabled()
 {
     $fileConfig = new Mage_Core_Model_Config_Base();
     $fileConfig->loadFile(Mage::getBaseDir('etc') . DS . 'modules' . DS . 'Cm_RedisSession.xml');
     $isActive = $fileConfig->getNode('modules/Cm_RedisSession/active');
     if (!$isActive || !in_array((string) $isActive, array('true', '1'))) {
         return false;
     }
     return true;
 }
예제 #8
0
파일: Front.php 프로젝트: rcclaudrey/dev
 public function isModuleEnabled($module)
 {
     $fileConfig = new Mage_Core_Model_Config_Base();
     $fileConfig->loadFile(Mage::getBaseDir('etc') . DS . 'modules' . DS . $module . '.xml');
     $isActive = $fileConfig->getNode('modules/' . $module . '/active');
     if (!$isActive || !in_array((string) $isActive, array('true', '1'))) {
         return false;
     }
     return true;
 }
예제 #9
0
 /**
  * Iterate all active modules "etc" folders and combine data from
  * specidied xml file name to one object
  *
  * @param   string $fileName
  * @param   null|Mage_Core_Model_Config_Base $mergeToObject
  * @return  Mage_Core_Model_Config_Base
  */
 public function loadModulesConfiguration($fileName, $mergeToObject = null, $mergeModel = null)
 {
     $disableLocalModules = !$this->_canUseLocalModules();
     if ($mergeToObject === null) {
         $mergeToObject = new Mage_Core_Model_Config_Base();
         $mergeToObject->loadString('<config/>');
     }
     if ($mergeModel === null) {
         $mergeModel = new Mage_Core_Model_Config_Base();
     }
     $modules = $this->getNode('modules')->children();
     foreach ($modules as $modName => $module) {
         if ($module->is('active')) {
             if ($disableLocalModules && 'local' === (string) $module->codePool) {
                 continue;
             }
             $configFile = $this->getModuleDir('etc', $modName) . DS . $fileName;
             if ($mergeModel->loadFile($configFile)) {
                 $mergeToObject->extend($mergeModel, true);
             }
         }
     }
     return $mergeToObject;
 }
예제 #10
0
 protected function _checkRewrites()
 {
     $this->section('Rewrites Information');
     $types = array('models' => 'Models', 'blocks' => 'Blocks', 'helpers' => 'Helpers');
     $this->output('/!\\ Only active modules are considered and core modules are ignored');
     $this->output('The script will also try to find possible conflicts between classes', 4);
     $this->br();
     $rewrites = array();
     $modules = $this->_config->getNode('modules')->children();
     foreach ($modules as $moduleName => $module) {
         if ($module->is('active') && $module->codePool != 'core') {
             $mergeModel = new Mage_Core_Model_Config_Base();
             $configFile = $this->_config->getModuleDir('etc', $moduleName) . DS . 'config.xml';
             if ($data = $mergeModel->loadFile($configFile)) {
                 foreach ($types as $type => $label) {
                     $list = $mergeModel->getNode()->global->{$type};
                     if ($list) {
                         foreach ($list->children() as $key => $data) {
                             if ($data->rewrite) {
                                 foreach ($data->rewrite->children() as $path => $value) {
                                     $rewrites[$type]["{$key}/{$path}"][$moduleName] = (string) $value;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     if (empty($rewrites)) {
         $this->output('No class rewrites found');
     } else {
         foreach ($rewrites as $type => $list) {
             $this->output(sprintf('%s (%s)', $this->bold($types[$type]), count($list)));
             foreach ($list as $key => $modules) {
                 if (count($modules) === 1) {
                     $this->output($this->bold($key), 2);
                 } else {
                     $this->error(sprintf('%s (possible classes conflicts)', $this->bold($key)), 2);
                 }
                 foreach ($modules as $module => $class) {
                     $this->start($this->pad($module, 40), 4);
                     $this->output($class);
                 }
             }
             $this->br();
         }
     }
     return $this;
 }
예제 #11
0
 /**
  * Initialization of core configuration
  *
  * @return Mage_Core_Model_Config
  */
 public function init($etcDir = null)
 {
     $this->setCacheChecksum(null);
     $saveCache = true;
     if (is_null($etcDir)) {
         $etcDir = Mage::getRoot() . DS . 'etc';
     }
     $this->_customEtcDir = $etcDir;
     $this->loadFile($etcDir . DS . 'local.xml');
     // check if local modules are disabled
     $disableLocalModules = (string) $this->getNode('global/disable_local_modules');
     $disableLocalModules = !empty($disableLocalModules) && ('true' === $disableLocalModules || '1' === $disableLocalModules);
     if ($disableLocalModules) {
         /**
          * Reset include path
          */
         set_include_path(BP . '/app/code/community' . PS . BP . '/app/code/core' . PS . BP . '/lib' . PS . Mage::registry('original_include_path'));
     }
     Varien_Profiler::start('config/load-cache');
     if (Mage::app()->isInstalled()) {
         if ($this->loadCache()) {
             if (!Mage::app()->useCache('config')) {
                 Mage::app()->removeCache($this->getCacheId());
             } else {
                 Varien_Profiler::stop('config/load-cache');
                 return $this;
             }
         }
         if (!Mage::app()->useCache('config')) {
             $saveCache = false;
         }
     } else {
         $saveCache = false;
     }
     Varien_Profiler::stop('config/load-cache');
     $mergeConfig = new Mage_Core_Model_Config_Base();
     /**
      * Load base configuration data
      */
     Varien_Profiler::start('config/load-base');
     $configFile = $etcDir . DS . 'config.xml';
     $this->loadFile($configFile);
     $moduleFiles = glob($etcDir . DS . 'modules' . DS . '*.xml');
     if ($moduleFiles) {
         foreach ($moduleFiles as $file) {
             $mergeConfig->loadFile($file);
             $this->extend($mergeConfig);
         }
     }
     Varien_Profiler::stop('config/load-base');
     /**
      * Load local configuration data
      */
     Varien_Profiler::start('config/load-local');
     $configFile = $etcDir . DS . 'local.xml';
     if (is_readable($configFile)) {
         $mergeConfig->loadFile($configFile);
         $this->extend($mergeConfig);
         $localConfigLoaded = true;
     } else {
         $localConfigLoaded = false;
     }
     Varien_Profiler::stop('config/load-local');
     if (!$localConfigLoaded) {
         Varien_Profiler::start('config/load-distro');
         $mergeConfig->loadString($this->loadDistroConfig());
         $this->extend($mergeConfig, true);
         Varien_Profiler::stop('config/load-distro');
         $saveCache = false;
     }
     /**
      * Load modules configuration data
      */
     Varien_Profiler::start('config/load-modules');
     $modules = $this->getNode('modules')->children();
     foreach ($modules as $modName => $module) {
         if ($module->is('active')) {
             if ($disableLocalModules && 'local' === (string) $module->codePool) {
                 continue;
             }
             $configFile = $this->getModuleDir('etc', $modName) . DS . 'config.xml';
             if ($mergeConfig->loadFile($configFile)) {
                 $this->extend($mergeConfig, true);
             }
         }
     }
     Varien_Profiler::stop('config/load-modules');
     Varien_Profiler::start('config/apply-extends');
     $this->applyExtends();
     Varien_Profiler::stop('config/apply-extends');
     /**
      * Load configuration from DB
      */
     if ($localConfigLoaded) {
         Varien_Profiler::start('dbUpdates');
         Mage_Core_Model_Resource_Setup::applyAllUpdates();
         Varien_Profiler::stop('dbUpdates');
         Varien_Profiler::start('config/load-db');
         $dbConf = Mage::getResourceModel('core/config');
         $dbConf->loadToXml($this);
         Varien_Profiler::stop('config/load-db');
     }
     if ($saveCache) {
         Varien_Profiler::start('config/save-cache');
         $this->saveCache();
         Varien_Profiler::stop('config/save-cache');
     }
     return $this;
 }
예제 #12
0
 /**
  * Add a config file to the given merge config
  *
  * @param string                      $fileName    File to load
  * @param Mage_Core_Model_Config_Base $mergeConfig Global config for merging
  */
 protected function _addConfigFile($fileName, $mergeConfig, $overwrite = true)
 {
     $config = Mage::getConfig();
     $configFile = $config->getModuleDir('etc', 'FireGento_MageSetup') . DS . $this->getCountry() . DS . $fileName;
     // If the given file does not exist, use the default file
     if (!file_exists($configFile)) {
         $configFile = $config->getModuleDir('etc', 'FireGento_MageSetup') . DS . 'default' . DS . $fileName;
     }
     // Load the given config file
     if (file_exists($configFile)) {
         if ($mergeConfig->loadFile($configFile)) {
             $config->extend($mergeConfig, $overwrite);
         }
     }
 }