Ejemplo n.º 1
0
 /**
  * Load configuration values into xml config object
  *
  * @param Mage_Core_Model_Config $xmlConfig
  * @param string $condition
  * @return Mage_Core_Model_Resource_Config
  */
 public function loadToXml(Mage_Core_Model_Config $xmlConfig, $condition = null)
 {
     $read = $this->_getReadAdapter();
     if (!$read) {
         return $this;
     }
     $websites = array();
     $select = $read->select()->from($this->getTable('core_website'), array('website_id', 'code', 'name'));
     $rowset = $read->fetchAssoc($select);
     foreach ($rowset as $w) {
         $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/id', $w['website_id']);
         $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/name', $w['name']);
         $websites[$w['website_id']] = array('code' => $w['code']);
     }
     $stores = array();
     $select = $read->select()->from($this->getTable('core_store'), array('store_id', 'code', 'name', 'website_id'))->order('sort_order ' . Varien_Db_Select::SQL_ASC);
     $rowset = $read->fetchAssoc($select);
     foreach ($rowset as $s) {
         if (!isset($websites[$s['website_id']])) {
             continue;
         }
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/id', $s['store_id']);
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/name', $s['name']);
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/website/id', $s['website_id']);
         $xmlConfig->setNode('websites/' . $websites[$s['website_id']]['code'] . '/system/stores/' . $s['code'], $s['store_id']);
         $stores[$s['store_id']] = array('code' => $s['code']);
         $websites[$s['website_id']]['stores'][$s['store_id']] = $s['code'];
     }
     $substFrom = array();
     $substTo = array();
     // load all configuration records from database, which are not inherited
     $select = $read->select()->from($this->getMainTable(), array('scope', 'scope_id', 'path', 'value'));
     if (!is_null($condition)) {
         $select->where($condition);
     }
     $rowset = $read->fetchAll($select);
     // set default config values from database
     foreach ($rowset as $r) {
         if ($r['scope'] !== 'default') {
             continue;
         }
         $value = str_replace($substFrom, $substTo, $r['value']);
         $xmlConfig->setNode('default/' . $r['path'], $value);
     }
     // inherit default config values to all websites
     $extendSource = $xmlConfig->getNode('default');
     foreach ($websites as $id => $w) {
         $websiteNode = $xmlConfig->getNode('websites/' . $w['code']);
         $websiteNode->extend($extendSource);
     }
     $deleteWebsites = array();
     // set websites config values from database
     foreach ($rowset as $r) {
         if ($r['scope'] !== 'websites') {
             continue;
         }
         $value = str_replace($substFrom, $substTo, $r['value']);
         if (isset($websites[$r['scope_id']])) {
             $nodePath = sprintf('websites/%s/%s', $websites[$r['scope_id']]['code'], $r['path']);
             $xmlConfig->setNode($nodePath, $value);
         } else {
             $deleteWebsites[$r['scope_id']] = $r['scope_id'];
         }
     }
     // extend website config values to all associated stores
     foreach ($websites as $website) {
         $extendSource = $xmlConfig->getNode('websites/' . $website['code']);
         if (isset($website['stores'])) {
             foreach ($website['stores'] as $sCode) {
                 $storeNode = $xmlConfig->getNode('stores/' . $sCode);
                 /**
                  * $extendSource DO NOT need overwrite source
                  */
                 $storeNode->extend($extendSource, false);
             }
         }
     }
     $deleteStores = array();
     // set stores config values from database
     foreach ($rowset as $r) {
         if ($r['scope'] !== 'stores') {
             continue;
         }
         $value = str_replace($substFrom, $substTo, $r['value']);
         if (isset($stores[$r['scope_id']])) {
             $nodePath = sprintf('stores/%s/%s', $stores[$r['scope_id']]['code'], $r['path']);
             $xmlConfig->setNode($nodePath, $value);
         } else {
             $deleteStores[$r['scope_id']] = $r['scope_id'];
         }
     }
     if ($deleteWebsites) {
         $this->_getWriteAdapter()->delete($this->getMainTable(), array('scope = ?' => 'websites', 'scope_id IN(?)' => $deleteWebsites));
     }
     if ($deleteStores) {
         $this->_getWriteAdapter()->delete($this->getMainTable(), array('scope=?' => 'stores', 'scope_id IN(?)' => $deleteStores));
     }
     return $this;
 }
