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.')))); } } }
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; } }
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(); } }
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; }
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(); } }
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(); } }
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())); }
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); } }