Example #1
0
 /**
  * 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'));
 }
Example #2
0
 /**
  * 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();
 }