예제 #1
0
 /**
  * Load Applications XML config files from etc/apps directory and cache it
  *
  * @return Varien_Simplexml_Config
  */
 public function getXmlConfig()
 {
     $cachedXml = Mage::app()->loadCache(self::CACHE_APPLICATIONS_XML);
     if ($cachedXml) {
         $xmlApps = new Varien_Simplexml_Config($cachedXml);
     } else {
         $files = array();
         foreach (new DirectoryIterator(Mage::helper('mpbackup')->getApplicationXmlPath()) as $fileinfo) {
             /* @var $fileinfo DirectoryIterator */
             if (!$fileinfo->isDot() && ($filename = $fileinfo->getFilename()) && strtolower(strval(preg_replace("#.*\\.([^\\.]*)\$#is", "\\1", $filename))) == 'xml') {
                 $files[] = self::APP_PATH_NAME . DS . $filename;
             }
         }
         $config = new Varien_Simplexml_Config();
         $config->loadString('<?xml version="1.0"?><application></application>');
         foreach ($files as $file) {
             Mage::getConfig()->loadModulesConfiguration($file, $config);
         }
         $xmlApps = $config;
         if (Mage::app()->useCache('config')) {
             Mage::app()->saveCache($config->getXmlString(), self::CACHE_APPLICATIONS_XML, array(Mage_Core_Model_Config::CACHE_TAG));
         }
     }
     return $xmlApps;
 }
예제 #2
0
 /**
  * Load config from merged adminhtml.xml files
  */
 public function __construct()
 {
     parent::__construct();
     $this->setCacheId('adminhtml_acl_menu_config');
     /* @var $adminhtmlConfig Varien_Simplexml_Config */
     $adminhtmlConfig = Mage::app()->loadCache($this->getCacheId());
     if ($adminhtmlConfig) {
         $this->_adminhtmlConfig = new Varien_Simplexml_Config($adminhtmlConfig);
     } else {
         $adminhtmlConfig = new Varien_Simplexml_Config();
         $adminhtmlConfig->loadString('<?xml version="1.0"?><config></config>');
         Mage::getConfig()->loadModulesConfiguration('adminhtml.xml', $adminhtmlConfig);
         $this->_adminhtmlConfig = $adminhtmlConfig;
         /**
          * @deprecated after 1.4.0.0-alpha2
          * support backwards compatibility with config.xml
          */
         $aclConfig = Mage::getConfig()->getNode('adminhtml/acl');
         if ($aclConfig) {
             $adminhtmlConfig->getNode()->extendChild($aclConfig, true);
         }
         $menuConfig = Mage::getConfig()->getNode('adminhtml/menu');
         if ($menuConfig) {
             $adminhtmlConfig->getNode()->extendChild($menuConfig, true);
         }
         if (Mage::app()->useCache('config')) {
             Mage::app()->saveCache($adminhtmlConfig->getXmlString(), $this->getCacheId(), array(Mage_Core_Model_Config::CACHE_TAG));
         }
     }
 }
예제 #3
0
 public function mergeJsCssObserver(Varien_Event_Observer $observer)
 {
     return;
     $layout = $observer->getEvent()->getLayout();
     $design = Mage::getSingleton('core/design_package');
     $cacheKey = 'LAYOUT_' . $design->getArea() . '_STORE' . Mage::app()->getStore()->getId() . '_' . $design->getPackageName() . '_' . $design->getTheme('layout');
     if (!Mage::app()->useCache('layout')) {
         return $this;
     }
     if (!($xml = Mage::app()->loadCache($cacheKey))) {
         return $this;
     }
     $elementClass = $layout->getUpdate()->getElementClass();
     $xml = simplexml_load_string($xml, $elementClass);
     $defaultItems = array();
     foreach ($this->_methods as $method) {
         foreach ($xml->children() as $handle => $node) {
             if ($handle !== 'default') {
                 continue;
             }
             if ($actions = $node->xpath(".//action[@method='" . $method . "']")) {
                 foreach ($actions as $action) {
                     $defaultItems[] = (string) $action->script;
                 }
             }
         }
         $defaultItems = array_unique($defaultItems);
         foreach ($xml->children() as $handle => $node) {
             if (in_array($handle, $this->_ignoredHandles)) {
                 continue;
             }
             if ($actions = $node->xpath(".//action[@method='" . $method . "']")) {
                 $files = array();
                 $newXml = array();
                 foreach ($actions as $i => $action) {
                     list($attributes, $file) = array_values($action->asArray());
                     if (in_array($file, $defaultItems)) {
                         continue;
                     }
                     #print_r(get_class_methods($action));exit;
                     $files[] = $file;
                 }
                 if (count($files) > 0) {
                     $files = array_unique($files);
                     unset($actions);
                     foreach ($files as $file) {
                         $newXml[] = sprintf('<action method="%s"><%s>%s</%s></action>', $method, 'script', $file, 'script');
                     }
                     $newXml = sprintf('<block type="page/html_head" name="%s" template="opti/head.phtml">%s</block>', 'head.' . $handle, implode("\n\t", $newXml));
                     $configNew = new Varien_Simplexml_Config();
                     $configNew->loadString(sprintf('<layout><%s>%s</%s></layout>', $handle, $newXml, $handle));
                     $xml->extend($configNew);
                 }
             }
         }
         Mage::app()->saveCache($xml->asXml(), $cacheKey, array(Mage_Core_Model_Layout_Update::LAYOUT_GENERAL_CACHE_TAG), null);
     }
 }
예제 #4
0
 function getRewritesList()
 {
     $moduleFiles = glob(Mage::getBaseDir('etc') . DS . 'modules' . DS . '*.xml');
     if (!$moduleFiles) {
         return false;
     }
     // load file contents
     $unsortedConfig = new Varien_Simplexml_Config();
     $unsortedConfig->loadString('<config/>');
     $fileConfig = new Varien_Simplexml_Config();
     foreach ($moduleFiles as $filePath) {
         $fileConfig->loadFile($filePath);
         $unsortedConfig->extend($fileConfig);
     }
     // create sorted config [only active modules]
     $sortedConfig = new Varien_Simplexml_Config();
     $sortedConfig->loadString('<config><modules/></config>');
     foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         if ('true' === (string) $moduleNode->active) {
             $sortedConfig->getNode('modules')->appendChild($moduleNode);
         }
     }
     $fileConfig = new Varien_Simplexml_Config();
     $_finalResult = array();
     foreach ($sortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         $codePool = (string) $moduleNode->codePool;
         $configPath = BP . DS . 'app' . DS . 'code' . DS . $codePool . DS . uc_words($moduleName, DS) . DS . 'etc' . DS . 'config.xml';
         $fileConfig->loadFile($configPath);
         $rewriteBlocks = array('blocks', 'models', 'helpers');
         foreach ($rewriteBlocks as $param) {
             if (!isset($_finalResult[$param])) {
                 $_finalResult[$param] = array();
             }
             if ($rewrites = $fileConfig->getXpath('global/' . $param . '/*/rewrite')) {
                 foreach ($rewrites as $rewrite) {
                     $parentElement = $rewrite->xpath('../..');
                     foreach ($parentElement[0] as $moduleKey => $moduleItems) {
                         $moduleItemsArray['rewrite'] = array();
                         $moduleItemsArray['codePool'] = array();
                         foreach ($moduleItems->rewrite as $rewriteLine) {
                             foreach ($rewriteLine as $key => $value) {
                                 $moduleItemsArray['rewrite'][$key] = (string) $value;
                                 $moduleItemsArray['codePool'][$key] = $codePool;
                             }
                         }
                         if ($moduleItems->rewrite) {
                             $_finalResult[$param] = array_merge_recursive($_finalResult[$param], array($moduleKey => $moduleItemsArray));
                         }
                     }
                 }
             }
         }
     }
     return $_finalResult;
 }
