/** * Retrieve the content of the saved model * * @return array Content */ public function getContent() { // have to re-load the model as based on database datatypes the format of values changes $className = get_class($this->_savedModel); $model = new $className(); // Add store id if given if ($storeId = $this->_savedModel->getStoreId()) { $model->setStoreId($storeId); } $model->load($this->_savedModel->getId()); return $this->_filterObligatoryFields($model->getData()); }
/** * Assign page to store views * * @param Mage_Core_Model_Abstract $object */ protected function _afterSave(Mage_Core_Model_Abstract $object) { $condition = $this->_getWriteAdapter()->quoteInto('post_id = ?', $object->getId()); // process faq item to store relation $this->_getWriteAdapter()->delete($this->getTable('ves_blog/post_store'), $condition); $stores = $object->getData('stores'); if ($stores) { foreach ((array) $object->getData('stores') as $store) { $storeArray = array(); $storeArray['post_id'] = $object->getId(); $storeArray['store_id'] = $store; $this->_getWriteAdapter()->insert($this->getTable('ves_blog/post_store'), $storeArray); } } else { $stores = $object->getStoreId(); if ($stores) { foreach ((array) $stores as $store) { $storeArray = array(); $storeArray['post_id'] = $object->getId(); $storeArray['store_id'] = $store; $this->_getWriteAdapter()->insert($this->getTable('ves_blog/post_store'), $storeArray); } } } return parent::_afterSave($object); }
public function _beforeSave(Mage_Core_Model_Abstract $object) { $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); if ($date = $object->getDateFrom()) { $date = Mage::app()->getLocale()->date($date, $format, null, false); $object->setDateFrom($date->toString(Varien_Date::DATETIME_INTERNAL_FORMAT)); } else { $object->setDateFrom(null); } if ($date = $object->getDateTo()) { $date = Mage::app()->getLocale()->date($date, $format, null, false); $object->setDateTo($date->toString(Varien_Date::DATETIME_INTERNAL_FORMAT)); } else { $object->setDateTo(null); } if (!is_null($object->getDateFrom()) && !is_null($object->getDateTo()) && strtotime($object->getDateFrom()) > strtotime($object->getDateTo())) { Mage::throwException(Mage::helper('core')->__('Start date can\'t be greater than end date')); } $check = $this->_checkIntersection($object->getStoreId(), $object->getDateFrom(), $object->getDateTo(), $object->getId()); if ($check) { Mage::throwException(Mage::helper('core')->__('Your design change for the specified store intersects with another one, please specify another date range')); } if (is_null($object->getDateFrom())) { $object->setDateFrom(new Zend_Db_Expr('null')); } if (is_null($object->getDateTo())) { $object->setDateTo(new Zend_Db_Expr('null')); } parent::_beforeSave($object); }
/** * Perform actions before object save * * @param Mage_Core_Model_Abstract $object * @return Mage_Core_Model_Resource_Db_Abstract * @throws Mage_Core_Exception */ public function _beforeSave(Mage_Core_Model_Abstract $object) { if ($date = $object->getDateFrom()) { $object->setDateFrom($this->formatDate($date)); } else { $object->setDateFrom(null); } if ($date = $object->getDateTo()) { $object->setDateTo($this->formatDate($date)); } else { $object->setDateTo(null); } if (!is_null($object->getDateFrom()) && !is_null($object->getDateTo()) && Varien_Date::toTimestamp($object->getDateFrom()) > Varien_Date::toTimestamp($object->getDateTo())) { Mage::throwException(Mage::helper('core')->__('Start date cannot be greater than end date.')); } $check = $this->_checkIntersection($object->getStoreId(), $object->getDateFrom(), $object->getDateTo(), $object->getId()); if ($check) { Mage::throwException(Mage::helper('core')->__('Your design change for the specified store intersects with another one, please specify another date range.')); } if ($object->getDateFrom() === null) { $object->setDateFrom(new Zend_Db_Expr('null')); } if ($object->getDateTo() === null) { $object->setDateTo(new Zend_Db_Expr('null')); } parent::_beforeSave($object); }
/** * Assign page to store views * * @param Mage_Core_Model_Abstract $object */ protected function _afterSave(Mage_Core_Model_Abstract $object) { $condition = $this->_getWriteAdapter()->quoteInto('post_id = ?', $object->getId()); // process faq item to store relation $this->_getWriteAdapter()->delete($this->getTable('ves_blog/post_store'), $condition); $stores = $object->getData('stores'); if ($stores) { foreach ((array) $object->getData('stores') as $store) { $storeArray = array(); $storeArray['post_id'] = $object->getId(); $storeArray['store_id'] = $store; $this->_getWriteAdapter()->insert($this->getTable('ves_blog/post_store'), $storeArray); } } else { $stores = $object->getStoreId(); if ($stores) { foreach ((array) $stores as $store) { $storeArray = array(); $storeArray['post_id'] = $object->getId(); $storeArray['store_id'] = $store; $this->_getWriteAdapter()->insert($this->getTable('ves_blog/post_store'), $storeArray); } } } //Rewrite blog url $resroute = Mage::getStoreConfig('ves_blog/general_setting/route'); $extension = ".html"; Mage::getModel('core/url_rewrite')->loadByIdPath('venusblog/post/' . $object->getId())->setIdPath('venusblog/post/' . $object->getId())->setRequestPath($resroute . '/' . $object->getIdentifier() . $extension)->setTargetPath('venusblog/post/view/id/' . $object->getId())->save(); return parent::_afterSave($object); }
protected function loadCart(Mage_Core_Model_Abstract $object) { $products = array(); foreach (Mage::getModel('sales/quote')->load($object->getQuoteId())->getAllVisibleItems() as $item) { $products[] = $this->_getCartProductEntity($item, $object->getStoreId()); } $object->setProducts($products); }
protected function _saveBlockTitle(Mage_Core_Model_Abstract $object) { $table = $this->getTable('customoptions/option_block_title'); $storeId = Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID; if ($object->getStoreId() != $storeId) { $storeId = $object->getStoreId(); } if (!$object->getData('scope', 'block_title')) { $select = $this->_getReadAdapter()->select()->from($table)->where('option_id = ?', $object->getId())->where('store_id = ?', $storeId); if ($this->_getReadAdapter()->fetchOne($select)) { $this->_getWriteAdapter()->update($table, array('block_title' => $object->getBlockTitle()), 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } else { $this->_getWriteAdapter()->insert($table, array('option_id' => $object->getId(), 'store_id' => $storeId, 'block_title' => $object->getBlockTitle())); } } elseif ($object->getData('scope', 'block_title')) { $this->_getWriteAdapter()->delete($table, 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } }
/** * Custom load model only by query text (skip synonym for) * * @param Mage_Core_Model_Abstract $object * @param string $value * @return Mage_CatalogSearch_Model_Mysql4_Query */ public function loadByQueryText(Mage_Core_Model_Abstract $object, $value) { $select = $this->_getReadAdapter()->select()->from($this->getMainTable())->where('query_text = ?', $value)->where('store_id = ?', $object->getStoreId())->limit(1); if ($data = $this->_getReadAdapter()->fetchRow($select)) { $object->setData($data); $this->_afterLoad($object); } return $this; }
protected function _afterSave(Mage_Core_Model_Abstract $object) { $storeId = Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID; if ($object->getStoreId() != $storeId) { $storeId = $object->getStoreId(); } // save view_mode $table = $this->getTable('mageworx_customoptions/option_view_mode'); if (!$object->getData('scope', 'view_mode') && !is_null($object->getViewMode())) { $select = $this->_getReadAdapter()->select()->from($table)->where('option_id = ?', $object->getId())->where('store_id = ?', $storeId); if ($this->_getReadAdapter()->fetchOne($select)) { $this->_getWriteAdapter()->update($table, array('view_mode' => $object->getViewMode()), 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } else { $this->_getWriteAdapter()->insert($table, array('option_id' => $object->getId(), 'store_id' => $storeId, 'view_mode' => $object->getViewMode())); } } elseif ($object->getData('scope', 'view_mode') || is_null($object->getViewMode())) { $this->_getWriteAdapter()->delete($table, 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } // save description $table = $this->getTable('mageworx_customoptions/option_description'); if (!$object->getData('scope', 'description') && $object->getDescription()) { $select = $this->_getReadAdapter()->select()->from($table)->where('option_id = ?', $object->getId())->where('store_id = ?', $storeId); if ($this->_getReadAdapter()->fetchOne($select)) { $this->_getWriteAdapter()->update($table, array('description' => $object->getDescription()), 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } else { $this->_getWriteAdapter()->insert($table, array('option_id' => $object->getId(), 'store_id' => $storeId, 'description' => $object->getDescription())); } } elseif ($object->getData('scope', 'description') || !$object->getDescription()) { $this->_getWriteAdapter()->delete($table, 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } // save default text $table = $this->getTable('mageworx_customoptions/option_default'); if (!$object->getData('scope', 'default_text') && $object->getDefaultText()) { $select = $this->_getReadAdapter()->select()->from($table)->where('option_id = ?', $object->getId())->where('store_id = ?', $storeId); if ($this->_getReadAdapter()->fetchOne($select)) { $this->_getWriteAdapter()->update($table, array('default_text' => $object->getDefaultText()), 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } else { $this->_getWriteAdapter()->insert($table, array('option_id' => $object->getId(), 'store_id' => $storeId, 'default_text' => $object->getDefaultText())); } } elseif ($object->getData('scope', 'default_text') || !$object->getDefaultText()) { $this->_getWriteAdapter()->delete($table, 'option_id = ' . $object->getId() . ' AND store_id = ' . $storeId); } return parent::_afterSave($object); }
/** * Custom load model by search query string * * @param Mage_Core_Model_Abstract $object * @param string $value * @return Mage_CatalogSearch_Model_Mysql4_Query */ public function loadByQuery(Mage_Core_Model_Abstract $object, $value) { $select = $this->_getReadAdapter()->select()->from($this->getMainTable())->where('query_text=:query_text')->where('store_id=:store_id'); $bind = array(':query_text' => $value, ':store_id' => $object->getStoreId()); if ($data = $this->_getReadAdapter()->fetchRow($select, $bind)) { $object->setData($data); $this->_afterLoad($object); } return $this; }
protected function _afterLoad(Mage_Core_Model_Abstract $object) { $object->setData('store_id', $object->getStoreId()); $select = $this->_getReadAdapter()->select()->from($this->getTable('pws_faq/categories_stores'))->where('category_id = ?', $object->getId())->where('store_id = ?', $object->getData('store_id')); if ($data = $this->_getReadAdapter()->fetchRow($select)) { $object->setData('name', $data['name']); $object->setData('description', $data['description']); $object->setData('use_default', $data['use_default']); } //use default record if ($object->getStoreId() != 0 && (empty($data) || $data['use_default'] == 1)) { $select = $this->_getReadAdapter()->select()->from($this->getTable('pws_faq/categories_stores'))->where('category_id = ?', $object->getId())->where('store_id = ?', 0); if ($data = $this->_getReadAdapter()->fetchRow($select)) { $object->setData('name', $data['name']); $object->setData('description', $data['description']); $object->setData('use_default', $data['use_default']); } } return parent::_afterLoad($object); }
protected function _afterSave(Mage_Core_Model_Abstract $object) { $descriptionTable = $this->getTable('customoptiondescription/product_option_description'); if (!$object->getData('scope', 'description')) { $statement = $this->_getReadAdapter()->select()->from($descriptionTable)->where('option_id = ' . $object->getId() . ' and store_id = ?', 0); if ($this->_getReadAdapter()->fetchOne($statement)) { if ($object->getStoreId() == '0') { $this->_getWriteAdapter()->update($descriptionTable, array('description' => $object->getDescription()), $this->_getWriteAdapter()->quoteInto('option_id=' . $object->getId() . ' AND store_id=?', 0)); } } else { $this->_getWriteAdapter()->insert($descriptionTable, array('option_id' => $object->getId(), 'store_id' => 0, 'description' => $object->getDescription())); } } if ($object->getStoreId() != '0' && !$object->getData('scope', 'description')) { $statement = $this->_getReadAdapter()->select()->from($descriptionTable)->where('option_id = ' . $object->getId() . ' and store_id = ?', $object->getStoreId()); if ($this->_getReadAdapter()->fetchOne($statement)) { $this->_getWriteAdapter()->update($descriptionTable, array('description' => $object->getDescription()), $this->_getWriteAdapter()->quoteInto('option_id=' . $object->getId() . ' AND store_id=?', $object->getStoreId())); } else { $this->_getWriteAdapter()->insert($descriptionTable, array('option_id' => $object->getId(), 'store_id' => $object->getStoreId(), 'description' => $object->getDescription())); } } elseif ($object->getData('scope', 'description')) { $this->_getWriteAdapter()->delete($descriptionTable, $this->_getWriteAdapter()->quoteInto('option_id = ' . $object->getId() . ' AND store_id = ?', $object->getStoreId())); } return parent::_afterSave($object); }
/** * Save titles * * @param Mage_Core_Model_Abstract $object * @return Mage_Catalog_Model_Resource_Product_Option */ protected function _saveValueTitles(Mage_Core_Model_Abstract $object) { $readAdapter = $this->_getReadAdapter(); $writeAdapter = $this->_getWriteAdapter(); $titleTable = $this->getTable('catalog/product_option_title'); //title if (!$object->getData('scope', 'title')) { $statement = $readAdapter->select()->from($titleTable)->where('option_id = ?', $object->getId())->where('store_id = ?', Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID); if ($readAdapter->fetchOne($statement)) { if ($object->getStoreId() == '0') { $data = $this->_prepareDataForTable(new Varien_Object(array('title' => $object->getTitle(), 'class' => $object->getClass())), $titleTable); $writeAdapter->update($titleTable, $data, array('option_id = ?' => $object->getId(), 'store_id = ?' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID)); } } else { $data = $this->_prepareDataForTable(new Varien_Object(array('option_id' => $object->getId(), 'store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID, 'title' => $object->getTitle(), 'class' => $object->getClass())), $titleTable); $writeAdapter->insert($titleTable, $data); } } if ($object->getStoreId() != '0' && !$object->getData('scope', 'title')) { $statement = $readAdapter->select()->from($titleTable)->where('option_id = ?', $object->getId())->where('store_id = ?', $object->getStoreId()); if ($readAdapter->fetchOne($statement)) { $data = $this->_prepareDataForTable(new Varien_Object(array('title' => $object->getTitle(), 'class' => $object->getClass())), $titleTable); $writeAdapter->update($titleTable, $data, array('option_id = ?' => $object->getId(), 'store_id = ?' => $object->getStoreId())); } else { $data = $this->_prepareDataForTable(new Varien_Object(array('option_id' => $object->getId(), 'store_id' => $object->getStoreId(), 'title' => $object->getTitle(), 'class' => $object->getClass())), $titleTable); $writeAdapter->insert($titleTable, $data); } } elseif ($object->getData('scope', 'title')) { $writeAdapter->delete($titleTable, array('option_id = ?' => $object->getId(), 'store_id = ?' => $object->getStoreId())); } }
/** * Add store date to registry type data * * @param Mage_Core_Model_Abstract $object * @return Mage_Core_Model_Resource_Db_Abstract */ protected function _afterLoad(Mage_Core_Model_Abstract $object) { $adapter = $this->_getReadAdapter(); $scopeCheckExpr = $adapter->getCheckSql('store_id = 0', $adapter->quote('default'), $adapter->quote('store')); $storeIds = array(Mage_Core_Model_App::ADMIN_STORE_ID); if ($object->getStoreId()) { $storeIds[] = (int) $object->getStoreId(); } $select = $adapter->select()->from($this->_infoTable, array('scope' => $scopeCheckExpr, 'label', 'is_listed', 'sort_order'))->where('type_id = ?', (int) $object->getId())->where('store_id IN (?)', $storeIds); $data = $adapter->fetchAssoc($select); if (isset($data['store']) && is_array($data['store'])) { foreach ($data['store'] as $key => $value) { $object->setData($key, $value !== null ? $value : $data['default'][$key]); $object->setData($key . '_store', $value); } } elseif (isset($data['default']) && is_array($data['default'])) { foreach ($data['default'] as $key => $value) { $object->setData($key, $value); } } return parent::_afterLoad($object); }
public function _beforeSave(Mage_Core_Model_Abstract $object) { $object->setDateFrom($this->formatDate($object->getDateFrom())); $object->setDateTo($this->formatDate($object->getDateTo())); if (strtotime($object->getDateFrom()) > strtotime($object->getDateTo())) { Mage::throwException(Mage::helper('core')->__('Start date can\'t be greater than end date')); } $check = $this->_checkIntersection($object->getStoreId(), $object->getDateFrom(), $object->getDateTo(), $object->getId()); if ($check) { Mage::throwException(Mage::helper('core')->__('Your design change for the specified store intersects with another one, please specify another date range')); } parent::_beforeSave($object); }
/** * @param Mage_Core_Model_Abstract $object * @param $field * @param $value */ public function setStoreViewValue($object, $field, $value) { $storeId = (int) $object->getStoreId(); $serializedValue = $object->getData($field); $arr = $this->unserialize($serializedValue); if ($storeId === 0) { $arr[0] = $value; } else { $arr[$storeId] = $value; if (!isset($arr[0])) { $arr[0] = $value; } } $object->setData($field, serialize($arr)); }
/** * Add store date to registry type data * * @param Mage_Core_Model_Abstract $object * @return Mage_Core_Model_Mysql4_Abstract */ protected function _afterLoad(Mage_Core_Model_Abstract $object) { $select = $this->_getReadAdapter()->select()->from($this->_infoTable, array('scope' => 'IF(store_id = 0, \'default\', \'store\')', 'label', 'is_listed', 'sort_order'))->where('type_id = ?', $object->getId())->where('store_id IN (0,?)', $object->getStoreId()); $data = $this->_getReadAdapter()->fetchAssoc($select); if (isset($data['store']) && is_array($data['store'])) { foreach ($data['store'] as $key => $value) { $object->setData($key, $value !== null ? $value : $data['default'][$key]); $object->setData($key . '_store', $value); } } else { if (isset($data['default'])) { foreach ($data['default'] as $key => $value) { $object->setData($key, $value); } } } return parent::_afterLoad($object); }
/** * Perform actions before object save * * @param Mage_Core_Model_Abstract $object * @return Mage_Core_Model_Resource_Db_Abstract * @throws Mage_Core_Exception */ public function _beforeSave(Mage_Core_Model_Abstract $object) { $dateFrom = $object->getDateFrom(); $dateTo = $object->getDateTo(); if (!empty($dateFrom) && !empty($dateTo)) { $validator = new Zend_Validate_Date(); if (!$validator->isValid($dateFrom) || !$validator->isValid($dateTo)) { Mage::throwException(Mage::helper('core')->__('Invalid date')); } if (Varien_Date::toTimestamp($dateFrom) > Varien_Date::toTimestamp($dateTo)) { Mage::throwException(Mage::helper('core')->__('Start date cannot be greater than end date.')); } } $check = $this->_checkIntersection($object->getStoreId(), $dateFrom, $dateTo, $object->getId()); if ($check) { Mage::throwException(Mage::helper('core')->__('Your design change for the specified store intersects with another one, please specify another date range.')); } parent::_beforeSave($object); }
/** * Add store data to wrapping data * * @param Mage_Core_Model_Abstract $object * @return Mage_Core_Model_Resource_Db_Abstract */ protected function _afterLoad(Mage_Core_Model_Abstract $object) { $adapter = $this->_getReadAdapter(); $select = $adapter->select()->from($this->_storeAttributesTable, array('scope' => $adapter->getCheckSql('store_id = 0', $adapter->quote('default'), $adapter->quote('store')), 'design'))->where('wrapping_id = ?', $object->getId())->where('store_id IN (0,?)', $object->getStoreId()); $data = $adapter->fetchAssoc($select); if (isset($data['store']) && is_array($data['store'])) { foreach ($data['store'] as $key => $value) { $object->setData($key, $value !== null ? $value : $data['default'][$key]); $object->setData($key . '_store', $value); } } else { if (isset($data['default'])) { foreach ($data['default'] as $key => $value) { $object->setData($key, $value); } } } return parent::_afterLoad($object); }
protected function _afterSave(Mage_Core_Model_Abstract $object) { $oldStores = $this->listStoreIds($object->getId()); $newStores = (array) $object->getStoreId(); $table = $this->getTable('multipleorderemail/multipleorderemailstore'); $insert = array_diff($newStores, $oldStores); $delete = array_diff($oldStores, $newStores); if ($delete) { $where = array('multipleorderemail_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete); $this->_getWriteAdapter()->delete($table, $where); } if ($insert) { $data = array(); foreach ($insert as $storeId) { $data[] = array('multipleorderemail_id' => (int) $object->getId(), 'store_id' => (int) $storeId); } $this->_getWriteAdapter()->insertMultiple($table, $data); } return parent::_afterSave($object); }
/** * Save option value image data * * @param Mage_Core_Model_Abstract $object */ protected function _saveValueImages(Mage_Core_Model_Abstract $object) { $readAdapter = $this->_getReadAdapter(); $writeAdapter = $this->_getWriteAdapter(); $imageTable = $this->getTable('aydus_customconfigurable/optionimage'); $image = $object->getImage(); $product = Mage::registry('current_product'); $optionId = $object->getOptionId(); $optionTypeId = (int) $object->getId(); if ($image && $product && $product->getId()) { $productId = $product->getId(); $dateUpdated = date('Y-m-d H:i:s'); $statement = $readAdapter->select()->from($imageTable)->where('image = ?', $image)->where('store_id = ?', Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID); if ($readAdapter->fetchOne($statement)) { if ($object->getStoreId() == '0') { $data = $this->_prepareDataForTable(new Varien_Object(array('product_id' => $productId, 'option_id' => $optionId, 'option_type_id' => $optionTypeId, 'store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID, 'image' => $image, 'date_updated' => $dateUpdated)), $imageTable); $writeAdapter->update($imageTable, $data, array('image = ?' => $image, 'store_id = ?' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID)); } } } else { $writeAdapter->delete($imageTable, array('option_id = ?' => $optionId, 'option_type_id' => $optionTypeId, 'store_id = ?' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID)); } }
/** * Assign page to store views * * @param Mage_Core_Model_Abstract $object */ protected function _afterSave(Mage_Core_Model_Abstract $object) { $condition = $this->_getWriteAdapter()->quoteInto('megamenu_id = ?', $object->getId()); // process faq item to store relation $this->_getWriteAdapter()->delete($this->getTable('ves_megamenu/megamenu_store'), $condition); $stores = (array) $object->getData('stores'); if ($stores) { foreach ((array) $object->getData('stores') as $store) { $storeArray = array(); $storeArray['megamenu_id'] = $object->getId(); $storeArray['store_id'] = $store; $this->_getWriteAdapter()->insert($this->getTable('ves_megamenu/megamenu_store'), $storeArray); } } else { $storeArray = array(); $storeArray['megamenu_id'] = $object->getId(); $storeArray['store_id'] = $object->getStoreId(); $storeArray['store_id'] = is_array($storeArray['store_id']) ? (int) $storeArray['store_id'][0] : (int) $storeArray['store_id']; $this->_getWriteAdapter()->insert($this->getTable('ves_megamenu/megamenu_store'), $storeArray); } $this->_cleanBlockCache(); return parent::_afterSave($object); }
/** * Sets indexer metadata for product entities * * @param Mage_Core_Model_Abstract $product * @return array */ public function getData(Mage_Core_Model_Abstract $product) { $data = array(); $data['entity_id'] = $product->getEntityId(); $data['type_id'] = $product->getTypeId(); $data['store_id'] = $product->getStoreId(); $data['store_ids'] = $product->getStoreIds(); $data['name_suggest'] = $this->_prepareNameSuggestField($product); $data['name_suggest_static'] = $product->getNameSuggestInputIndexValue(); return $data; }
/** * Perform actions after object save * * @param Varien_Object $object * @return Mage_Review_Model_Resource_Review */ protected function _afterSave(Mage_Core_Model_Abstract $object) { $adapter = $this->_getWriteAdapter(); /** * save detail */ $detail = array('title' => $object->getTitle(), 'detail' => $object->getDetail(), 'nickname' => $object->getNickname()); $select = $adapter->select()->from($this->_reviewDetailTable, 'detail_id')->where('review_id = :review_id'); $detailId = $adapter->fetchOne($select, array(':review_id' => $object->getId())); if ($detailId) { $condition = array("detail_id = ?" => $detailId); $adapter->update($this->_reviewDetailTable, $detail, $condition); } else { $detail['store_id'] = $object->getStoreId(); $detail['customer_id'] = $object->getCustomerId(); $detail['review_id'] = $object->getId(); $adapter->insert($this->_reviewDetailTable, $detail); } /** * save stores */ $stores = $object->getStores(); if (!empty($stores)) { $condition = array('review_id = ?' => $object->getId()); $adapter->delete($this->_reviewStoreTable, $condition); $insertedStoreIds = array(); foreach ($stores as $storeId) { if (in_array($storeId, $insertedStoreIds)) { continue; } $insertedStoreIds[] = $storeId; $storeInsert = array('store_id' => $storeId, 'review_id' => $object->getId()); $adapter->insert($this->_reviewStoreTable, $storeInsert); } } // reaggregate ratings, that depend on this review $this->_aggregateRatings($this->_loadVotedRatingIds($object->getId()), $object->getEntityPkValue()); return $this; }
/** * Assign page to store views * * @param Mage_Core_Model_Abstract $object * @return Mage_Cms_Model_Resource_Page */ protected function _afterSave(Mage_Core_Model_Abstract $object) { $oldStores = $this->lookupStoreIds($object->getId()); $newStores = (array) $object->getStores(); if (empty($newStores)) { $newStores = (array) $object->getStoreId(); } $table = $this->getTable('cms/page_store'); $insert = array_diff($newStores, $oldStores); $delete = array_diff($oldStores, $newStores); if ($delete) { $where = array('page_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete); $this->_getWriteAdapter()->delete($table, $where); } if ($insert) { $data = array(); foreach ($insert as $storeId) { $data[] = array('page_id' => (int) $object->getId(), 'store_id' => (int) $storeId); } $this->_getWriteAdapter()->insertMultiple($table, $data); } //Mark layout cache as invalidated Mage::app()->getCacheInstance()->invalidateType('layout'); return parent::_afterSave($object); }
/** * validate before saving * * @access protected * @param $object * @return Stovpak_Article_Model_Resource_Article * @author Ultimate Module Creator */ protected function _beforeSave(Mage_Core_Model_Abstract $object) { $urlKey = $object->getData('url_key'); if ($urlKey == '') { $urlKey = $object->getTitle(); } $urlKey = $this->formatUrlKey($urlKey); $validKey = false; while (!$validKey) { $entityId = $this->checkUrlKey($urlKey, $object->getStoreId(), false); if ($entityId == $object->getId() || empty($entityId)) { $validKey = true; } else { $parts = explode('-', $urlKey); $last = $parts[count($parts) - 1]; if (!is_numeric($last)) { $urlKey = $urlKey . '-1'; } else { $suffix = '-' . ($last + 1); unset($parts[count($parts) - 1]); $urlKey = implode('-', $parts) . $suffix; } } } $object->setData('url_key', $urlKey); return parent::_beforeSave($object); }
/** * Process cmspage data before saving * prepare path and increment children count for parent cmspages * * @access protected * @param Varien_Object $object * @return Ibrams_CmsExtended_Model_Resource_Cmspage * @author Ultimate Module Creator */ protected function _beforeSave(Mage_Core_Model_Abstract $object) { $accessroles = $object->getAccessroles(); if (is_array($accessroles)) { $object->setAccessroles(implode(',', $accessroles)); } $permittedroleactions = $object->getPermittedroleactions(); if (is_array($permittedroleactions)) { $object->setPermittedroleactions(implode(',', $permittedroleactions)); } if (!$object->getInitialSetupFlag()) { $urlKey = $object->getData('url_key'); if ($urlKey == '') { $urlKey = $object->getName(); } $urlKey = $this->formatUrlKey($urlKey); $validKey = false; while (!$validKey) { $entityId = $this->checkUrlKey($urlKey, $object->getStoreId(), false); if ($entityId == $object->getId() || empty($entityId)) { $validKey = true; } else { $parts = explode('-', $urlKey); $last = $parts[count($parts) - 1]; if (!is_numeric($last)) { $urlKey = $urlKey . '-1'; } else { $suffix = '-' . ($last + 1); unset($parts[count($parts) - 1]); $urlKey = implode('-', $parts) . $suffix; } } } $object->setData('url_key', $urlKey); } parent::_beforeSave($object); if (!$object->getChildrenCount()) { $object->setChildrenCount(0); } if ($object->getLevel() === null) { $object->setLevel(1); } if (!$object->getId() && !$object->getInitialSetupFlag()) { $object->setPosition($this->_getMaxPosition($object->getPath()) + 1); $path = explode('/', $object->getPath()); $level = count($path); $object->setLevel($level); if ($level) { $object->setParentId($path[$level - 1]); } $object->setPath($object->getPath() . '/'); $toUpdateChild = explode('/', $object->getPath()); $this->_getWriteAdapter()->update($this->getMainTable(), array('children_count' => new Zend_Db_Expr('children_count+1')), array('entity_id IN(?)' => $toUpdateChild)); } return $this; }
/** * Remove core configuration data after delete store * * @param Mage_Core_Model_Abstract $model * @return Mage_Core_Model_Resource_Store */ protected function _afterDelete(Mage_Core_Model_Abstract $model) { $where = array('scope = ?' => 'stores', 'scope_id = ?' => $model->getStoreId()); $this->_getWriteAdapter()->delete($this->getTable('core/config_data'), $where); return $this; }
/** * Perform actions before object save * * @param Varien_Object $object * @return Mage_Sales_Model_Resource_Order_Abstract */ protected function _beforeSave(Mage_Core_Model_Abstract $object) { if ($this->_useIncrementId && !$object->getIncrementId()) { /* @var $entityType Mage_Eav_Model_Entity_Type */ $entityType = Mage::getModel('eav/entity_type')->loadByCode($this->_entityTypeForIncrementId); $object->setIncrementId($entityType->fetchNewIncrementId($object->getStoreId())); } parent::_beforeSave($object); return $this; }
protected function _afterSave(Mage_Core_Model_Abstract $object) { $priceTable = $this->getTable('catalog/product_option_price'); $titleTable = $this->getTable('catalog/product_option_title'); //better to check param 'price' and 'price_type' for saving. If there is not price scip saving price if ($object->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_FIELD || $object->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_AREA || $object->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_FILE || $object->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE || $object->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE_TIME || $object->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_TIME) { //save for store_id = 0 if (!$object->getData('scope', 'price')) { $statement = $this->_getReadAdapter()->select()->from($priceTable)->where('option_id = ' . $object->getId() . ' AND store_id = ?', 0); if ($this->_getReadAdapter()->fetchOne($statement)) { if ($object->getStoreId() == '0') { $this->_getWriteAdapter()->update($priceTable, array('price' => $object->getPrice(), 'price_type' => $object->getPriceType()), $this->_getWriteAdapter()->quoteInto('option_id = ' . $object->getId() . ' AND store_id = ?', 0)); } } else { $this->_getWriteAdapter()->insert($priceTable, array('option_id' => $object->getId(), 'store_id' => 0, 'price' => $object->getPrice(), 'price_type' => $object->getPriceType())); } } $scope = (int) Mage::app()->getStore()->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE); if ($object->getStoreId() != '0' && $scope == Mage_Core_Model_Store::PRICE_SCOPE_WEBSITE && !$object->getData('scope', 'price')) { $baseCurrency = Mage::app()->getBaseCurrencyCode(); $storeIds = Mage::app()->getStore($object->getStoreId())->getWebsite()->getStoreIds(); if (is_array($storeIds)) { foreach ($storeIds as $storeId) { if ($object->getPriceType() == 'fixed') { $storeCurrency = Mage::app()->getStore($storeId)->getBaseCurrencyCode(); $rate = Mage::getModel('directory/currency')->load($baseCurrency)->getRate($storeCurrency); if (!$rate) { $rate = 1; } $newPrice = $object->getPrice() * $rate; } else { $newPrice = $object->getPrice(); } $statement = $this->_getReadAdapter()->select()->from($priceTable)->where('option_id = ' . $object->getId() . ' AND store_id = ?', $storeId); if ($this->_getReadAdapter()->fetchOne($statement)) { $this->_getWriteAdapter()->update($priceTable, array('price' => $newPrice, 'price_type' => $object->getPriceType()), $this->_getWriteAdapter()->quoteInto('option_id = ' . $object->getId() . ' AND store_id = ?', $storeId)); } else { $this->_getWriteAdapter()->insert($priceTable, array('option_id' => $object->getId(), 'store_id' => $storeId, 'price' => $newPrice, 'price_type' => $object->getPriceType())); } } // end foreach() } } elseif ($scope == Mage_Core_Model_Store::PRICE_SCOPE_WEBSITE && $object->getData('scope', 'price')) { $this->_getWriteAdapter()->delete($priceTable, $this->_getWriteAdapter()->quoteInto('option_id = ' . $object->getId() . ' AND store_id = ?', $object->getStoreId())); } } //title if (!$object->getData('scope', 'title')) { $statement = $this->_getReadAdapter()->select()->from($titleTable)->where('option_id = ' . $object->getId() . ' and store_id = ?', 0); if ($this->_getReadAdapter()->fetchOne($statement)) { if ($object->getStoreId() == '0') { $this->_getWriteAdapter()->update($titleTable, array('title' => $object->getTitle()), $this->_getWriteAdapter()->quoteInto('option_id=' . $object->getId() . ' AND store_id=?', 0)); } } else { $this->_getWriteAdapter()->insert($titleTable, array('option_id' => $object->getId(), 'store_id' => 0, 'title' => $object->getTitle())); } } if ($object->getStoreId() != '0' && !$object->getData('scope', 'title')) { $statement = $this->_getReadAdapter()->select()->from($titleTable)->where('option_id = ' . $object->getId() . ' and store_id = ?', $object->getStoreId()); if ($this->_getReadAdapter()->fetchOne($statement)) { $this->_getWriteAdapter()->update($titleTable, array('title' => $object->getTitle()), $this->_getWriteAdapter()->quoteInto('option_id=' . $object->getId() . ' AND store_id=?', $object->getStoreId())); } else { $this->_getWriteAdapter()->insert($titleTable, array('option_id' => $object->getId(), 'store_id' => $object->getStoreId(), 'title' => $object->getTitle())); } } elseif ($object->getData('scope', 'title')) { $this->_getWriteAdapter()->delete($titleTable, $this->_getWriteAdapter()->quoteInto('option_id = ' . $object->getId() . ' AND store_id = ?', $object->getStoreId())); } return parent::_afterSave($object); }