public function deletePostsAction()
 {
     // In smoothbox
     $this->_helper->layout->setLayout('admin-simple');
     if ($this->getRequest()->isPost()) {
         $ids = $this->_getParam('id');
         $postTbl = new Book_Model_DbTable_Posts();
         if (!empty($ids) && is_array($ids)) {
             $postSelect = $postTbl->select();
             $postSelect->where('post_id IN (?)', $ids);
             $posts = $postTbl->fetchAll($postSelect);
             $db = Engine_Db_Table::getDefaultAdapter();
             $db->beginTransaction();
             try {
                 foreach ($posts as $post) {
                     $post->delete();
                 }
                 $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')->_('The posts are deleted successfully.'))));
         }
     }
 }
Example #2
0
 public function importRawPosts()
 {
     try {
         $postTbl = new Book_Model_DbTable_Posts();
         $select = $postTbl->select();
         $select->from($postTbl->info('name'), new Zend_Db_Expr('MAX(`rawpost_id`) as max_rawpost_id'));
         $data = $select->query()->fetch();
         $maxRawpostId = (int) $data['max_rawpost_id'];
         $bookTbl = new Book_Model_DbTable_Books();
         $rawPostTbl = new Book_Model_DbTable_Rawposts();
         $rawPostSelect = $rawPostTbl->select();
         $rawPostSelect->where('rawpost_id > ?', $maxRawpostId);
         $rawBookTbl = new Book_Model_DbTable_Rawbooks();
         foreach ($rawPostTbl->fetchAll($rawPostSelect) as $rawPost) {
             $data = array('post_name' => $rawPost->name, 'content' => $rawPost->content, 'user_id' => 1, 'rawpost_id' => $rawPost->rawpost_id);
             if (!empty($rawPost->book_link_id)) {
                 $book = $rawBookTbl->getBookFromBookLinkId($rawPost->book_link_id);
                 if (!empty($book)) {
                     $data['parent_type'] = $book->getType();
                     $data['parent_id'] = $book->getIdentity();
                 }
             }
             $post = $postTbl->createRow($data);
             $post->save();
         }
         return true;
     } catch (Exception $e) {
         throw $e;
     }
 }
Example #3
0
 public function indexAction()
 {
     $this->view->book = $book = Engine_Api::_()->core()->getSubject();
     if ($book->getType() == 'book') {
         $postTable = new Book_Model_DbTable_Posts();
         $select = $postTable->select()->where('parent_type = ?', $book->getType())->where('parent_id = ?', $book->getIdentity())->where('type = ?', 'excerpt');
         $select->order('post_id desc');
         $this->view->paginator = $paginator = Zend_Paginator::factory($select);
         $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 10));
         $paginator->setCurrentPageNumber($this->_getParam('page', 1));
         $userIds = array();
         foreach ($paginator->getCurrentItems() as $post) {
             array_push($userIds, $post->user_id);
         }
         $this->view->users = Engine_Api::_()->user()->getUserMulti($userIds);
     } else {
         return $this->setNoRender();
     }
 }
Example #4
0
 public function fixPostAction()
 {
     echo 'fix posts' . PHP_EOL;
     $postTbl = new Book_Model_DbTable_Posts();
     $postSelect = $postTbl->select()->where('rawpost_id > 0');
     $postSelect->limit(200);
     $rawPostIds = array();
     $posts = $postTbl->fetchAll($postSelect);
     echo 'number of posts : ' . count($posts) . PHP_EOL;
     foreach ($posts as $post) {
         array_push($rawPostIds, $post->rawpost_id);
     }
     $rawPostTbl = new Book_Model_DbTable_Rawposts();
     $rawPostTbl->delete(array('rawpost_id IN (?)' => $rawPostIds));
     foreach ($posts as $post) {
         $post->delete();
     }
     echo 'The posts have been deleted !' . PHP_EOL;
     die;
 }
Example #5
0
 public function indexAction()
 {
     $subject = Engine_Api::_()->core()->getSubject();
     if ($subject->getType() != 'book') {
         $book = $subject->getParentObject();
     } else {
         $book = $subject;
     }
     if ($book && $book->getType() == 'book') {
         $postTable = new Book_Model_DbTable_Posts();
         $postSelect = $postTable->getSelect();
         $postSelect->where('parent_type = ?', 'book')->where('parent_id = ?', $book->getIdentity());
         $postSelect->order('RAND()');
         $this->view->paginator = $paginator = Zend_Paginator::factory($postSelect);
         $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 5));
         $paginator->setCurrentPageNumber($this->_getParam('page', 1));
         if ($paginator->getTotalItemCount() == 0) {
             return $this->setNoRender();
         }
     } else {
         return $this->setNoRender();
     }
 }