예제 #5
0
    protected function _getXAVXmlObject()
    {
        $url = $this->getConfigData('xav_xml_url');
        $this->setXMLAccessRequest();
        $xmlRequest = $this->_xmlAccessRequest;
        $r = $this->_rawRequest;
        $xmlRequest .= <<<XMLRequest
<?xml version="1.0"?>
<AddressValidationRequest xml:lang="en-US">
  <Request>
    <RequestAction>XAV</RequestAction>
    <RequestOption>3</RequestOption>
    <TransactionReference>
      <CustomerContext>Address Validation and Classification</CustomerContext>
      <XpciVersion>1.0</XpciVersion>
    </TransactionReference>
  </Request>
  <AddressKeyFormat>
    <AddressLine>{$r->getDestStreet()}</AddressLine>
    <PoliticalDivision2>{$r->getDestCity()}</PoliticalDivision2>
    <PoliticalDivision1>{$r->getDestRegionCode()}</PoliticalDivision1>
    <PostcodePrimaryLow>{$r->getDestPostal()}</PostcodePrimaryLow>
    <CountryCode>{$r->getDestCountry()}</CountryCode>
  </AddressKeyFormat>
</AddressValidationRequest>
XMLRequest;
        $xmlResponse = $this->_getCachedQuotes($xmlRequest);
        if ($xmlResponse === null) {
            $debugData = array('request' => $xmlRequest);
            try {
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_HEADER, 0);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlRequest);
                curl_setopt($ch, CURLOPT_TIMEOUT, 30);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                $xmlResponse = curl_exec($ch);
                $debugData['result'] = $xmlResponse;
                $this->_setCachedQuotes($xmlRequest, $xmlResponse);
            } catch (Exception $e) {
                $debugData['result'] = array('error' => $e->getMessage(), 'code' => $e->getCode());
                $this->_debug($debugData);
                return null;
            }
            $this->_debug($debugData);
        }
        $xml = new Varien_Simplexml_Config();
        $xml->loadString($xmlResponse);
        return $xml;
    }
예제 #6
0
 /**
  * load gridcontrol.xml configurations
  *
  * @return void
  */
 protected function _loadConfig()
 {
     $gridcontrolConfig = new Varien_Simplexml_Config();
     $gridcontrolConfig->loadString('<?xml version="1.0"?><gridcontrol></gridcontrol>');
     $gridcontrolConfig = Mage::getConfig()->loadModulesConfiguration('gridcontrol.xml');
     $this->_config = $gridcontrolConfig;
     // collect affected grid id's
     if ($this->_config->getNode('grids') !== false) {
         foreach ($this->_config->getNode('grids')->children() as $grid) {
             $this->_gridList[] = $grid->getName();
         }
     }
 }
 /**
  * Load config from cache or merged from logging.xml files
  */
 public function __construct()
 {
     $configXml = Mage::app()->loadCache('enterprise_logging_config');
     if ($configXml) {
         $this->_xmlConfig = new Varien_Simplexml_Config($configXml);
     } else {
         $config = new Varien_Simplexml_Config();
         $config->loadString('<?xml version="1.0"?><logging></logging>');
         Mage::getConfig()->loadModulesConfiguration('logging.xml', $config);
         $this->_xmlConfig = $config;
         if (Mage::app()->useCache('config')) {
             Mage::app()->saveCache($config->getXmlString(), 'enterprise_logging_config', array(Mage_Core_Model_Config::CACHE_TAG));
         }
     }
 }
예제 #8
0
 /**
  * Load Widgets XML config from widget.xml files and cache it
  *
  * @return Varien_Simplexml_Config
  */
 public function getXmlConfig()
 {
     $cachedXml = Mage::app()->loadCache('widget_config');
     if ($cachedXml) {
         $xmlConfig = new Varien_Simplexml_Config($cachedXml);
     } else {
         $config = new Varien_Simplexml_Config();
         $config->loadString('<?xml version="1.0"?><widgets></widgets>');
         Mage::getConfig()->loadModulesConfiguration('widget.xml', $config);
         $xmlConfig = $config;
         if (Mage::app()->useCache('config')) {
             Mage::app()->saveCache($config->getXmlString(), 'widget_config', array(Mage_Core_Model_Config::CACHE_TAG));
         }
     }
     return $xmlConfig;
 }
예제 #9
0
 /**
  * Load config from giftregistry.xml files and try to cache it
  *
  * @return Varien_Simplexml_Config
  */
 public function getXmlConfig()
 {
     if (is_null($this->_config)) {
         if ($cachedXml = Mage::app()->loadCache('giftregistry_config')) {
             $xmlConfig = new Varien_Simplexml_Config($cachedXml);
         } else {
             $xmlConfig = new Varien_Simplexml_Config();
             $xmlConfig->loadString('<?xml version="1.0"?><prototype></prototype>');
             Mage::getConfig()->loadModulesConfiguration('giftregistry.xml', $xmlConfig);
             if (Mage::app()->useCache('config')) {
                 Mage::app()->saveCache($xmlConfig->getXmlString(), 'giftregistry_config', array(Mage_Core_Model_Config::CACHE_TAG));
             }
         }
         $this->_config = $xmlConfig;
     }
     return $this->_config;
 }
