/**
  * 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());
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
 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);
 }
Пример #4
0
 /**
  * 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);
 }
Пример #5
0
 /**
  * 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);
 }
Пример #7
0
 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);
     }
 }
Пример #8
0
 /**
  * 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;
 }
Пример #9
0
 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);
 }
Пример #10
0
 /**
  * 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;
 }
Пример #11
0
 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);
 }
Пример #12
0
 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()));
     }
 }
Пример #14
0
 /**
  * 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);
 }
Пример #15
0
 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));
 }
Пример #17
0
 /**
  * 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);
 }
Пример #21
0
 /**
  * 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));
     }
 }
Пример #22
0
 /**
  * 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;
 }
Пример #24
0
 /**
  * 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;
 }
Пример #25
0
 /**
  * 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);
 }
Пример #27
0
 /**
  * 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;
 }
Пример #28
0
 /**
  * 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;
 }
Пример #29
0
 /**
  * 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;
 }
Пример #30
0
 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);
 }