private function _getSignature() { $subject = $this->_getSubject(); if ($subject) { $signatureTable = new Book_Model_DbTable_Signatures(); $select = $signatureTable->select()->where('parent_object_id = ?', $subject->getIdentity())->where('parent_object_type = ?', $subject->getType()); $signature = $signatureTable->fetchRow($select); if ($signature == null) { $signature = $signatureTable->createRow(array('parent_object_id' => $subject->getIdentity(), 'parent_object_type' => $subject->getType(), 'favorite_count' => 0, 'view_count' => 0)); } return $signature; } }
public function getObject($type, $id) { $object = Engine_Api::_()->getItem($type, $id); if ($object) { $signatureTbl = new Book_Model_DbTable_Signatures(); $signatureSel = $signatureTbl->select(); $signatureSel->where('parent_object_type = ?', $type)->where('parent_object_id = ?', $id); $signature = $signatureTbl->fetchRow($signatureSel); if ($signature == NULL) { $signature = $signatureTbl->createRow(array('parent_object_id' => $id, 'parent_object_type' => $type, 'favorite_count' => 0, 'view_count' => 0)); $signature->save(); } $itemTbl = Engine_Api::_()->getItemTable($type); $itemTblName = $itemTbl->info(Zend_Db_Table_Abstract::NAME); $select = $itemTbl->getSelect('*'); $tablePrimaryKey = current($itemTbl->info(Zend_Db_Table_Abstract::PRIMARY)); $select->where("{$itemTblName}.{$tablePrimaryKey} = ?", $id); return $itemTbl->fetchRow($select); } }
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(); } }