예제 #10
0
 /**
  * Load config from merged adminhtml.xml files
  */
 public function __construct()
 {
     parent::__construct();
     $this->setCacheId('adminhtml_acl_menu_config');
     /* @var $adminhtmlConfig Varien_Simplexml_Config */
     $adminhtmlConfig = Mage::app()->loadCache($this->getCacheId());
     if ($adminhtmlConfig) {
         $this->_adminhtmlConfig = new Varien_Simplexml_Config($adminhtmlConfig);
     } else {
         $adminhtmlConfig = new Varien_Simplexml_Config();
         $adminhtmlConfig->loadString('<?xml version="1.0"?><config></config>');
         Mage::getConfig()->loadModulesConfiguration('adminhtml.xml', $adminhtmlConfig);
         $this->_adminhtmlConfig = $adminhtmlConfig;
         if (Mage::app()->useCache('config')) {
             Mage::app()->saveCache($adminhtmlConfig->getXmlString(), $this->getCacheId(), array(Mage_Core_Model_Config::CACHE_TAG));
         }
     }
 }
예제 #11
0
 /**
  * Load XML config from m_db.xml files and caches it
  *
  * @return Varien_Simplexml_Config
  */
 public function getXml()
 {
     if (!$this->_xml) {
         $cachedXml = Mage::app()->loadCache('m_db_config');
         if ($cachedXml) {
             $this->_xml = new Varien_Simplexml_Config($cachedXml);
         } else {
             $config = new Varien_Simplexml_Config();
             $config->loadString('<?xml version="1.0"?><config></config>');
             Mage::getConfig()->loadModulesConfiguration('m_db.xml', $config);
             $this->_xml = $config;
             $this->_prepareXml();
             if (Mage::app()->useCache('config')) {
                 Mage::app()->saveCache($config->getXmlString(), 'm_db_config', array(Mage_Core_Model_Config::CACHE_TAG));
             }
         }
     }
     return $this->_xml;
 }
예제 #12
0
 public function getXmlConfig()
 {
     $cachedXml = Mage::app()->loadCache('easytemplate_config');
     if ($cachedXml) {
         $xmlConfig = new Varien_Simplexml_Config($cachedXml);
     } else {
         $config = new Varien_Simplexml_Config();
         $config->loadString('<?xml version="1.0"?><config><easytemplate></easytemplate></config>');
         Mage::getConfig()->loadModulesConfiguration('easytemplate.xml', $config);
         $xmlConfig = $config;
         if (Mage::app()->useCache('config')) {
             Mage::app()->saveCache($config->getXmlString(), 'easytemplate_config', array(Mage_Core_Model_Config::CACHE_TAG));
             if (Mage::getStoreConfig('easytemplate/configuration/automatically_clean_database', Mage::app()->getStore()->getId())) {
                 // Clean the database just if caching is active to avoid performance issues
                 $this->cleanDatabase();
             }
         }
     }
     return $xmlConfig;
 }
예제 #13
0
파일: Config.php 프로젝트: buttasg/cowgirlk
 /**
  * Load whole customgrid configuration, retrieve a sub part
  * 
  * @param string $type Configuration part type
  * @return Varien_Simplexml_Config
  */
 public function getXmlConfig($type)
 {
     if (is_null($this->_xmlConfigs)) {
         $cachedXml = Mage::app()->loadCache(self::CACHE_KEY);
         if ($cachedXml) {
             $xmlConfig = new Varien_Simplexml_Config($cachedXml);
         } else {
             $config = new Varien_Simplexml_Config();
             $config->loadString('<?xml version="1.0"?><customgrid></customgrid>');
             Mage::getConfig()->loadModulesConfiguration('customgrid.xml', $config);
             $xmlConfig = $config;
             if (Mage::app()->useCache('config')) {
                 Mage::app()->saveCache($config->getXmlString(), self::CACHE_KEY, array(Mage_Core_Model_Config::CACHE_TAG));
             }
         }
         // Split config in main parts
         $this->_xmlConfigs = array(self::TYPE_GRID_TYPES => new Varien_Simplexml_Config($xmlConfig->getNode('grid_types')), self::TYPE_COLUMN_RENDERERS_COLLECTION => new Varien_Simplexml_Config($xmlConfig->getNode('column_renderers/collection')), self::TYPE_COLUMN_RENDERERS_ATTRIBUTE => new Varien_Simplexml_Config($xmlConfig->getNode('column_renderers/attribute')));
     }
     return isset($this->_xmlConfigs[$type]) ? $this->_xmlConfigs[$type] : null;
 }
예제 #14
0
파일: Config.php 프로젝트: nemphys/magento2
 /**
  * Load config from merged adminhtml.xml files
  * @param array $arguments
  */
 public function __construct(array $arguments = array())
 {
     $this->_app = isset($arguments['app']) ? $arguments['app'] : Mage::app();
     $this->_appConfig = isset($arguments['appConfig']) ? $arguments['appConfig'] : Mage::getConfig();
     if (isset($arguments['helpers'])) {
         $this->_helpers = $arguments['helpers'];
     }
     parent::__construct();
     $this->setCacheId('adminhtml_acl_menu_config');
     /* @var $adminhtmlConfig Varien_Simplexml_Config */
     $adminhtmlConfig = $this->_app->loadCache($this->getCacheId());
     if ($adminhtmlConfig) {
         $this->_adminhtmlConfig = new Varien_Simplexml_Config($adminhtmlConfig);
     } else {
         $adminhtmlConfig = new Varien_Simplexml_Config();
         $adminhtmlConfig->loadString('<?xml version="1.0"?><config></config>');
         $this->_appConfig->loadModulesConfiguration('adminhtml.xml', $adminhtmlConfig);
         $this->_adminhtmlConfig = $adminhtmlConfig;
         if ($this->_app->useCache('config')) {
             $this->_app->saveCache($adminhtmlConfig->getXmlString(), $this->getCacheId(), array(Mage_Core_Model_Config::CACHE_TAG));
         }
     }
 }
예제 #15
0
 private function __construct()
 {
     $moduleFiles = glob(BP . '/app/etc/modules/*.xml');
     $unsortedConfig = new Varien_Simplexml_Config();
     $unsortedConfig->loadString('<config/>');
     $fileConfig = new Varien_Simplexml_Config();
     foreach ($moduleFiles as $filePath) {
         $fileConfig->loadFile($filePath);
         $unsortedConfig->extend($fileConfig);
     }
     // create sorted config [only active modules]
     #$sortedConfig = new Varien_Simplexml_Config();
     #$sortedConfig->loadString('<config><modules/></config>');
     $fileConfig = new Varien_Simplexml_Config();
     foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         if ('true' === (string) $moduleNode->active) {
             $codePool = (string) $moduleNode->codePool;
             $configPath = BP . '/app/code/' . $codePool . '/' . uc_words($moduleName, '/') . '/etc/config.xml';
             $fileConfig->loadFile($configPath);
             $unsortedConfig->extend($fileConfig);
         }
     }
     $this->_config = $unsortedConfig;
 }
