Example #1
0
 public function isFavorite($user, $object)
 {
     $favTbl = new Book_Model_DbTable_Favorites();
     $select = $favTbl->select()->where('user_id = ?', $user->getIdentity());
     $select->where('parent_object_id = ?', $object->getIdentity());
     $select->where('parent_object_type = ?', $object->getType());
     return $favTbl->fetchRow($select);
 }
Example #2
0
 public function indexAction()
 {
     // Get subject and check auth
     $subject = Engine_Api::_()->core()->getSubject();
     $bookTable = new Book_Model_DbTable_Books();
     $bookTableName = $bookTable->info(Zend_Db_Table_Abstract::NAME);
     $favTable = new Book_Model_DbTable_Favorites();
     $favTableName = $favTable->info(Zend_Db_Table_Abstract::NAME);
     $bookSelect = $bookTable->getSelect();
     $bookSelect->join($favTableName, "{$bookTableName}.book_id = {$favTableName}.parent_object_id");
     $bookSelect->where("{$favTableName}.parent_object_type = ?", 'book');
     $bookSelect->where("{$favTableName}.user_id = ?", $subject->getIdentity());
     $this->view->paginator = $paginator = Zend_Paginator::factory($bookSelect);
     // Do not render if nothing to show
     if ($paginator->getTotalItemCount() <= 0) {
         return $this->setNoRender();
     } else {
         $this->_childCount = $paginator->getTotalItemCount();
         $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 10));
         $paginator->setCurrentPageNumber($this->_getParam('page', 1));
     }
 }
Example #3
0
 protected function _postDelete()
 {
     parent::_postDelete();
     $bookPhotoTbl = new Book_Model_DbTable_Photos();
     $bookPhotoTbl->delete(array('parent_object_type = ?' => $this->getType(), 'parent_object_id = ?' => $this->getIdentity()));
     $bookAuthorTbl = new Book_Model_DbTable_BookAuthor();
     $bookAuthorTbl->delete(array('book_id = ?' => $this->getIdentity()));
     $bookFavTbl = new Book_Model_DbTable_Favorites();
     $bookFavTbl->delete(array('parent_object_type = ?' => $this->getType(), 'parent_object_id = ?' => $this->getIdentity()));
     $bookPostTbl = new Book_Model_DbTable_Posts();
     $bookPostTbl->update(array('parent_id' => NULL, 'parent_type' => NULL), array('parent_id = ?' => $this->getIdentity(), 'parent_type = ?' => $this->getType()));
     $bookRatingTbl = new Book_Model_DbTable_Ratings();
     $bookRatingTbl->delete(array('parent_object_type = ?' => $this->getType(), 'parent_object_id = ?' => $this->getIdentity()));
     $popularityTbl = new Book_Model_DbTable_Popularities();
     $popularity = $popularityTbl->delete(array('resource_id = ?' => $this->getIdentity(), 'resource_type = ?' => $this->getType()));
 }
Example #4
0
 public function removeFavoriteAction()
 {
     $this->_initActions();
     $subject = $this->_getSubject();
     $this->_checkSubject();
     $viewer = Engine_Api::_()->user()->getViewer();
     if (Engine_Api::_()->book()->isFavorite($viewer, $subject)) {
         $db = Engine_Db_Table::getDefaultAdapter();
         $db->beginTransaction();
         try {
             $favTable = new Book_Model_DbTable_Favorites();
             $fav = $favTable->delete(array('parent_object_id = ?' => $subject->getIdentity(), 'parent_object_type = ?' => $subject->getType(), 'user_id = ?' => $viewer->getIdentity()));
             $signature = $this->_getSignature();
             if ($signature->favorite_count > 0) {
                 $signature->favorite_count = $signature->favorite_count - 1;
                 $signature->save();
             }
             if ($subject->getType() == 'book') {
                 $popularity = Engine_Api::_()->getItem('book_popularity', $subject->getIdentity());
                 $popularity->favorite_count = $popularity->favorite_count - 1;
                 $popularity->point = $popularity->point - Book_Plugin_Core::FAV_POINT;
                 $popularity->save();
             }
             $db->commit();
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         return $this->_forward('success', 'utility', 'core', array('layout' => 'default-simple', 'parentRefresh' => true, 'messages' => array(Zend_Registry::get('Zend_Translate')->_($this->_getRemoveFavoriteMsg()))));
     }
 }