Exemplo n.º 1
0
 /**
  * Return data of rating summary
  *
  * @param Mage_Rating_Model_Rating $object
  * @return array
  */
 protected function _getEntitySummaryData($object)
 {
     $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('entity_pk_value' => 'rating_vote.entity_pk_value', 'sum' => $sumColumn, 'count' => $countColumn))->join(array('review' => $this->getTable('review/review')), 'rating_vote.review_id=review.review_id', array())->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())->join(array('review_status' => $this->getTable('review/review_status')), 'review.status_id = review_status.status_id', array())->where('review_status.status_code = :status_code')->group('rating_vote.entity_pk_value')->group('review_store.store_id');
     $bind = array(':status_code' => self::RATING_STATUS_APPROVED);
     $entityPkValue = $object->getEntityPkValue();
     if ($entityPkValue) {
         $select->where('rating_vote.entity_pk_value = :pk_value');
         $bind[':pk_value'] = $entityPkValue;
     }
     return $adapter->fetchAll($select, $bind);
 }
Exemplo n.º 2
0
 /**
  * Return data of rating summary
  *
  * @param Mage_Rating_Model_Rating $object
  * @return array
  */
 protected function _getEntitySummaryData($object)
 {
     $read = $this->_getReadAdapter();
     $sql = "SELECT\n                    {$this->getTable('rating_vote')}.entity_pk_value as entity_pk_value,\n                    SUM({$this->getTable('rating_vote')}.percent) as sum,\n                    COUNT(*) as count,\n                    {$this->getTable('review/review_store')}.store_id\n                FROM\n                    {$this->getTable('rating_vote')}\n                INNER JOIN\n                    {$this->getTable('review/review')}\n                    ON {$this->getTable('rating_vote')}.review_id={$this->getTable('review/review')}.review_id\n                LEFT JOIN\n                    {$this->getTable('review/review_store')}\n                    ON {$this->getTable('rating_vote')}.review_id={$this->getTable('review/review_store')}.review_id\n                INNER JOIN\n                    {$this->getTable('rating/rating_store')} AS rst\n                    ON rst.rating_id = {$this->getTable('rating_vote')}.rating_id AND rst.store_id = {$this->getTable('review/review_store')}.store_id\n                INNER JOIN\n                    {$this->getTable('review/review_status')} AS review_status\n                    ON {$this->getTable('review/review')}.status_id = review_status.status_id\n                WHERE ";
     if ($object->getEntityPkValue()) {
         $sql .= "{$read->quoteInto($this->getTable('rating_vote') . '.entity_pk_value=?', $object->getEntityPkValue())} AND ";
     }
     $sql .= "review_status.status_code = 'approved'\n                GROUP BY\n                    {$this->getTable('rating_vote')}.entity_pk_value, {$this->getTable('review/review_store')}.store_id";
     return $read->fetchAll($sql);
 }