예제 #16
0
 /**
  * Initialise the configuration for the extension
  *
  * @param Varien_Event_Observer $observer
  * @return $this
  */
 public function initWordpressConfigObserver(Varien_Event_Observer $observer)
 {
     return;
     $config = Mage::app()->getConfig();
     print_r($config->getNode('sections/wordpress/groups'));
     exit;
     $config = Mage::getSingleton('adminhtml/config')->getSections('wordpress')->wordpress;
     $modules = array('wp_addon_multisite' => 'Multisite2');
     $template = trim("<%s><label>%s</label>\n\t<frontend_model>wordpress/adminhtml_system_config_backend_form_field_license</frontend_model>\n\t<sort_order>1</sort_order><show_in_default>1</show_in_default>\n</%s>");
     foreach ($modules as $helperClass => $name) {
         $xml[] = sprintf($template, $helperClass, $name, $helperClass);
     }
     $configNew = new Varien_Simplexml_Config();
     $configNew->loadString(sprintf('<config><wordpress><groups><license><fields>%s</fields></license></groups></wordpress></config>', implode("\n", $xml)));
     $config->extend($configNew);
     if (strpos($config->asXml(), 'Multisite2') !== false) {
         echo 'It appears';
         exit;
     }
     exit('no');
     echo '<pre>' . htmlentities($config->asXml());
     exit;
     echo '<pre>';
     print_r($config);
     exit;
 }
예제 #17
0
 /**
  * Retrive possible conflicts list
  *
  * @return array
  */
 public function getConflictList()
 {
     $moduleFiles = glob($this->_etcDir . 'modules' . DIRECTORY_SEPARATOR . '*.xml');
     if (!$moduleFiles) {
         return false;
     }
     // load file contents
     $unsortedConfig = new Varien_Simplexml_Config();
     $unsortedConfig->loadString('<config/>');
     $fileConfig = new Varien_Simplexml_Config();
     foreach ($moduleFiles as $filePath) {
         $fileConfig->loadFile($filePath);
         $unsortedConfig->extend($fileConfig);
     }
     // create sorted config [only active modules]
     $sortedConfig = new Varien_Simplexml_Config();
     $sortedConfig->loadString('<config><modules/></config>');
     foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         if ('true' === (string) $moduleNode->active) {
             $sortedConfig->getNode('modules')->appendChild($moduleNode);
         }
     }
     $fileConfig = new Varien_Simplexml_Config();
     $_finalResult = array();
     foreach ($sortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         $codePool = (string) $moduleNode->codePool;
         $configPath = $this->_codeDir . $codePool . DIRECTORY_SEPARATOR . uc_words($moduleName, DS) . DIRECTORY_SEPARATOR . 'etc' . DS . 'config.xml';
         $fileConfig->loadFile($configPath);
         $rewriteBlocks = array('blocks', 'models', 'helpers');
         foreach ($rewriteBlocks as $param) {
             if (!isset($_finalResult[$param])) {
                 $_finalResult[$param] = array();
             }
             if ($rewrites = $fileConfig->getXpath('global/' . $param . '/*/rewrite')) {
                 foreach ($rewrites as $rewrite) {
                     $parentElement = $rewrite->xpath('../..');
                     foreach ($parentElement[0] as $moduleKey => $moduleItems) {
                         $moduleItemsArray['rewrite'] = array();
                         foreach ($moduleItems->rewrite as $rewriteLine) {
                             foreach ($rewriteLine as $key => $value) {
                                 $moduleItemsArray['rewrite'][$key] = (string) $value;
                             }
                             #echo "<pre>".print_r($moduleItemsArray['rewrite'],1)."</pre>";
                         }
                         if ($moduleItems->rewrite) {
                             $_finalResult[$param] = array_merge_recursive($_finalResult[$param], array($moduleKey => $moduleItemsArray));
                         }
                     }
                 }
             }
         }
     }
     $_finalResult = $this->_fillAllClassesToRewrite($_finalResult);
     $_finalResult = $this->_clearEmptyRows($_finalResult);
     $_finalResult = $this->_recoverDeletedClassRewrites($_finalResult);
     // filter aitoc modules
     foreach ($_finalResult as $type => $data) {
         foreach ($data as $module => $data) {
             foreach ($data['rewrite'] as $model => $classes) {
                 $remove = true;
                 foreach ($classes as $class) {
                     if (strstr($class, 'Aitoc') || strstr($class, 'AdjustWare')) {
                         $remove = false;
                         break;
                     }
                 }
                 if ($remove) {
                     unset($_finalResult[$type][$module]['rewrite'][$model]);
                 }
             }
             if (!$_finalResult[$type][$module]['rewrite']) {
                 unset($_finalResult[$type][$module]);
             }
         }
     }
     return $_finalResult;
 }
