/** * Load scripts by entity and store * * @param Mage_GoogleOptimizer_Model_Code $object * @param integer $storeId * @return Mage_GoogleOptimizer_Model_Resource_Code */ public function loadbyEntityType($object, $storeId) { $adapter = $this->_getReadAdapter(); $codeIdExpr = $adapter->getCheckSql('t_store.code_id IS NOT NULL', 't_store.code_id', 't_def.code_id'); $storeIdExpr = $adapter->getCheckSql('t_store.store_id IS NOT NULL', 't_store.store_id', 't_def.store_id'); $controlScriptExpr = $adapter->getCheckSql('t_store.control_script IS NOT NULL', 't_store.control_script', 't_def.control_script'); $trackingScriptExpr = $adapter->getCheckSql('t_store.tracking_script IS NOT NULL', 't_store.tracking_script', 't_def.tracking_script'); $conversionScriptExpr = $adapter->getCheckSql('t_store.conversion_script IS NOT NULL', 't_store.conversion_script', 't_def.conversion_script'); $conversionPageExpr = $adapter->getCheckSql('t_store.conversion_page IS NOT NULL', 't_store.conversion_page', 't_def.conversion_page'); $additionalDataExpr = $adapter->getCheckSql('t_store.additional_data IS NOT NULL', 't_store.additional_data', 't_def.additional_data'); $select = $adapter->select()->from(array('t_def' => $this->getMainTable()), array('entity_id', 'entity_type'))->joinLeft(array('t_store' => $this->getMainTable()), 't_store.entity_id = t_def.entity_id AND t_store.entity_type = t_def.entity_type AND ' . $adapter->quoteInto('t_store.store_id = ?', $storeId), array('code_id' => $codeIdExpr, 'store_id' => $storeIdExpr, 'control_script' => $controlScriptExpr, 'tracking_script' => $trackingScriptExpr, 'conversion_script' => $conversionScriptExpr, 'conversion_page' => $conversionPageExpr, 'additional_data' => $additionalDataExpr))->where('t_def.entity_id=?', $object->getEntity()->getId())->where('t_def.entity_type=?', $object->getEntityType())->where('t_def.store_id IN (0, ?)', $storeId)->order('t_def.store_id DESC')->limit(1); $data = $adapter->fetchRow($select); if ($data) { $object->setData($data); } $this->_afterLoad($object); return $this; }
/** * Load scripts by entity and store * * @param Mage_GoogleOptimizer_Model_Code $object * @param integer $storeId * @return Mage_GoogleOptimizer_Model_Mysql4_Code */ public function loadbyEntityType($object, $storeId) { $read = $this->_getReadAdapter(); if ($read) { //preapre colums to fetch, except scope columns $_columns = array_keys($read->describeTable($this->getMainTable())); $columnsToFetch = array(); foreach ($_columns as $_column) { if (in_array($_column, array('entity_id', 'entity_type'))) { $columnsToFetch[] = $_column; } } $select = $read->select()->from(array('_default_table' => $this->getMainTable()), $columnsToFetch)->joinLeft(array('_store_table' => $this->getMainTable()), "_store_table.entity_id = _default_table.entity_id AND _store_table.entity_type = _default_table.entity_type AND _store_table.store_id = {$storeId}", array('code_id' => new Zend_Db_Expr("IFNULL(_store_table.code_id, _default_table.code_id)"), 'store_id' => new Zend_Db_Expr("IFNULL(_store_table.store_id, _default_table.store_id)"), 'control_script' => new Zend_Db_Expr("IFNULL(_store_table.control_script, _default_table.control_script)"), 'tracking_script' => new Zend_Db_Expr("IFNULL(_store_table.tracking_script, _default_table.tracking_script)"), 'conversion_script' => new Zend_Db_Expr("IFNULL(_store_table.conversion_script, _default_table.conversion_script)"), 'conversion_page' => new Zend_Db_Expr("IFNULL(_store_table.conversion_page, _default_table.conversion_page)"), 'additional_data' => new Zend_Db_Expr("IFNULL(_store_table.additional_data, _default_table.additional_data)")))->where('_default_table.entity_id=?', $object->getEntity()->getId())->where('_default_table.entity_type=?', $object->getEntityType())->where('_default_table.store_id IN (0, ?)', $storeId)->order('_default_table.store_id DESC')->limit(1); $data = $read->fetchRow($select); if ($data) { $object->setData($data); } } $this->_afterLoad($object); return $this; }