/** * Save an entry * * @return void */ public function saveTask() { // Check for request forgeries Request::checkToken(); // Incoming $fields = Request::getVar('fields', array(), 'post', 'none', 2); $fields = array_map('trim', $fields); // Initiate extended database class $row = new Wish($this->database); if (!$row->bind($fields)) { $this->setError($row->getError()); $this->editTask($row); return; } $row->anonymous = isset($fields['anonymous']) && $fields['anonymous'] ? 1 : 0; $row->private = isset($fields['private']) && $fields['private'] ? 1 : 0; $row->accepted = isset($fields['accepted']) && $fields['accepted'] ? 1 : 0; // Check content if (!$row->check()) { $this->setError($row->getError()); $this->editTask($row); return; } // Store new content if (!$row->store()) { $this->setError($row->getError()); $this->editTask($row); return; } include_once dirname(dirname(__DIR__)) . DS . 'models' . DS . 'tags.php'; $tagging = new Tags($row->id); $tagging->setTags($fields['tags'], User::get('id')); $plan = Request::getVar('plan', array(), 'post', 'none', 2); $plan['create_revision'] = isset($plan['create_revision']) ? $plan['create_revision'] : 0; $plan['wishid'] = $plan['wishid'] ? $plan['wishid'] : $row->id; // Initiate extended database class $page = new Plan($this->database); if (!$fields['id']) { // New page - save it to the database $old = new Plan($this->database); } else { // Existing page - load it up $page->load($plan['id']); // Get the revision before changes $old = $page; } $page->bind($plan); if ($plan['create_revision'] && rtrim(stripslashes($old->pagetext)) != rtrim(stripslashes($page->pagetext))) { $page->version = $page->version + 1; $page->id = 0; } if ($page->pagetext) { $page->version = $page->version ? $page->version : $page->version + 1; if (!$page->check()) { $this->setError($page->getError()); $this->editTask($row); return; } if (!$page->store()) { $this->setError($page->getError()); $this->editTask($row); return; } } if ($this->getTask() == 'apply') { return $this->editTask($row); } // Redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&wishlist=' . $row->wishlist, false), Lang::txt('COM_WISHLIST_WISH_SAVED')); }
/** * Get an entry ID based off of some filtrs * * @param string $which Sort records * @param integer $id Wish ID * @param integer $listid List ID * @param integer $admin Admin access? * @param integer $uid User ID. * @param array $filters Filters to build query from * @return mixed False if error, integer on success */ public function getWishID($which, $id, $listid, $admin, $uid, $filters = array()) { if ($which === NULL or $id === NULL or $listid === NULL) { return false; } $query = "SELECT ws.id "; $query .= "FROM #__wishlist_item AS ws "; if (isset($filters['tag']) && $filters['tag'] != '') { $query .= "\n JOIN #__tags_object AS RTA ON RTA.objectid=ws.id AND RTA.tbl='wishlist' "; $query .= "\n INNER JOIN #__tags AS TA ON RTA.tagid=TA.id "; } $query .= "WHERE ws.wishlist=" . $this->_db->quote($listid) . " AND "; $query .= $which == 'prev' ? "ws.id < " . $this->_db->quote($id) . " " : "ws.id > " . $this->_db->quote($id); if (isset($filters['filterby'])) { switch ($filters['filterby']) { case 'all': $query .= ' AND ws.status!=2'; break; case 'granted': $query .= ' AND ws.status=1'; break; case 'open': $query .= ' AND ws.status=0'; break; case 'accepted': $query .= ' AND ws.accepted=1 AND ws.status=0'; break; case 'pending': $query .= ' AND ws.accepted=0 AND ws.status=0'; break; case 'rejected': $query .= ' AND ws.status=3'; break; case 'withdrawn': $query .= ' AND ws.status=4'; break; case 'deleted': $query .= ' AND ws.status=2'; break; case 'useraccepted': $query .= ' AND ws.accepted=3 AND ws.status!=2'; break; case 'private': $query .= ' AND ws.status!=2 AND ws.private=1'; break; case 'public': $query .= ' AND ws.status!=2 AND ws.private=0'; break; case 'mine': if ($uid) { $query .= ' AND ws.assigned="' . $uid . '" AND ws.status!=2'; } break; case 'assigned': $query .= ' AND ws.assigned NOT NULL AND ws.status!=2'; break; default: $query .= ' AND ws.status!=2'; break; } } else { $query .= ' AND ws.status!=2'; } if (!$admin) { $query .= "\n AND ws.private='0' "; } if (isset($filters['tag']) && $filters['tag'] != '') { $tagging = new Tags(); $tags = $tagging->parseTags($filters['tag']); $query .= " AND (RTA.objectid=ws.id AND (RTA.tbl='wishlist') AND (TA.tag IN ('" . implode("','", $tags) . "') OR TA.raw_tag IN ('" . implode("','", $tags) . "')))"; $query .= " GROUP BY ws.id "; } $query .= $which == 'prev' ? " ORDER BY ws.id DESC " : " ORDER BY ws.id ASC "; $query .= " LIMIT 1"; $this->_db->setQuery($query); return $this->_db->loadResult(); }