예제 #18
0
 /**
  * Parse xml tracking response
  *
  * @param string $trackingvalue
  * @param string $response
  * @return null
  */
 protected function _parseXmlTrackingResponse($trackingvalue, $xmlResponse)
 {
     $errorTitle = 'Unable to retrieve tracking';
     $resultArr = array();
     $packageProgress = array();
     if ($xmlResponse) {
         $xml = new Varien_Simplexml_Config();
         $xml->loadString($xmlResponse);
         $arr = $xml->getXpath("//TrackResponse/Response/ResponseStatusCode/text()");
         $success = (int) $arr[0][0];
         if ($success === 1) {
             $arr = $xml->getXpath("//TrackResponse/Shipment/Service/Description/text()");
             $resultArr['service'] = (string) $arr[0];
             $arr = $xml->getXpath("//TrackResponse/Shipment/PickupDate/text()");
             $resultArr['shippeddate'] = (string) $arr[0];
             $arr = $xml->getXpath("//TrackResponse/Shipment/Package/PackageWeight/Weight/text()");
             $weight = (string) $arr[0];
             $arr = $xml->getXpath("//TrackResponse/Shipment/Package/PackageWeight/UnitOfMeasurement/Code/text()");
             $unit = (string) $arr[0];
             $resultArr['weight'] = "{$weight} {$unit}";
             $activityTags = $xml->getXpath("//TrackResponse/Shipment/Package/Activity");
             if ($activityTags) {
                 $i = 1;
                 foreach ($activityTags as $activityTag) {
                     $addArr = array();
                     if (isset($activityTag->ActivityLocation->Address->City)) {
                         $addArr[] = (string) $activityTag->ActivityLocation->Address->City;
                     }
                     if (isset($activityTag->ActivityLocation->Address->StateProvinceCode)) {
                         $addArr[] = (string) $activityTag->ActivityLocation->Address->StateProvinceCode;
                     }
                     if (isset($activityTag->ActivityLocation->Address->CountryCode)) {
                         $addArr[] = (string) $activityTag->ActivityLocation->Address->CountryCode;
                     }
                     $dateArr = array();
                     $date = (string) $activityTag->Date;
                     //YYYYMMDD
                     $dateArr[] = substr($date, 0, 4);
                     $dateArr[] = substr($date, 4, 2);
                     $dateArr[] = substr($date, -2, 2);
                     $timeArr = array();
                     $time = (string) $activityTag->Time;
                     //HHMMSS
                     $timeArr[] = substr($time, 0, 2);
                     $timeArr[] = substr($time, 2, 2);
                     $timeArr[] = substr($time, -2, 2);
                     if ($i == 1) {
                         $resultArr['status'] = (string) $activityTag->Status->StatusType->Description;
                         $resultArr['deliverydate'] = implode('-', $dateArr);
                         //YYYY-MM-DD
                         $resultArr['deliverytime'] = implode(':', $timeArr);
                         //HH:MM:SS
                         $resultArr['deliverylocation'] = (string) $activityTag->ActivityLocation->Description;
                         $resultArr['signedby'] = (string) $activityTag->ActivityLocation->SignedForByName;
                         if ($addArr) {
                             $resultArr['deliveryto'] = implode(', ', $addArr);
                         }
                     } else {
                         $tempArr = array();
                         $tempArr['activity'] = (string) $activityTag->Status->StatusType->Description;
                         $tempArr['deliverydate'] = implode('-', $dateArr);
                         //YYYY-MM-DD
                         $tempArr['deliverytime'] = implode(':', $timeArr);
                         //HH:MM:SS
                         if ($addArr) {
                             $tempArr['deliverylocation'] = implode(', ', $addArr);
                         }
                         $packageProgress[] = $tempArr;
                     }
                     $i++;
                 }
                 $resultArr['progressdetail'] = $packageProgress;
             }
         } else {
             $arr = $xml->getXpath("//TrackResponse/Response/Error/ErrorDescription/text()");
             $errorTitle = (string) $arr[0][0];
         }
     }
     if (!$this->_result) {
         $this->_result = Mage::getModel('shipping/tracking_result');
     }
     $defaults = $this->getDefaults();
     if ($resultArr) {
         $tracking = Mage::getModel('shipping/tracking_result_status');
         $tracking->setCarrier('ups');
         $tracking->setCarrierTitle($this->getConfigData('title'));
         $tracking->setTracking($trackingvalue);
         $tracking->addData($resultArr);
         $this->_result->append($tracking);
     } else {
         $error = Mage::getModel('shipping/tracking_result_error');
         $error->setCarrier('ups');
         $error->setCarrierTitle($this->getConfigData('title'));
         $error->setTracking($trackingvalue);
         $error->setErrorMessage($errorTitle);
         $this->_result->append($error);
     }
     return $this->_result;
 }
예제 #19
0
 protected function generatePriceArr($xmlResponse, &$costArr, &$priceArr)
 {
     if (strlen(trim($xmlResponse)) > 0) {
         $xml = new Varien_Simplexml_Config();
         $xml->loadString($xmlResponse);
         $arr = $xml->getXpath("//RatingServiceSelectionResponse/Response/ResponseStatusCode/text()");
         $success = (int) $arr[0];
         if ($success === 1) {
             $arr = $xml->getXpath("//RatingServiceSelectionResponse/RatedShipment");
             // WSA change for Dropship
             if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Dropcommon', 'carriers/dropship/active') || Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Dropship', 'carriers/dropship/active')) {
                 $allowedMethods = $this->_request->getUpsAllowedMethods();
                 if ($allowedMethods == null) {
                     $allowedMethods = explode(",", $this->getConfigData('allowed_methods'));
                 }
             } else {
                 $allowedMethods = explode(",", $this->getConfigData('allowed_methods'));
             }
             // Negotiated rates
             $negotiatedArr = $xml->getXpath("//RatingServiceSelectionResponse/RatedShipment/NegotiatedRates");
             $negotiatedActive = $this->getConfigFlag('negotiated_active') && $this->getConfigData('shipper_number') && !empty($negotiatedArr);
             foreach ($arr as $shipElement) {
                 $code = (string) $shipElement->Service->Code;
                 if (in_array($code, $allowedMethods)) {
                     if ($negotiatedActive) {
                         $cost = $shipElement->NegotiatedRates->NetSummaryCharges->GrandTotal->MonetaryValue;
                     } else {
                         $cost = $shipElement->TotalCharges->MonetaryValue;
                     }
                     //convert price with Origin country currency code to base currency code
                     $successConversion = true;
                     $responseCurrencyCode = (string) $shipElement->TotalCharges->CurrencyCode;
                     if ($responseCurrencyCode) {
                         $allowedCurrencies = Mage::getModel('directory/currency')->getConfigAllowCurrencies();
                         if (in_array($responseCurrencyCode, $allowedCurrencies) && $this->_getBaseCurrencyRate($responseCurrencyCode) > 0) {
                             $cost = (double) $cost * $this->_getBaseCurrencyRate($responseCurrencyCode);
                         } else {
                             $errorTitle = Mage::helper('directory')->__('Can\'t convert rate from "%s-%s".', $responseCurrencyCode, $this->_request->getPackageCurrency()->getCode());
                             $error = Mage::getModel('shipping/rate_result_error');
                             $error->setCarrier('ups');
                             $error->setCarrierTitle($this->getConfigData('title'));
                             $error->setErrorMessage($errorTitle);
                             $successConversion = false;
                         }
                     }
                     if ($successConversion) {
                         $costArr[$code] = $cost;
                         $priceArr[$code] = $this->getMethodPrice(floatval($cost), $code);
                     }
                 }
             }
         } else {
             $arr = $xml->getXpath("//RatingServiceSelectionResponse/Response/Error/ErrorDescription/text()");
             $errorTitle = (string) $arr[0][0];
             $error = Mage::getModel('shipping/rate_result_error');
             $error->setCarrier('ups');
             $error->setCarrierTitle($this->getConfigData('title'));
             //$error->setErrorMessage($errorTitle);
             $error->setErrorMessage($this->getConfigData('specificerrmsg'));
             if ($this->getDebugFlag()) {
                 Mage::helper('wsalogger/log')->postWarning('usashipping', 'UPS Error Raised', '');
             }
         }
     }
     return $priceArr;
 }
