Exemple #1
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();
 }