/** * Get predb rows by limit and filter. */ public function getPreRange($start = 0, $num, $dirname = '', $category = '') { // Only use Sphinx if this is a search request if ($dirname) { if ($this->pdo->getSetting('sphinxenabled') && $this->pdo->getSetting('sphinxindexpredb')) { // Search using Sphinx $sphinx = new Sphinx(); $results = $sphinx->getPreRange($start, $num, $dirname, $category); if (is_array($results)) { return $results; } } } $dirname = str_replace(' ', '%', $dirname); $dirname = empty($dirname) ? '' : sprintf('WHERE dirname LIKE %s', $this->pdo->escapeString('%' . $dirname . '%')); $category = empty($category) ? '' : sprintf((empty($dirname) ? 'WHERE' : ' AND') . " category = %s", $this->pdo->escapeString($category)); $sql = sprintf('SELECT p.*, r.guid FROM predb p left outer join releases r on p.id = r.preid %s %s ORDER BY ctime DESC LIMIT %d,%d', $dirname, $category, $start, $num); return $this->pdo->query($sql, true); }