예제 #20
0
 /**
  * Retrive possible conflicts list
  *
  * @return array
  */
 public function getConflictList()
 {
     $moduleFiles = glob($this->_etcDir . 'modules' . DIRECTORY_SEPARATOR . '*.xml');
     if (!$moduleFiles) {
         return false;
     }
     // load file contents
     $unsortedConfig = new Varien_Simplexml_Config();
     $unsortedConfig->loadString('<config/>');
     $fileConfig = new Varien_Simplexml_Config();
     foreach ($moduleFiles as $filePath) {
         $fileConfig->loadFile($filePath);
         $unsortedConfig->extend($fileConfig);
     }
     // create sorted config [only active modules]
     $sortedConfig = new Varien_Simplexml_Config();
     $sortedConfig->loadString('<config><modules/></config>');
     foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         if ('true' === (string) $moduleNode->active) {
             $sortedConfig->getNode('modules')->appendChild($moduleNode);
         }
     }
     $fileConfig = new Varien_Simplexml_Config();
     $_finalResult = array();
     $_finalResultAbstract = array();
     foreach ($sortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         $codePool = (string) $moduleNode->codePool;
         $configPath = $this->_codeDir . $codePool . DIRECTORY_SEPARATOR . uc_words($moduleName, DS) . DIRECTORY_SEPARATOR . 'etc' . DS . 'config.xml';
         $fileConfig->loadFile($configPath);
         $rewriteBlocks = array('blocks', 'models', 'helpers');
         foreach ($rewriteBlocks as $param) {
             if (!isset($_finalResult[$param])) {
                 $_finalResult[$param] = array();
             }
             if ($rewrites = $fileConfig->getXpath('global/' . $param . '/*/rewrite')) {
                 foreach ($rewrites as $rewrite) {
                     $parentElement = $rewrite->xpath('../..');
                     foreach ($parentElement[0] as $moduleKey => $moduleItems) {
                         $moduleItemsArray['rewrite'] = array();
                         foreach ($moduleItems->rewrite as $rewriteLine) {
                             foreach ($rewriteLine as $key => $value) {
                                 $moduleItemsArray['rewrite'][$key] = (string) $value;
                             }
                             #$moduleItemsArray['rewrite'] += $rewriteLine->asArray();
                             #echo "<pre>".print_r($moduleItemsArray['rewrite'],1)."</pre>";
                         }
                         if ($moduleItems->rewrite) {
                             //                                $_finalResult[$param] = array_merge_recursive($_finalResult[$param], array($moduleKey => $moduleItems->asArray()));
                             $_finalResult[$param] = array_merge_recursive($_finalResult[$param], array($moduleKey => $moduleItemsArray));
                         }
                     }
                 }
             }
             #echo "<pre>".print_r($_finalResult,1)."</pre>";
             if ($rewrites = $fileConfig->getXpath('global/' . $param . '/*/rewriteabstract')) {
                 foreach ($rewrites as $rewrite) {
                     $parentElement = $rewrite->xpath('../..');
                     foreach ($parentElement[0] as $moduleKey => $moduleItems) {
                         if ($moduleItems->rewriteabstract) {
                             //                                $_finalResultAbstract[$param] = array_merge_recursive($_finalResultAbstract[$param], array($moduleKey => $moduleItems->asArray()));
                             $list = array();
                             foreach ($moduleItems->rewriteabstract->children() as $key => $value) {
                                 $list[$key] = (string) $value;
                             }
                             #echo "<pre>--".print_r($list,1)."</pre>";
                             #echo "<pre>++".print_r($moduleItems->asArray(),1)."</pre>";
                             $_finalResultAbstract[$param] = array($moduleKey => array('rewriteabstract' => $list));
                         }
                     }
                 }
             }
         }
     }
     foreach (array_keys($_finalResult) as $groupType) {
         foreach (array_keys($_finalResult[$groupType]) as $key) {
             // remove some repeating elements after merging all parents
             foreach ($_finalResult[$groupType][$key]['rewrite'] as $key1 => $value) {
                 if (is_array($value)) {
                     $_finalResult[$groupType][$key]['rewrite'][$key1] = array_unique($value);
                 }
                 // if rewrites count < 2 - no conflicts - remove
                 if (gettype($_finalResult[$groupType][$key]['rewrite'][$key1]) == 'array' && count($_finalResult[$groupType][$key]['rewrite'][$key1]) < 2 || gettype($_finalResult[$groupType][$key]['rewrite'][$key1]) == 'string') {
                     unset($_finalResult[$groupType][$key]['rewrite'][$key1]);
                 }
             }
             // clear empty elements
             if (count($_finalResult[$groupType][$key]['rewrite']) < 1) {
                 unset($_finalResult[$groupType][$key]);
             }
         }
         // clear empty elements
         if (count($_finalResult[$groupType]) < 1) {
             unset($_finalResult[$groupType]);
         }
     }
     foreach (array_keys($_finalResultAbstract) as $groupType) {
         foreach (array_keys($_finalResultAbstract[$groupType]) as $key) {
             // remove some repeating elements after merging all parents
             foreach ($_finalResultAbstract[$groupType][$key]['rewriteabstract'] as $key1 => $value) {
                 if (is_array($value)) {
                     $_finalResultAbstract[$groupType][$key]['rewriteabstract'][$key1] = array_unique($value);
                 }
             }
             // clear empty elements
             if (count($_finalResultAbstract[$groupType][$key]['rewriteabstract']) < 1) {
                 unset($_finalResultAbstract[$groupType][$key]);
             }
         }
         // clear empty elements
         if (count($_finalResultAbstract[$groupType]) < 1) {
             unset($_finalResultAbstract[$groupType]);
         }
     }
     // filter aitoc modules
     foreach ($_finalResult as $type => $data) {
         foreach ($data as $module => $data) {
             foreach ($data['rewrite'] as $model => $classes) {
                 $remove = true;
                 foreach ($classes as $class) {
                     if (strstr($class, 'Aitoc') || strstr($class, 'AdjustWare')) {
                         $remove = false;
                         break;
                     }
                 }
                 if ($remove) {
                     unset($_finalResult[$type][$module]['rewrite'][$model]);
                 }
             }
             if (!$_finalResult[$type][$module]['rewrite']) {
                 unset($_finalResult[$type][$module]);
             }
         }
     }
     return array($_finalResult, $_finalResultAbstract);
 }
