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; }
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' => ' ')), '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')); }