本文整理汇总了PHP中Mage_Core_Model_Config::extendNode方法的典型用法代码示例。如果您正苦于以下问题:PHP Mage_Core_Model_Config::extendNode方法的具体用法?PHP Mage_Core_Model_Config::extendNode怎么用?PHP Mage_Core_Model_Config::extendNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mage_Core_Model_Config
的用法示例。
在下文中一共展示了Mage_Core_Model_Config::extendNode方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: loadToXml
/**
* 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) {
$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']);
$xmlConfig->extendNode($websiteNode, $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
*/
$xmlConfig->extendNode($storeNode, $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;
}