/** * Delete Code by entity id and import type * * @param Mage_Core_Model_Abstract $object * * @return $this */ public function delete(Mage_Core_Model_Abstract $object) { $adapter = $this->_getWriteAdapter(); if ($object->getImport() && $object->getEntityId()) { $values = array('entity_id = ?' => $object->getEntityId(), 'import = ?' => $object->getImport()); $adapter->delete($this->getMainTable(), $values); } return $this; }
protected function _afterDelete(Mage_Core_Model_Abstract $object) { Mage::helper('udratings')->useEt($object->getEntityId()); parent::_afterDelete($object); Mage::helper('udratings')->resetEt(); return $this; }
/** * 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; }
/** * Aggregate * * @param Mage_Core_Model_Abstract $object */ public function aggregate($object) { $readAdapter = $this->_getReadAdapter(); $writeAdapter = $this->_getWriteAdapter(); if (!$object->getEntityPkValue() && $object->getId()) { $object->load($object->getReviewId()); } $ratingModel = Mage::getModel('rating/rating'); $ratingSummaries = $ratingModel->getEntitySummary($object->getEntityPkValue(), false); foreach ($ratingSummaries as $ratingSummaryObject) { if ($ratingSummaryObject->getCount()) { $ratingSummary = round($ratingSummaryObject->getSum() / $ratingSummaryObject->getCount()); } else { $ratingSummary = $ratingSummaryObject->getSum(); } $reviewsCount = $this->getTotalReviews($object->getEntityPkValue(), true, $ratingSummaryObject->getStoreId()); $select = $readAdapter->select()->from($this->_aggregateTable)->where('entity_pk_value = :pk_value')->where('entity_type = :entity_type')->where('store_id = :store_id'); $bind = array(':pk_value' => $object->getEntityPkValue(), ':entity_type' => $object->getEntityId(), ':store_id' => $ratingSummaryObject->getStoreId()); $oldData = $readAdapter->fetchRow($select, $bind); $data = new Varien_Object(); $data->setReviewsCount($reviewsCount)->setEntityPkValue($object->getEntityPkValue())->setEntityType($object->getEntityId())->setRatingSummary($ratingSummary > 0 ? $ratingSummary : 0)->setStoreId($ratingSummaryObject->getStoreId()); $writeAdapter->beginTransaction(); try { if ($oldData['primary_id'] > 0) { $condition = array("{$this->_aggregateTable}.primary_id = ?" => $oldData['primary_id']); $writeAdapter->update($this->_aggregateTable, $data->getData(), $condition); } else { $writeAdapter->insert($this->_aggregateTable, $data->getData()); } $writeAdapter->commit(); } catch (Exception $e) { $writeAdapter->rollBack(); } } }