public function fetch_all_by_id_idtype($id, $idtype, $start = 0, $limit = 0) { $parameter = array($this->_table, $this->_membertable); $wherearr = array(); $parameter[] = $id; $wherearr[] = "f.id=%d"; if (!empty($idtype)) { $parameter[] = $idtype; $wherearr[] = "f.idtype=%s"; } $wheresql = !empty($wherearr) && is_array($wherearr) ? ' WHERE ' . implode(' AND ', $wherearr) : ''; return XDB::fetch_all("SELECT f.*,m.username FROM %t as f\n\t\t LEFT JOIN %t as m ON f.uid = m.uid\t\t\n\t\t {$wheresql} ORDER BY f.dateline DESC " . XDB::limit($start, $limit), $parameter, $this->_pk); }
public function fetch_all_for_manage($tableid, $inforum = '', $authorid = 0, $filename = '', $keyword = '', $sizeless = 0, $sizemore = 0, $dlcountless = 0, $dlcountmore = 0, $daysold = 0, $count = 0, $start = 0, $limit = 0) { $sql = "1"; if (!is_numeric($tableid) || $tableid < 0 || $tableid > 9) { return; } if ($inforum) { $sql .= is_numeric($inforum) ? " AND t.fid=" . XDB::quote($inforum) : ''; $sql .= $inforum == 'isgroup' ? ' AND t.isgroup=\'1\'' : ' AND t.isgroup=\'0\''; } if ($authorid) { $sql .= " AND a.uid=" . XDB::quote($authorid); } if ($filename) { $sql .= " AND a.filename LIKE " . XDB::quote('%' . $filename . '%'); } if ($keyword) { $sqlkeywords = $or = ''; foreach (explode(',', str_replace(' ', '', $keyword)) as $keyword) { $sqlkeywords .= " {$or} a.description LIKE " . XDB::quote('%' . $keyword . '%'); $or = 'OR'; } $sql .= " AND ({$sqlkeywords})"; } $sql .= $sizeless ? " AND a.filesize>'{$sizeless}'" : ''; $sql .= $sizemore ? " AND a.filesize<'{$sizemore}' " : ''; $sql .= $dlcountless ? " AND ai.downloads<'{$dlcountless}'" : ''; $sql .= $dlcountmore ? " AND ai.downloads>'{$dlcountmore}'" : ''; $sql .= $daysold ? " AND a.dateline<'" . (TIMESTAMP - intval($daysold) * 86400) . "'" : ''; if ($count) { return XDB::result_first("SELECT COUNT(*)\n\t\t\t\tFROM " . XDB::table('forum_attachment_' . $tableid) . " a\n\t\t\t\tINNER JOIN " . XDB::table('forum_attachment') . " ai USING(aid)\n\t\t\t\tINNER JOIN " . XDB::table('forum_thread') . " t\n\t\t\t\tINNER JOIN " . XDB::table('forum_forum') . " f\n\t\t\t\tWHERE t.tid=a.tid AND f.fid=t.fid AND t.displayorder>='0' AND {$sql}"); } return XDB::fetch_all("SELECT a.*, ai.downloads, t.fid, t.tid, t.subject, f.name AS fname\n\t\t\t\tFROM " . XDB::table('forum_attachment_' . $tableid) . " a\n\t\t\t\tINNER JOIN " . XDB::table('forum_attachment') . " ai USING(aid)\n\t\t\t\tINNER JOIN " . XDB::table('forum_thread') . " t\n\t\t\t\tINNER JOIN " . XDB::table('forum_forum') . " f\n\t\t\t\tWHERE t.tid=a.tid AND f.fid=t.fid AND t.displayorder>='0' AND {$sql} ORDER BY a.aid DESC " . XDB::limit($start, $limit)); }
public function fetch_all_for_ranklist($status, $type, $orderfield, $start = 0, $limit = 0, $ignorefids = array()) { if (empty($orderfield)) { return array(); } $typesql = $type ? ' AND f.' . XDB::field('type', $type) : ' AND f.type<>\'group\''; $ignoresql = $ignorefids ? ' AND f.fid NOT IN(' . dimplode($ignorefids) . ')' : ''; if ($orderfield == 'membernum') { $fields = ', ff.membernum'; $jointable = ' LEFT JOIN ' . XDB::table('forum_forumfield') . ' ff ON ff.fid=f.fid'; $orderfield = 'ff.' . $orderfield; } return XDB::fetch_all("SELECT f.* {$fields} FROM %t f {$jointable} WHERE f.status=%d {$typesql} {$ignoresql} ORDER BY %i DESC " . XDB::limit($start, $limit), array($this->_table, $status, $orderfield)); }
public function fetch_all_group_for_user($uid, $count = 0, $ismanager = 0, $start = 0, $num = 0) { $uid = intval($uid); if (empty($uid)) { return array(); } if (empty($ismanager)) { $levelsql = ''; } elseif ($ismanager == 1) { $levelsql = ' AND level IN(1,2)'; } elseif ($ismanager == 2) { $levelsql = ' AND level IN(3,4)'; } if ($count == 1) { return XDB::result_first("SELECT count(*) FROM " . XDB::table('forum_groupuser') . " WHERE uid='{$uid}' {$levelsql}"); } empty($start) && ($start = 0); empty($num) && ($num = 100); return XDB::fetch_all("SELECT fid, level FROM " . XDB::table('forum_groupuser') . " WHERE uid='{$uid}' {$levelsql} ORDER BY lastupdate DESC " . XDB::limit($start, $num)); }
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 : ''); }
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); } }
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); }
public function fetch_all_recyclebin_by_dateline($dateline, $start = 0, $limit = 0) { return XDB::fetch_all("SELECT tm.tid FROM %t tm, %t t WHERE tm.action='DEL' AND tm.dateline<%d AND t.tid=tm.tid AND t.displayorder=-1" . XDB::limit($start, $limit), array($this->_table, 'forum_thread', $dateline)); }
public function fetch_all_prune_by_search($tableid, $isgroup = null, $keywords = null, $message_length = null, $fid = null, $authorid = null, $starttime = null, $endtime = null, $useip = null, $outmsg = true, $start = null, $limit = null) { $sql = ''; $sql .= $fid ? ' AND p.' . XDB::field('fid', $fid) : ''; $sql .= $isgroup ? ' AND t.' . XDB::field('isgroup', $isgroup) : ''; $sql .= $authorid !== null ? ' AND p.' . XDB::field('authorid', $authorid) : ''; $sql .= $starttime ? ' AND p.' . XDB::field('dateline', $starttime, '>=') : ''; $sql .= $endtime ? ' AND p.' . XDB::field('dateline', $endtime, '<') : ''; $sql .= $useip ? ' AND p.' . XDB::field('useip', $useip, 'like') : ''; $sql .= $message_length !== null ? ' AND LENGTH(p.message) < ' . intval($message_length) : ''; $postlist = array(); if (trim($keywords)) { $sqlkeywords = ''; $or = ''; $keywords = explode(',', str_replace(' ', '', $keywords)); for ($i = 0; $i < count($keywords); $i++) { if (preg_match("/\\{(\\d+)\\}/", $keywords[$i])) { $keywords[$i] = preg_replace("/\\\\{(\\d+)\\\\}/", ".{0,\\1}", preg_quote($keywords[$i], '/')); $sqlkeywords .= " {$or} p.subject REGEXP '" . $keywords[$i] . "' OR p.message REGEXP '" . $keywords[$i] . "'"; } else { $keywords[$i] = addslashes($keywords[$i]); $sqlkeywords .= " {$or} p.subject LIKE '%" . $keywords[$i] . "%' OR p.message LIKE '%" . $keywords[$i] . "%'"; } $or = 'OR'; } $sql .= " AND ({$sqlkeywords})"; } if ($sql) { if ($isgroup) { $query = XDB::query('SELECT p.*, t.* FROM %t p LEFT JOIN %t t USING(tid) WHERE 1 %i %i', array(self::get_tablename($tableid), 'forum_thread', $sql, XDB::limit($start, $limit))); } else { $query = XDB::query('SELECT * FROM %t p WHERE 1 %i %i', array(self::get_tablename($tableid), $sql, XDB::limit($start, $limit))); } while ($post = XDB::fetch($query)) { if (!$outmsg) { unset($post['message']); } $postlist[$post[$this->_pk]] = $post; } } return $postlist; }
public function fetch_all_by_id($tableid, $idtype, $ids, $orderby = '', $isimage = false, $isprice = false, $remote = false, $limit = false) { if ($this->_check_id($idtype, $ids)) { $attachments = array(); if ($orderby) { $orderby = 'ORDER BY ' . $orderby; } $isimage = $isimage === false ? '' : ' AND ' . XDB::field('isimage', $isimage); $isprice = $isprice === false ? '' : ' AND ' . XDB::field('price', 0, '>'); $remote = $remote === false ? '' : ' AND ' . XDB::field('remote', $remote); $limit = $limit < 1 ? '' : XDB::limit(0, $limit); $query = XDB::query("SELECT * FROM %t WHERE %i %i %i %i %i %i", array($this->_get_table($tableid), XDB::field($idtype, $ids), $isimage, $isprice, $remote, $orderby, $limit)); while ($value = XDB::fetch($query)) { $attachments[$value['aid']] = $value; } return $attachments; } else { return array(); } }