public function checkRated($object_id, $object_type, $user_id) { if (!empty($user_id)) { $ratingTable = new Book_Model_DbTable_Ratings(); $select = $ratingTable->select()->where('parent_object_type = ?', $object_type)->where('parent_object_id = ?', $object_id)->where('user_id = ?', $user_id); return $ratingTable->fetchRow($select) != NULL; } return NULL; }
public function setRating($user_id, $rating) { $ratingTable = new Book_Model_DbTable_Ratings(); $select = $ratingTable->select()->where('parent_object_type = ?', $this->getType())->where('parent_object_id = ?', $this->getIdentity())->where('user_id = ?', $user_id); $row = $ratingTable->fetchRow($select); if (empty($row)) { $row = $ratingTable->createRow(array('parent_object_type' => $this->getType(), 'parent_object_id' => $this->getIdentity(), 'user_id' => $user_id, 'rating' => $rating)); $row->save(); $signatureTable = new Book_Model_DbTable_Signatures(); $select = $signatureTable->select()->where('parent_object_id = ?', $this->getIdentity())->where('parent_object_type = ?', $this->getType()); $signatureRow = $signatureTable->fetchRow($select); if ($signatureRow == NULL) { $signatureRow = $signatureTable->createRow(array('parent_object_id' => $this->getIdentity(), 'parent_object_type' => $this->getType())); } $signatureRow->rating_count = $signatureRow->rating_count + 1; $ratingSum = $this->getRatingSum(); if ($ratingSum != 0) { $signatureRow->rating = $ratingSum / $signatureRow->rating_count; } else { $signatureRow->rating = $rating; } $signatureRow->save(); } }