예제 #21
0
 /**
  * Load config from files and try to cache it
  *
  * @return Varien_Simplexml_Config
  */
 protected function _getXmlConfig()
 {
     if (is_null($this->_config)) {
         $canUsaCache = Mage::app()->useCache('config');
         $cachedXml = Mage::app()->loadCache(self::JAVASCRIPT_TRANSLATE_CONFIG_KEY);
         if ($canUsaCache && $cachedXml) {
             $xmlConfig = new Varien_Simplexml_Config($cachedXml);
         } else {
             $xmlConfig = new Varien_Simplexml_Config();
             $xmlConfig->loadString('<?xml version="1.0"?><jstranslator></jstranslator>');
             Mage::getConfig()->loadModulesConfiguration(self::JAVASCRIPT_TRANSLATE_CONFIG_FILENAME, $xmlConfig);
             if ($canUsaCache) {
                 Mage::app()->saveCache($xmlConfig->getXmlString(), self::JAVASCRIPT_TRANSLATE_CONFIG_KEY, array(Mage_Core_Model_Config::CACHE_TAG));
             }
         }
         $this->_config = $xmlConfig;
     }
     return $this->_config;
 }
 /**
  * Rewrite a grid block, to add it some useful/needed methods
  * 
  * @param BL_CustomGrid_Model_Grid $grid
  * @return bool
  */
 protected function _rewriteGridBlock($grid)
 {
     // Get block infos
     list($group, $class, $rewritingClassName) = $this->_getBlockTypeInfos($grid->getBlockType());
     if (!$rewritingClassName && $grid->getRewritingClassName() == '' || $rewritingClassName == $grid->getRewritingClassName()) {
         // Grid model corresponds to current configuration
         if (Mage::helper('customgrid/config')->isExcludedGrid($grid->getBlockType(), $rewritingClassName)) {
             // Do not rewrite if now excluded
             $this->_excludedModels[] = $grid->getId();
         } elseif (!isset($this->_rewritedTypes[$grid->getBlockType()])) {
             // Register our rewriting class (extending previous rewrite if existing)
             $className = 'BL_CustomGrid_Block_Rewrite_' . uc_words($class);
             $extends = $rewritingClassName ? $rewritingClassName : $this->_getBlockClassName($group, $class);
             $this->_registerGridClass($className, $extends);
             if ($rewritingClassName) {
                 $this->_originalRewrites[$grid->getBlockType()] = $rewritingClassName;
             }
             // Register rewrite in config (this will also replace previous rewrite if existing)
             // This doesnt seem to affect Magento config cache in any way
             $rewriteXml = new Varien_Simplexml_Config();
             $rewriteXml->loadString('
             <config>
                 <global>
                     <blocks>
                         <' . $group . '>
                             <rewrite>
                                 <' . $class . '>' . $className . '</' . $class . '>
                             </rewrite>
                         </' . $group . '>
                     </blocks>
                 </global>
             </config>
             ');
             $this->_getConfig()->extend($rewriteXml, true);
             // Remember current type is now rewrited
             $this->_rewritedTypes[$grid->getBlockType()] = true;
         }
         return true;
     } else {
         return false;
     }
 }
예제 #23
0
 /**
  * Retrive possible conflicts list
  *
  * @return array
  */
 protected function _getPossibleConflictsList()
 {
     $moduleFiles = glob($this->_etcDir . DS . 'modules' . DS . '*.xml');
     if (!$moduleFiles) {
         return false;
     }
     // load file contents
     $unsortedConfig = new Varien_Simplexml_Config();
     $unsortedConfig->loadString('<config/>');
     $fileConfig = new Varien_Simplexml_Config();
     foreach ($moduleFiles as $filePath) {
         $fileConfig->loadFile($filePath);
         $unsortedConfig->extend($fileConfig);
     }
     // create sorted config [only active modules]
     $sortedConfig = new Varien_Simplexml_Config();
     $sortedConfig->loadString('<config><modules/></config>');
     foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         if ('true' === (string) $moduleNode->active) {
             $sortedConfig->getNode('modules')->appendChild($moduleNode);
         }
     }
     $fileConfig = new Varien_Simplexml_Config();
     $_finalResult = array();
     foreach ($sortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
         $codePool = (string) $moduleNode->codePool;
         $configPath = $this->_codeDir . DS . $codePool . DS . uc_words($moduleName, DS) . DS . 'etc' . DS . 'config.xml';
         $fileConfig->loadFile($configPath);
         $rewriteBlocks = array('blocks', 'models', 'helpers');
         foreach ($rewriteBlocks as $param) {
             if (!isset($_finalResult[$param])) {
                 $_finalResult[$param] = array();
             }
             if ($rewrites = $fileConfig->getXpath('global/' . $param . '/*/rewrite')) {
                 foreach ($rewrites as $rewrite) {
                     $parentElement = $rewrite->xpath('../..');
                     foreach ($parentElement[0] as $moduleKey => $moduleItems) {
                         if ($moduleItems->rewrite) {
                             $_finalResult[$param] = array_merge_recursive($_finalResult[$param], array($moduleKey => $moduleItems->asArray()));
                         }
                     }
                 }
             }
         }
     }
     foreach (array_keys($_finalResult) as $groupType) {
         foreach (array_keys($_finalResult[$groupType]) as $key) {
             // remove some repeating elements after merging all parents
             foreach ($_finalResult[$groupType][$key]['rewrite'] as $key1 => $value) {
                 if (is_array($value)) {
                     $_finalResult[$groupType][$key]['rewrite'][$key1] = array_unique($value);
                 }
                 // if rewrites count < 2 - no conflicts - remove
                 if (gettype($_finalResult[$groupType][$key]['rewrite'][$key1]) == 'array' && count($_finalResult[$groupType][$key]['rewrite'][$key1]) < 2 || gettype($_finalResult[$groupType][$key]['rewrite'][$key1]) == 'string') {
                     unset($_finalResult[$groupType][$key]['rewrite'][$key1]);
                 }
             }
             // clear empty elements
             if (count($_finalResult[$groupType][$key]['rewrite']) < 1) {
                 unset($_finalResult[$groupType][$key]);
             }
         }
         // clear empty elements
         if (count($_finalResult[$groupType]) < 1) {
             unset($_finalResult[$groupType]);
         }
     }
     return $_finalResult;
 }