Ejemplo n.º 2
0
 /**
  * Load configuration values into xml config object
  *
  * @param Mage_Core_Model_Config $xmlConfig
  * @param string $cond
  * @return Mage_Core_Model_Mysql4_Config_Collection
  */
 public function loadToXml(Mage_Core_Model_Config $xmlConfig, $cond = null)
 {
     $read = $this->_getReadAdapter();
     if (!$read) {
         return $this;
     }
     $websites = array();
     $rows = $read->fetchAssoc("select website_id, code, name from " . $this->getTable('website'));
     foreach ($rows as $w) {
         $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/id', $w['website_id']);
         $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/name', $w['name']);
         $websites[$w['website_id']] = array('code' => $w['code']);
     }
     $stores = array();
     $rows = $read->fetchAssoc("select store_id, code, name, website_id from " . $this->getTable('store') . " order by sort_order asc");
     foreach ($rows as $s) {
         if (!isset($websites[$s['website_id']])) {
             continue;
         }
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/id', $s['store_id']);
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/name', $s['name']);
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/website/id', $s['website_id']);
         $xmlConfig->setNode('websites/' . $websites[$s['website_id']]['code'] . '/system/stores/' . $s['code'], $s['store_id']);
         $stores[$s['store_id']] = array('code' => $s['code']);
         $websites[$s['website_id']]['stores'][$s['store_id']] = $s['code'];
     }
     $subst_from = array();
     $subst_to = array();
     // load all configuration records from database, which are not inherited
     $rows = $read->fetchAll("select scope, scope_id, path, value from " . $this->getMainTable() . ($cond ? ' where ' . $cond : ''));
     // set default config values from database
     foreach ($rows as $r) {
         if ($r['scope'] !== 'default') {
             continue;
         }
         $value = str_replace($subst_from, $subst_to, $r['value']);
         $xmlConfig->setNode('default/' . $r['path'], $value);
     }
     // inherit default config values to all websites
     $extendSource = $xmlConfig->getNode('default');
     foreach ($websites as $id => $w) {
         $websiteNode = $xmlConfig->getNode('websites/' . $w['code']);
         $websiteNode->extend($extendSource);
     }
     $deleteWebsites = array();
     // set websites config values from database
     foreach ($rows as $r) {
         if ($r['scope'] !== 'websites') {
             continue;
         }
         $value = str_replace($subst_from, $subst_to, $r['value']);
         if (isset($websites[$r['scope_id']])) {
             $xmlConfig->setNode('websites/' . $websites[$r['scope_id']]['code'] . '/' . $r['path'], $value);
         } else {
             $deleteWebsites[$r['scope_id']] = $r['scope_id'];
         }
     }
     // extend website config values to all associated stores
     foreach ($websites as $website) {
         $extendSource = $xmlConfig->getNode('websites/' . $website['code']);
         if (isset($website['stores'])) {
             foreach ($website['stores'] as $sCode) {
                 $storeNode = $xmlConfig->getNode('stores/' . $sCode);
                 /**
                  * $extendSource DO NOT need overwrite source
                  */
                 $storeNode->extend($extendSource, false);
             }
         }
     }
     $deleteStores = array();
     // set stores config values from database
     foreach ($rows as $r) {
         if ($r['scope'] !== 'stores') {
             continue;
         }
         $value = str_replace($subst_from, $subst_to, $r['value']);
         if (isset($stores[$r['scope_id']])) {
             $xmlConfig->setNode('stores/' . $stores[$r['scope_id']]['code'] . '/' . $r['path'], $value);
         } else {
             $deleteStores[$r['scope_id']] = $r['scope_id'];
         }
     }
     if ($deleteWebsites) {
         $this->_getWriteAdapter()->delete($this->getMainTable(), array($this->_getWriteAdapter()->quoteInto('scope=?', 'websites'), $this->_getWriteAdapter()->quoteInto('scope_id IN(?)', $deleteWebsites)));
     }
     if ($deleteStores) {
         $this->_getWriteAdapter()->delete($this->getMainTable(), array($this->_getWriteAdapter()->quoteInto('scope=?', 'stores'), $this->_getWriteAdapter()->quoteInto('scope_id IN(?)', $deleteStores)));
     }
     return $this;
 }
