/**
  * 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()));
     }
 }
 public function isUniqueCategory(Mage_Core_Model_Abstract $object)
 {
     $title = trim($object->getTitle());
     if (!empty($title)) {
         $select = $this->_getReadAdapter()->select()->from($this->getMainTable(), $this->getIdFieldName())->where('title = ?', $title);
         if ($object->getId()) {
             $select->where($this->getIdFieldName() . ' <> ?', $object->getId());
         }
         if ($this->_getReadAdapter()->fetchRow($select)) {
             return false;
         }
     }
     return true;
 }
Пример #3
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;
 }
Пример #4
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);
 }
 /**
  * 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);
 }
Пример #6
0
 /**
  * Save option value title data
  *
  * @param Mage_Core_Model_Abstract $object
  */
 protected function _saveValueTitles(Mage_Core_Model_Abstract $object)
 {
     $titleTable = $this->getTable('catalog_product_option_type_title');
     if (!$object->getData('scope', 'title')) {
         $select = $this->_getReadAdapter()->select()->from($titleTable, array('option_type_id'))->where('option_type_id = ?', (int) $object->getId())->where('store_id = ?', Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID);
         $optionTypeId = $this->_getReadAdapter()->fetchOne($select);
         if ($optionTypeId) {
             if ($object->getStoreId() == '0') {
                 $where = array('option_type_id = ?' => (int) $optionTypeId, 'store_id = ?' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID);
                 $bind = array('title' => $object->getTitle());
                 $this->_getWriteAdapter()->update($titleTable, $bind, $where);
             }
         } else {
             $bind = array('option_type_id' => (int) $object->getId(), 'store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID, 'title' => $object->getTitle());
             $this->_getWriteAdapter()->insert($titleTable, $bind);
         }
     }
     if ($object->getStoreId() != '0' && !$object->getData('scope', 'title')) {
         $select = $this->_getReadAdapter()->select()->from($titleTable, array('option_type_id'))->where('option_type_id = ?', (int) $object->getId())->where('store_id = ?', (int) $object->getStoreId());
         $optionTypeId = $this->_getReadAdapter()->fetchOne($select);
         if ($optionTypeId) {
             $bind = array('title' => $object->getTitle());
             $where = array('option_type_id = ?' => (int) $optionTypeId, 'store_id = ?' => (int) $object->getStoreId());
             $this->_getWriteAdapter()->update($titleTable, $bind, $where);
         } else {
             $bind = array('option_type_id' => (int) $object->getId(), 'store_id' => (int) $object->getStoreId(), 'title' => $object->getTitle());
             $this->_getWriteAdapter()->insert($titleTable, $bind);
         }
     } else {
         if ($object->getData('scope', 'title')) {
             $where = array('option_type_id = ?' => (int) $object->getId(), 'store_id = ?' => (int) $object->getStoreId());
             $this->_getWriteAdapter()->delete($titleTable, $where);
         }
     }
 }