public function getPosts(array $user_ids, $tag = null, $name = null, $order = 'created_at')
 {
     $ids = array();
     if (!empty($tag)) {
         $tag_mapper = new Application_Model_TagMapper();
         $result = $tag_mapper->findAllByTwoColumns('content', $tag, 'type', TYPE_TAG);
         foreach ($result as $row) {
             $ids[] = $row['post_id'];
         }
     } else {
         $select = $this->getDbTable()->select();
         $select->setIntegrityCheck(false);
         $select->from("user_post", array('id'));
         if (!empty($name)) {
             $select->join('google_user', 'user_post.user_id = google_user.id', array('username'));
             $select->where('google_user.username = ?', $name);
         } else {
             $select->where('user_id IN(?)', $user_ids);
         }
         if ($order == 'created_at' || $order == '') {
             $select->order("user_post.created_at" . ' DESC');
         } elseif ($order == "hot") {
             $select->order("user_post.comment_number" . ' DESC');
         }
         $result = $this->getDbTable()->fetchAll($select);
         foreach ($result as $row) {
             $ids[] = $row['id'];
         }
     }
     return $ids;
 }
Exemple #2
0
 public function fetchRecord($text, $search_type, $is_partial)
 {
     //For debugging
     $this->_logger = new Zend_Log();
     $writer = new Zend_Log_Writer_Stream('sample.log');
     $this->_logger->addWriter($writer);
     //Array to hold the final search results
     $entries = array();
     //Search by destination name
     //Formulate SQL query for partial or full search
     if ($search_type == "Destination") {
         $select = $this->getDbTable()->select();
         if ($is_partial == "true") {
             $filteredText = "%" . $text . "%";
             $select->where('destination like ?', $filteredText);
             $this->_logger->log($select, Zend_Log::INFO);
         } else {
             $select->where('destination = ?', $text);
             $this->_logger->log($select, Zend_Log::INFO);
         }
         $resultSet = $this->getDbTable()->fetchAll($select);
     } else {
         if ($search_type == "Tags") {
             //Access tag's mapper function
             $tagMapper = new Application_Model_TagMapper();
             $selectTag = $tagMapper->getDbTable()->select();
             $selectTag->where('tag = ?', $text);
             $this->_logger->log($selectTag, Zend_Log::INFO);
             $tagResultSet = $tagMapper->getDbTable()->fetchAll($selectTag);
             //Array to store matching ideas object
             $temp_entries = array();
             //Parse return results
             foreach ($tagResultSet as $row) {
                 $entry = new Application_Model_Tag();
                 $entry->setTag($row->tag)->setIdeaId($row->idea_id)->setCreateDatetime($row->create_datetime)->setLastUpdateDatetime($row->last_update_datetime);
                 //Retrive ideas object by idea_id which has a matching tag
                 $select = $this->getDbTable()->select();
                 $select->where('idea_id = ?', $row->idea_id);
                 $tempResultSet = $this->getDbTable()->fetchRow($select);
                 //Aggregate the matching ideas to the same array
                 array_push($temp_entries, $tempResultSet);
             }
             //Assign result for parsing
             $resultSet = $temp_entries;
         }
     }
     //Parse return results
     foreach ($resultSet as $row) {
         $author = new Application_Model_Member();
         $author->setId($row->author_id);
         $entry = new Application_Model_Idea();
         $entry->setId($row->idea_id)->setDestination($row->destination)->setTitle($row->title)->setStartDate($row->start_date)->setEndDate($row->end_date)->setAuthor($row->author)->setCreateDatetime($row->create_datetime)->setLastUpdateDatetime($row->last_update_datetime);
         $entries[] = $entry;
     }
     return $entries;
 }
 public function editAction()
 {
     $request = $this->getRequest();
     $post_id = $request->getParam("id");
     if (empty($post_id)) {
         throw new Exception("empty post_id");
     }
     $post_mapper = new Application_Model_PostMapper();
     $post = $post_mapper->find($post_id);
     if (empty($post)) {
         throw new Exception("empty post");
     }
     $this->view->post = $post;
     $user_id = get_user_id();
     if ($post['user_id'] != $user_id) {
         throw new Exception("Not Authorized");
     }
     $tag_mapper = new Application_Model_TagMapper();
     $tags1 = $tag_mapper->findAllByColumn('post_id', $post_id);
     $tag_array = array();
     foreach ($tags1 as $tag) {
         $tag_content = "#" . $tag['content'];
         $tag_array[] = $tag_content;
     }
     $this->view->tags = $tag_array;
     if ($request->isPost()) {
         $content = $request->getParam("content");
         $pieces = explode("#", $content);
         $post_content = $pieces[0];
         $tags = array();
         for ($i = 1; $i < sizeof($pieces); $i++) {
             $tags[] = $pieces[$i];
         }
         $post_model = new Application_Model_Post();
         $post_model->_fields['id'] = $post_id;
         $post_model->_fields['updated_at'] = time();
         $post_model->_fields['created_at'] = $post['created_at'];
         $post_model->_fields['content'] = $post_content;
         $post_model->_fields['user_id'] = $user_id;
         $post_model->_fields['is_reported'] = 0;
         $post_mapper = new Application_Model_PostMapper();
         $post_id = $post_mapper->save($post_model);
         $tag_mapper = new Application_Model_TagMapper();
         foreach ($tags1 as $tag1) {
             $tag_mapper->delete($tag1['id']);
         }
         foreach ($tags as $tag) {
             $comment_model = new Application_Model_Tag();
             $comment_model->_fields['content'] = $tag;
             $comment_model->_fields['post_id'] = $post_id;
             $comment_model->_fields['type'] = TYPE_TAG;
             $tag_mapper->save($comment_model);
         }
         if (isset($_FILES['post_pic'])) {
             if (is_uploaded_file($_FILES['post_pic']['tmp_name'])) {
                 if (!move_uploaded_file($_FILES['post_pic']['tmp_name'], APPLICATION_PATH . "/../public/post_pic/" . $post_id . '.png')) {
                     throw new Exception("error in moving file");
                 }
             }
         }
         $this->_redirect("/post/home");
     }
 }
 protected function _getCloud()
 {
     $tablegateway = new Zend_Db_Table('tags');
     $tag_mapper = new Application_Model_TagMapper($tablegateway);
     $tags = $tag_mapper->findGrouped();
     $tags_array = array();
     foreach ($tags as $tag) {
         $url = $this->view->tagUrl($tag['tag']);
         $tags_array[] = array('title' => $tag['tag'], 'weight' => $tag['num'], 'params' => array('url' => $url));
     }
     $cloud = new Zend_Tag_Cloud(array('tags' => $tags_array, 'cloudDecorator' => array('decorator' => 'HtmlCloud', 'options' => array('htmlTags' => array('div' => array('id' => 'tags')), 'separator' => '&nbsp;&nbsp;&nbsp;')), 'tagDecorator' => array('decorator' => 'HtmlTag', 'options' => array('htmlTags' => array('span' => array('class' => 'cloud')), 'classList' => array('tag1', 'tag2', 'tag3', 'tag4')))));
     return $cloud;
 }
 public function editAction()
 {
     if (!$this->_getParam('id')) {
         throw new Exception('No entry id given or url is wrong');
     }
     $this->view->heading = 'Edited: ';
     $form = new Admin_Form_EntryEdit();
     if (!$this->getRequest()->isPost()) {
         $this->view->heading = 'Edit: ';
         $entry_mapper = new Application_Model_EntryMapper();
         $this->view->entry = $entry_mapper->find($this->_getParam('id'));
         $this->view->entry->getTags();
         if (!$this->view->entry) {
             $this->view->failedFind = true;
             return;
         }
         $form->setElementFilters(array());
         // disable all element filters
         $this->_repopulateForm($form, $this->view->entry);
         $this->view->entryForm = $form;
         return;
     } elseif (!$form->isValid($_POST)) {
         $this->view->failedValidation = true;
         $this->view->heading = 'Edit entry failed';
         $this->view->entryForm = $form;
         return;
     }
     $values = $form->getValues();
     $data = array('id' => $values['id'], 'title' => $values['title'], 'last_modified' => strtotime($values['date']), 'content' => $values['body'], 'extended_content' => $values['extended_body'], 'hide' => $values['hide'], 'description' => $values['description']);
     $entry = new Application_Model_Entry($data);
     $entry_mapper = new Application_Model_EntryMapper();
     $entry_mapper->save($entry);
     $this->view->entrySaved = true;
     $this->view->entry = $entry;
     $tag_string = strtolower($values['tags']);
     $tag_array = explode(',', $tag_string);
     array_walk($tag_array, 'trim');
     $tag_collection = $entry->getTags();
     $tag_array = array_unique($tag_array);
     $tag_mapper = new Application_Model_TagMapper();
     // add new tags
     foreach ($tag_array as $tag) {
         $add = true;
         // if the tag does not already exist
         foreach ($tag_collection as $obj) {
             if ($obj->tag == $tag) {
                 $add = false;
             }
         }
         if ($add) {
             $tag_obj = new Application_Model_Tag(array('tag' => $tag, 'entry' => $data['id']));
             $tag_mapper->save($tag_obj);
         }
     }
     // delete removed tags
     foreach ($tag_collection as $obj) {
         $delete = true;
         // if the tag does exist but is not in the array from the form
         foreach ($tag_array as $tag) {
             if ($obj->tag == $tag) {
                 $delete = false;
             }
         }
         if ($delete) {
             $tag_mapper->delete($obj);
         }
     }
 }
 public function deleteAction()
 {
     //Get travel idea ID
     $request = $this->getRequest();
     $id = $request->getParam("id");
     // Delete travel idea from the database
     $mapper = new Application_Model_IdeaMapper();
     $result = $mapper->delete($id);
     $this->_logger->log('Delete idea result=' . $result, Zend_Log::INFO);
     // Delete related tag from the database
     $mapper = new Application_Model_TagMapper();
     $result = $mapper->deleteByIdeaId($id);
     $this->_logger->log('Delete tag result=' . $result, Zend_Log::INFO);
     $this->_redirector->gotoSimple('search', 'ideas', null, array('option' => 'Member', 'isDisableLayout' => 'false'));
 }