Example #6
0
 public function indexAction()
 {
     if (!Engine_Api::_()->core()->hasSubject()) {
         return $this->setNoRender();
     }
     $subject = Engine_Api::_()->core()->getSubject();
     if ($subject->getType() == 'book_post' || $subject->getType() == 'book') {
         $user = $subject->getOwner();
     } elseif ($subject->getType() == 'user') {
         $user = $subject;
     }
     if (!isset($user)) {
         return $this->setNoRender();
     }
     $request = Zend_Controller_Front::getInstance()->getRequest();
     if ($request->isPost()) {
         $this->getElement()->clearDecorators();
     }
     $postTable = new Book_Model_DbTable_Posts();
     $postTableName = $postTable->info(Zend_Db_Table_Abstract::NAME);
     $postSelect = $postTable->getSelect();
     $postSelect->where("{$postTableName}.user_id = ?", $user->getIdentity());
     $postSelect->order(new Zend_Db_Expr('rand()'));
     $postSelect->limit($this->_getParam('itemCountPerPage', 5));
     $this->view->posts = $posts = $postTable->fetchAll($postSelect);
     // 		$this->view->paginator = $paginator = Zend_Paginator::factory($postSelect);
     // 		$itemCountPerPage = $this->_getParam('itemCountPerPage', 10);
     // 		if (empty($itemCountPerPage)) {
     // 			$itemCountPerPage = 10;
     // 		}
     // 		$paginator->setItemCountPerPage($itemCountPerPage);
     // 		$paginator->setCurrentPageNumber($this->_getParam('page', 1));
     // Do not render if nothing to show
     if (count($posts) <= 0) {
         return $this->setNoRender();
     }
 }
Example #7
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 #8
0
 public function createAction()
 {
     if (!$this->_helper->requireUser->isValid()) {
         return;
     }
     $viewer = Engine_Api::_()->user()->getViewer();
     // Create form
     $this->view->form = $form = new Book_Form_Post(array('postName' => 'Write a post'));
     if (!$this->getRequest()->isPost()) {
         $parent_id = $this->_getParam('parent_id');
         $parent_type = $this->_getParam('parent_type');
         if (!empty($parent_id) && !empty($parent_type)) {
             if ($parent_type == 'book') {
                 $this->view->parentBook = Engine_Api::_()->getItem('book', $parent_id);
                 $form->getElement('hasParent')->setChecked(true);
                 $form->getElement('parentBookValue')->setValue($parent_id);
             }
         } else {
             $form->getElement('hasParent')->setChecked(false);
         }
         return;
     }
     if ($form->isValid($this->getRequest()->getPost())) {
         $values = $form->getValues();
         if ($values['hasParent'] != '1') {
             unset($values['parentBookValue']);
         }
         if (isset($values['parentBookValue'])) {
             $parent_id = $values['parentBookValue'];
             $parent_type = 'book';
         }
         $postTable = new Book_Model_DbTable_Posts();
         $tagPostsTable = new Book_Model_DbTable_Tags();
         $notifyApi = Engine_Api::_()->getDbTable('notifications', 'activity');
         $activityApi = Engine_Api::_()->getDbTable('actions', 'activity');
         $db = Engine_Db_Table::getDefaultAdapter();
         $db->beginTransaction();
         try {
             $post = $postTable->createRow(array('content' => $values['content'], 'post_name' => $values['post_name'], 'parent_type' => $parent_type, 'parent_id' => $parent_id, 'creation_date' => date('Y-m-d H:i:s'), 'modified_date' => date('Y-m-d H:i:s'), 'user_id' => $viewer->getIdentity()));
             $post->save();
             $tags = array();
             foreach (preg_split('/[,]+/', $values['tags']) as $tag) {
                 $t = trim($tag);
                 if (!empty($t)) {
                     array_push($tags, $t);
                 }
             }
             $post->tags()->addTagMaps($viewer, $tags);
             $tagUsers = preg_split('/[,]+/', $values['toValues']);
             foreach ($tagUsers as $userId) {
                 $tagUser = $tagPostsTable->createRow(array('object_type' => 'user', 'object_id' => $userId, 'post_id' => $post->getIdentity()));
                 $tagUser->save();
             }
             $tagBooks = preg_split('/[,]+/', $values['toBookValues']);
             foreach ($tagBooks as $bookId) {
                 $tagBook = $tagPostsTable->createRow(array('object_type' => 'book', 'object_id' => $bookId, 'post_id' => $post->getIdentity()));
                 $tagBook->save();
             }
             if (!empty($values['photo'])) {
                 $post = $post->setPhoto($form->photo);
             }
             // CREATE AUTH STUFF HERE
             $auth = Engine_Api::_()->authorization()->context;
             $roles = array('owner', 'parent_member', 'registered', 'everyone');
             foreach ($roles as $i => $role) {
                 $auth->setAllowed($post, $role, 'view', true);
             }
             $db->commit();
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         // add activity
         if ($post->parent_type == 'book' && !empty($post->parent_id)) {
             $action = $activityApi->addActivity($viewer, $post, 'post_new_parent');
             $book = $post->getParent();
             $actionForBook = $activityApi->addActivity($viewer, $book, 'book_new_post');
         } else {
             $action = $activityApi->addActivity($viewer, $post, 'post_new');
         }
         if ($action) {
             $action->attach($post);
             if (isset($actionForBook)) {
                 $actionForBook->attach($post);
             }
         }
         // add notification
         if (!empty($tagUsers)) {
             $notifyUsers = Engine_Api::_()->user()->getUserMulti($tagUsers);
             foreach ($notifyUsers as $notifyUser) {
                 $notifyApi->addNotification($notifyUser, $viewer, $post, 'post_tagged');
             }
         }
         // add popularity for the book
         if (isset($book) && !empty($book)) {
             $popularity = Engine_Api::_()->getItemTable('book_popularity')->getObject($book->getType(), $book->getIdentity());
             $popularity->post_count = $popularity->post_count + 1;
             $popularity->point = $popularity->point + Book_Plugin_Core::POST_POINT;
             $popularity->save();
         }
         return $this->_redirectCustom($post);
     }
 }