예제 #24
0
 public function getExtensionConflict($all_conflicts = false)
 {
     $all_rewrite_classes = array();
     $node_type_list = array('model', 'helper', 'block');
     foreach ($node_type_list as $node_type) {
         foreach (Mage::getConfig()->getNode('modules')->children() as $name => $module) {
             if ($module->codePool == 'core' || $module->active != 'true') {
                 continue;
             }
             $config_file_path = Mage::getConfig()->getModuleDir('etc', $name) . DS . 'config.xml';
             $config = new Varien_Simplexml_Config();
             $config->loadString('<config/>');
             $config->loadFile($config_file_path);
             $config->extend($config, true);
             $nodes = $config->getNode()->global->{$node_type . 's'};
             if (!$nodes) {
                 continue;
             }
             foreach ($nodes->children() as $node_name => $config) {
                 if ($config->rewrite) {
                     // there is rewrite for current config
                     foreach ($config->rewrite->children() as $class_tag => $derived_class) {
                         $base_class_name = $this->_getMageBaseClass($node_type, $node_name, $class_tag);
                         $lead_derived_class = '';
                         $conf = Mage::getConfig()->getNode()->global->{$node_type . 's'}->{$node_name};
                         if (isset($conf->rewrite->{$class_tag})) {
                             $lead_derived_class = (string) $conf->rewrite->{$class_tag};
                         }
                         if ($derived_class == '') {
                             $derived_class = $lead_derived_class;
                         }
                         if (empty($all_rewrite_classes[$base_class_name])) {
                             $all_rewrite_classes[$base_class_name] = array('derived' => array((string) $derived_class), 'lead' => (string) $lead_derived_class, 'tag' => $class_tag, 'name' => array((string) $name));
                         } else {
                             array_push($all_rewrite_classes[$base_class_name]['derived'], (string) $derived_class);
                             array_push($all_rewrite_classes[$base_class_name]['name'], (string) $name);
                         }
                     }
                 }
             }
         }
     }
     if ($all_conflicts) {
         return $all_rewrite_classes;
     }
     $isp_rewrite_classes = array();
     $isp_module_name = 'Autocompleteplus_Autosuggest';
     foreach ($all_rewrite_classes as $base => $conflict_info) {
         if (in_array($isp_module_name, $conflict_info['name'])) {
             // if isp extension rewrite this base class
             if (count($conflict_info['derived']) > 1) {
                 // more then 1 class rewrite this base class => there is a conflict
                 $isp_rewrite_classes[$base] = $conflict_info;
             }
         }
     }
     return $isp_rewrite_classes;
 }
예제 #25
0
 /**
  * Rewrite a grid block, to add it some useful/needed methods
  *
  * @param BL_CustomGrid_Model_Grid $grid
  * @return bool
  */
 protected function _rewriteGridBlock($grid)
 {
     // Get block infos
     list($group, $class, $rewritingClassName) = $this->_getBlockTypeInfos($grid->getBlockType());
     if (!$rewritingClassName && $grid->getRewritingClassName() == '' || $rewritingClassName == $grid->getRewritingClassName()) {
         // Grid model corresponds to current configuration
         if ($this->_getConfigHelper()->isExcludedGrid($grid->getBlockType(), $rewritingClassName)) {
             // Do not rewrite if now excluded
             $this->_excludedModels[] = $grid->getId();
         } elseif (!isset($this->_rewritedTypes[$grid->getBlockType()])) {
             // Generate and register our rewriting class (extending previous rewrite if existing)
             $rewriters = Mage::getSingleton('customgrid/grid_rewriter')->getEnabledRewriters(true);
             $blcgClass = false;
             $originalClass = $rewritingClassName ? $rewritingClassName : $this->_getBlockClassName($group, $class);
             $rewriteErrors = array();
             foreach ($rewriters as $rewriter) {
                 try {
                     $blcgClass = $rewriter->rewriteGrid($originalClass, $grid->getBlockType());
                 } catch (Exception $e) {
                     $blcgClass = false;
                     $rewriteErrors[] = array('exception' => $e, 'rewriter' => $rewriter);
                 }
                 if ($blcgClass) {
                     break;
                 }
             }
             if ($blcgClass) {
                 foreach ($rewriteErrors as $error) {
                     if ($error['rewriter']->getDisplayErrorsIfSuccess()) {
                         $this->_getSession()->addError($error['exception']->getMessage());
                     }
                     if ($error['rewriter']->getLogErrorsIfSuccess()) {
                         Mage::logException($error['exception']);
                     }
                 }
                 if ($rewritingClassName) {
                     $this->_originalRewrites[$grid->getBlockType()] = $rewritingClassName;
                 }
                 // Register rewrite in config (this will also replace previous rewrite if existing)
                 // This doesnt seem to affect Magento config cache in any way
                 $rewriteXml = new Varien_Simplexml_Config();
                 $rewriteXml->loadString('
                 <config>
                     <global>
                         <blocks>
                             <' . $group . '>
                                 <rewrite>
                                     <' . $class . '>' . $blcgClass . '</' . $class . '>
                                 </rewrite>
                             </' . $group . '>
                         </blocks>
                     </global>
                 </config>
                 ');
                 $this->_getConfig()->extend($rewriteXml, true);
                 if ($this->_getConfigHelper()->getForceGridRewrites()) {
                     // Put the rewriting class name in the config cache (should prevent some problems when the config gets overriden afterwards)
                     $this->_getConfig()->getBlockClassName($grid->getBlockType());
                 }
                 // Remember current type is now rewrited
                 $this->_rewritedTypes[$grid->getBlockType()] = true;
             } else {
                 foreach ($rewriteErrors as $error) {
                     if ($error['rewriter']->getDisplayErrors()) {
                         $this->_getSession()->addError($error['exception']->getMessage());
                     }
                     if ($error['rewriter']->getLogErrors()) {
                         Mage::logException($error['exception']);
                     }
                 }
                 // Exclude failed rewrites
                 $this->_excludedModels[] = $grid->getId();
             }
         }
         return true;
     } else {
         return false;
     }
 }
예제 #26
0
 protected function getModulesList()
 {
     $ret = array();
     $moduleFiles = glob($this->_etcDir . DS . 'modules' . DS . '*.xml');
     if ($moduleFiles) {
         // load file contents
         $unsortedConfig = new Varien_Simplexml_Config();
         $unsortedConfig->loadString('<config/>');
         $fileConfig = new Varien_Simplexml_Config();
         foreach ($moduleFiles as $filePath) {
             $fileConfig->loadFile($filePath);
             $unsortedConfig->extend($fileConfig);
         }
         // create sorted config [only active modules]
         $sortedConfig = new Varien_Simplexml_Config();
         $sortedConfig->loadString('<config><modules/></config>');
         foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
             if ('true' === (string) $moduleNode->active) {
                 $sortedConfig->getNode('modules')->appendChild($moduleNode);
             }
         }
         $fileConfig = new Varien_Simplexml_Config();
         foreach ($sortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) {
             if (strpos($moduleName, "Mage_") === FALSE) {
                 $codePool = (string) $moduleNode->codePool;
                 $configPath = $this->_codeDir . DS . $codePool . DS . uc_words($moduleName, DS) . DS . 'etc' . DS . 'config.xml';
                 $fileConfig->loadFile($configPath);
                 $version = $fileConfig->getXpath('modules/' . $moduleName . '/version');
                 $ret[] = array('version' => $version && $version[0] ? (string) $version[0] : NULL, 'key' => $moduleName);
             }
         }
     }
     return $ret;
 }