/** * Review summary * * @param Mage_Rating_Model_Rating $object * @param boolean $onlyForCurrentStore * @return array */ public function getReviewSummary($object, $onlyForCurrentStore = true) { $adapter = $this->_getReadAdapter(); $sumColumn = new Zend_Db_Expr("SUM(rating_vote.{$adapter->quoteIdentifier('percent')})"); $countColumn = new Zend_Db_Expr('COUNT(*)'); $select = $adapter->select()->from(array('rating_vote' => $this->getTable('rating/rating_option_vote')), array('sum' => $sumColumn, 'count' => $countColumn))->joinLeft(array('review_store' => $this->getTable('review/review_store')), 'rating_vote.review_id = review_store.review_id', array('review_store.store_id'))->join(array('rating_store' => $this->getTable('rating/rating_store')), 'rating_store.rating_id = rating_vote.rating_id AND rating_store.store_id = review_store.store_id', array())->where('rating_vote.review_id = :review_id')->group('rating_vote.review_id')->group('review_store.store_id'); $data = $adapter->fetchAll($select, array(':review_id' => $object->getReviewId())); if ($onlyForCurrentStore) { foreach ($data as $row) { if ($row['store_id'] == Mage::app()->getStore()->getId()) { $object->addData($row); } } return $object; } $result = array(); $stores = Mage::app()->getStore()->getResourceCollection()->load(); foreach ($data as $row) { $clone = clone $object; $clone->addData($row); $result[$clone->getStoreId()] = $clone; } $usedStoresId = array_keys($result); foreach ($stores as $store) { if (!in_array($store->getId(), $usedStoresId)) { $clone = clone $object; $clone->setCount(0); $clone->setSum(0); $clone->setStoreId($store->getId()); $result[$store->getId()] = $clone; } } return array_values($result); }