Ejemplo n.º 3
0
 /**
  * @dataProvider classNameRewriteDataProvider
  */
 public function testClassNameRewrite($originalClass, $expectedClass, $classNameGetter)
 {
     $this->_model->setNode("global/rewrites/{$originalClass}", $expectedClass);
     $this->assertEquals($expectedClass, $this->_model->{$classNameGetter}($originalClass));
 }
Ejemplo n.º 4
0
 /**
  * Load configuration values into xml config object
  *
  * @param Mage_Core_Model_Config $xmlConfig
  * @param string $cond
  * @return Mage_Core_Model_Mysql4_Config_Collection
  */
 public function loadToXml(Mage_Core_Model_Config $xmlConfig, $cond = null)
 {
     $read = $this->_getReadAdapter();
     if (!$read) {
         return $this;
     }
     #$tables = $read->fetchAll("show tables like 'core_%'");
     #print_r($tables);
     // initialize websites config
     $websites = array();
     $rows = $read->fetchAssoc("select website_id, code, name from " . $this->getTable('website'));
     foreach ($rows as $w) {
         $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/id', $w['website_id']);
         $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/name', $w['name']);
         $websites[$w['website_id']] = array('code' => $w['code']);
     }
     // initialize stores config
     $stores = array();
     $rows = $read->fetchAssoc("select store_id, code, name, website_id from " . $this->getTable('store') . " order by sort_order asc");
     foreach ($rows as $s) {
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/id', $s['store_id']);
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/name', $s['name']);
         $xmlConfig->setNode('stores/' . $s['code'] . '/system/website/id', $s['website_id']);
         $xmlConfig->setNode('websites/' . $websites[$s['website_id']]['code'] . '/system/stores/' . $s['code'], $s['store_id']);
         $stores[$s['store_id']] = array('code' => $s['code']);
         $websites[$s['website_id']]['stores'][$s['store_id']] = $s['code'];
     }
     $subst_from = array();
     $subst_to = array();
     // get default distribution config vars
     /*
     $vars = Mage::getConfig()->getDistroServerVars();
     foreach ($vars as $k=>$v) {
         $subst_from[] = '{{'.$k.'}}';
         $subst_to[] = $v;
     }
     */
     // load all configuration records from database, which are not inherited
     $rows = $read->fetchAll("select scope, scope_id, path, value from " . $this->getMainTable() . ($cond ? ' where ' . $cond : ''));
     // set default config values from database
     foreach ($rows as $r) {
         if ($r['scope'] !== 'default') {
             continue;
         }
         $value = str_replace($subst_from, $subst_to, $r['value']);
         $xmlConfig->setNode('default/' . $r['path'], $value);
     }
     // inherit default config values to all websites
     $extendSource = $xmlConfig->getNode('default');
     foreach ($websites as $id => $w) {
         $websiteNode = $xmlConfig->getNode('websites/' . $w['code']);
         $websiteNode->extend($extendSource);
     }
     // set websites config values from database
     foreach ($rows as $r) {
         if ($r['scope'] !== 'websites') {
             continue;
         }
         $value = str_replace($subst_from, $subst_to, $r['value']);
         $xmlConfig->setNode('websites/' . $websites[$r['scope_id']]['code'] . '/' . $r['path'], $value);
     }
     // extend website config values to all associated stores
     foreach ($websites as $wId => $website) {
         $extendSource = $xmlConfig->getNode('websites/' . $website['code']);
         if (isset($website['stores'])) {
             foreach ($website['stores'] as $sId => $sCode) {
                 $storeNode = $xmlConfig->getNode('stores/' . $sCode);
                 $storeNode->extend($extendSource);
             }
         }
     }
     // set stores config values from database
     foreach ($rows as $r) {
         if ($r['scope'] !== 'stores') {
             continue;
         }
         $value = str_replace($subst_from, $subst_to, $r['value']);
         $xmlConfig->setNode('stores/' . $stores[$r['scope_id']]['code'] . '/' . $r['path'], $value);
     }
     #echo "<xmp>".$xmlConfig->getNode()->asNiceXml()."</xmp>"; exit;
     return $this;
 }