Пример #1
0
 protected function _postInsert()
 {
     parent::_postInsert();
     $signatureTbl = new Book_Model_DbTable_Signatures();
     $signature = $signatureTbl->createRow(array('parent_object_id' => $this->getIdentity(), 'parent_object_type' => $this->getType(), 'favorite_count' => 0, 'view_count' => 0));
     $signature->save();
 }
Пример #2
0
 public function indexAction()
 {
     $bookTable = new Book_Model_DbTable_Books();
     $signatureTable = new Book_Model_DbTable_Signatures();
     $signatureTableName = $signatureTable->info('name');
     $bookSelect = $bookTable->getSelect()->order("{$signatureTableName}.rating_count DESC");
     $this->view->paginator = $paginator = Zend_Paginator::factory($bookSelect);
     if ($paginator->getTotalItemCount() == 0) {
         return $this->setNoRender();
     }
     $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 12));
     $paginator->setCurrentPageNumber($this->_getParam('page', 1));
 }
Пример #3
0
 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;
     }
 }
Пример #4
0
 public function getSelect($selectedColumns = null)
 {
     $signatureTable = new Book_Model_DbTable_Signatures();
     $signatureTableName = $signatureTable->info(Zend_Db_Table_Abstract::NAME);
     $tableName = $this->info(Zend_Db_Table_Abstract::NAME);
     // TODO [DangTH] : check again
     $tablePrimaryKey = current($this->info(Zend_Db_Table_Abstract::PRIMARY));
     if ($selectedColumns == null) {
         $select = $this->select()->from($tableName, $this->_selectedColumns);
     } else {
         $select = $this->select()->from($tableName, $selectedColumns);
     }
     $select->setIntegrityCheck(false);
     $select->joinLeft($signatureTableName, "{$signatureTableName}.parent_object_id = {$tableName}.{$tablePrimaryKey}");
     $select->where("{$signatureTableName}.parent_object_type = ?", $this->_getType());
     $select->group("{$tableName}.{$tablePrimaryKey}");
     return $select;
 }
Пример #5
0
 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);
     }
 }
Пример #6
0
 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();
     }
 }
Пример #7
0
 protected function _postInsert()
 {
     parent::_postInsert();
     $signatureTbl = new Book_Model_DbTable_Signatures();
     $signature = $signatureTbl->createRow(array('parent_object_id' => $this->getIdentity(), 'parent_object_type' => $this->getType(), 'favorite_count' => 0, 'view_count' => 0));
     $signature->save();
     $popularityTbl = new Book_Model_DbTable_Popularities();
     $popularity = $popularityTbl->createRow(array('resource_id' => $this->getIdentity(), 'resource_type' => $this->getType(), 'posted_date' => date('Y-m-d H:i:s')));
     $popularity->save();
 }