From f46bc1f1f515cedbafa2ebfa7af838340eaec036 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Wed, 25 May 2016 23:48:39 +0200 Subject: [PATCH] Fix browse once more --- newznab/Releases.php | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/newznab/Releases.php b/newznab/Releases.php index e033e064b..d919e2a99 100755 --- a/newznab/Releases.php +++ b/newznab/Releases.php @@ -193,7 +193,7 @@ class Releases * @param int $maxAge * @param array $excludedCats * @param string $groupName - * @param string $minSize + * @param int $minSize * * @return array */ @@ -201,6 +201,37 @@ class Releases { $orderBy = $this->getBrowseOrder($orderBy); + $releases = $this->pdo->queryCalc( + sprintf(" + SELECT SQL_CALC_FOUND_ROWS + r.id + FROM releases r + LEFT JOIN groups g ON g.id = r.groups_id + WHERE r.nzbstatus = %d + AND r.passwordstatus %s + %s %s %s %s %s + ORDER BY %s %s %s", + NZB::NZB_ADDED, + $this->showPasswords, + $this->categorySQL($cat), + ($maxAge > 0 ? (" AND postdate > NOW() - INTERVAL " . $maxAge . ' DAY ') : ''), + (count($excludedCats) ? (' AND r.categories_id NOT IN (' . implode(',', $excludedCats) . ')') : ''), + ($groupName != '' ? sprintf(' AND g.name = %s ', $this->pdo->escapeString($groupName)) : ''), + ($minSize > 0 ? sprintf('AND r.size >= %d', $minSize) : ''), + $orderBy[0], + $orderBy[1], + ($start === false ? '' : ' LIMIT ' . $num . ' OFFSET ' . $start) + ), + true, + NN_CACHE_EXPIRY_MEDIUM + ); + + if (is_array($releases['result'])) { + foreach ($releases['result'] as $release => $id) { + $releaseIDs[] = $id['id']; + } + } + $qry = sprintf( "SELECT r.*, CONCAT(cp.title, ' > ', c.title) AS category_name, @@ -222,8 +253,7 @@ class Releases ORDER BY %s %s", (isset($releaseIDs) ? implode(',', $releaseIDs) : -1), $orderBy[0], - $orderBy[1], - ($start === false ? '' : ' LIMIT ' . $num . ' OFFSET ' . $start) + $orderBy[1] ); $sql = $this->pdo->query($qry, true, NN_CACHE_EXPIRY_MEDIUM);