예제 #1
0
 public function fetch_all_by_upid($upid, $order = null, $sort = 'DESC')
 {
     $upid = is_array($upid) ? array_map('intval', (array) $upid) : dintval($upid);
     if ($upid !== null) {
         $ordersql = $order !== null && !empty($order) ? ' ORDER BY ' . XDB::order($order, $sort) : '';
         return XDB::fetch_all('SELECT * FROM %t WHERE ' . XDB::field('upid', $upid) . " {$ordersql}", array($this->_table), $this->_pk);
     }
     return array();
 }
예제 #2
0
 public function fetch_all_by_id($idtype, $ids, $orderby = '')
 {
     $attachments = array();
     if ($orderby) {
         $orderby = 'ORDER BY ' . XDB::order($orderby, 'DESC');
     }
     if (in_array($idtype, array('aid', 'tid', 'pid', 'uid')) && $ids) {
         $query = XDB::query("SELECT * FROM %t WHERE %i IN (%n) %i", array($this->_table, $idtype, (array) $ids, $orderby));
         while ($value = XDB::fetch($query)) {
             $attachments[$value['aid']] = $value;
             $this->_tableids[$value['tableid']][] = $value['aid'];
         }
     }
     return $attachments;
 }
예제 #3
0
 public function range($start = 0, $limit = 0, $sort = '')
 {
     if ($sort) {
         $this->checkpk();
     }
     return XDB::fetch_all('SELECT * FROM ' . XDB::table($this->_table) . ($sort ? ' ORDER BY ' . XDB::order($this->_pk, $sort) : '') . XDB::limit($start, $limit), null, $this->_pk ? $this->_pk : '');
 }
예제 #4
0
 public function fetch_all_by_search($fetchtype, $uids, $albumname, $searchname, $catid, $starttime, $endtime, $albumids, $friend = '', $orderfield = '', $ordersort = 'DESC', $start = 0, $limit = 0, $findex = '')
 {
     $parameter = array($this->_table);
     $wherearr = array();
     if (is_array($uids) && count($uids)) {
         $parameter[] = $uids;
         $wherearr[] = 'uid IN(%n)';
     }
     if ($albumname) {
         if ($searchname == false) {
             $parameter[] = $albumname;
             $wherearr[] = 'albumname=%s';
         } else {
             $parameter[] = '%' . $albumname . '%';
             $wherearr[] = 'albumname LIKE %s';
         }
     }
     if ($catid) {
         $parameter[] = $catid;
         $wherearr[] = 'catid=%d';
     }
     if ($starttime) {
         $parameter[] = is_numeric($starttime) ? $starttime : strtotime($starttime);
         $wherearr[] = 'dateline>%d';
     }
     if ($endtime) {
         $parameter[] = is_numeric($endtime) ? $endtime : strtotime($endtime);
         $wherearr[] = 'dateline<%d';
     }
     if (is_numeric($friend)) {
         $parameter[] = $friend;
         $wherearr[] = 'friend=%d';
     }
     if (is_array($albumids) && count($albumids)) {
         $parameter[] = $albumids;
         $wherearr[] = 'albumid IN(%n)';
     }
     if ($fetchtype == 3) {
         $selectfield = "count(*)";
     } elseif ($fetchtype == 2) {
         $selectfield = "albumid";
     } else {
         $selectfield = "*";
         if (is_string($orderfield) && ($order = XDB::order($orderfield, $ordersort))) {
             $ordersql = 'ORDER BY ' . $order;
         }
         if ($limit) {
             $parameter[] = XDB::limit($start, $limit);
             $ordersql .= ' %i';
         }
     }
     if ($findex) {
         $findex = 'USE INDEX(updatetime)';
     }
     $wheresql = !empty($wherearr) && is_array($wherearr) ? ' WHERE ' . implode(' AND ', $wherearr) : '';
     if ($fetchtype == 3) {
         return XDB::result_first("SELECT {$selectfield} FROM %t {$wheresql}", $parameter);
     } else {
         return XDB::fetch_all("SELECT {$selectfield} FROM %t {$findex} {$wheresql} {$ordersql}", $parameter);
     }
 }
예제 #5
0
 public function fetch_all_by_special($special, $authorid = 0, $replies = 0, $displayorder = null, $subject = '', $join = 0, $start = 0, $limit = 0, $order = 'dateline', $sort = 'DESC')
 {
     $condition = $this->make_special_condition($special, $authorid, $replies, $displayorder, $subject, $join, 0);
     $ordersql = !empty($order) ? ' ORDER BY t.' . XDB::order($order, $sort) : '';
     return XDB::fetch_all("SELECT t.* FROM %t t {$condition['jointable']} " . $condition['where'] . $ordersql . XDB::limit($start, $limit), $condition['parameter'], $this->_pk);
 }
예제 #6
0
 public function fetch_all_new_post_by_pid($pid, $start = 0, $limit = 0, $tableid = 0, $glue = '>', $sort = 'ASC')
 {
     return $limit ? XDB::fetch_all('SELECT * FROM ' . XDB::table($this->get_tablename($tableid)) . ' WHERE ' . XDB::field('pid', $pid, $glue) . ' ORDER BY ' . XDB::order('pid', $sort) . XDB::limit($start, $limit), $this->_pk) : array();
 }