diff --git a/Changelog b/Changelog index 2998dbe66..bb2804fb5 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2015-10-22 DariusIII + Upd: Way how failed releases are counted Fix: covgroup and failed notices Fix: List of releases for specific show in myshows Fix: Occurence of rageid diff --git a/newznab/Releases.php b/newznab/Releases.php index c3a06101f..53ebf42b7 100755 --- a/newznab/Releases.php +++ b/newznab/Releases.php @@ -200,36 +200,41 @@ class Releases public function getBrowseRange($cat, $start, $num, $orderBy, $maxAge = -1, $excludedCats = [], $groupName = '') { $orderBy = $this->getBrowseOrder($orderBy); - return $this->pdo->query( - sprintf( - "SELECT r.*, + + $qry = sprintf( + "SELECT r.*, CONCAT(cp.title, ' > ', c.title) AS category_name, CONCAT(cp.id, ',', c.id) AS category_ids, - (SELECT COUNT(userid) FROM dnzb_failures WHERE guid = r.guid) AS failed, + COUNT(df.id) AS failed, g.name AS group_name, rn.id AS nfoid, - re.releaseid AS reid + re.releaseid AS reid, + tve.title, tve.firstaired FROM releases r STRAIGHT_JOIN groups g ON g.id = r.groupid STRAIGHT_JOIN category c ON c.id = r.categoryid INNER JOIN category cp ON cp.id = c.parentid + LEFT OUTER JOIN tv_episodes tve ON r.tv_episodes_id = tve.id LEFT OUTER JOIN releasevideo re ON re.releaseid = r.id LEFT OUTER JOIN releasenfo rn ON rn.releaseid = r.id + LEFT OUTER JOIN dnzb_failures df ON df.guid = r.guid WHERE r.nzbstatus = %d AND r.passwordstatus %s %s %s %s %s + GROUP BY r.id 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.categoryid NOT IN (' . implode(',', $excludedCats) . ')') : ''), - ($groupName != '' ? sprintf(' AND g.name = %s ', $this->pdo->escapeString($groupName)) : ''), - $orderBy[0], - $orderBy[1], - ($start === false ? '' : ' LIMIT ' . $num . ' OFFSET ' . $start) - ), true, NN_CACHE_EXPIRY_MEDIUM + NZB::NZB_ADDED, + $this->showPasswords, + $this->categorySQL($cat), + ($maxAge > 0 ? (" AND postdate > NOW() - INTERVAL " . $maxAge . ' DAY ') : ''), + (count($excludedCats) ? (' AND r.categoryid NOT IN (' . implode(',', $excludedCats) . ')') : ''), + ($groupName != '' ? sprintf(' AND g.name = %s ', $this->pdo->escapeString($groupName)) : ''), + $orderBy[0], + $orderBy[1], + ($start === false ? '' : ' LIMIT ' . $num . ' OFFSET ' . $start) ); + $sql = $this->pdo->query($qry, true, NN_CACHE_EXPIRY_MEDIUM); + return $sql; } /** @@ -470,18 +475,23 @@ class Releases CONCAT(cp.title, '-', c.title) AS category_name, %s AS category_ids, groups.name AS group_name, - rn.id AS nfoid, re.releaseid AS reid + rn.id AS nfoid, re.releaseid AS reid, + tve.firstaired, + COUNT(df.id) AS failed FROM releases r LEFT OUTER JOIN releasevideo re ON re.releaseid = r.id INNER JOIN groups ON groups.id = r.groupid LEFT OUTER JOIN releasenfo rn ON rn.releaseid = r.id + LEFT OUTER JOIN tv_episodes tve ON tve.videos_id = r.videos_id INNER JOIN category c ON c.id = r.categoryid INNER JOIN category cp ON cp.id = c.parentid + LEFT OUTER JOIN dnzb_failures df ON df.guid = r.guid WHERE %s %s AND r.nzbstatus = %d AND r.categoryid BETWEEN 5000 AND 5999 AND r.passwordstatus %s %s + GROUP BY r.id ORDER BY %s %s %s", $this->getConcatenatedCategoryIDs(), $this->uSQL($userShows, 'videos_id'), @@ -869,17 +879,20 @@ class Releases "SELECT r.*, CONCAT(cp.title, ' > ', c.title) AS category_name, %s AS category_ids, - (SELECT COUNT(userid) FROM dnzb_failures WHERE guid = r.guid) AS failed, groups.name AS group_name, rn.id AS nfoid, re.releaseid AS reid, - cp.id AS categoryparentid + cp.id AS categoryparentid, + tve.firstaired, + COUNT(df.id) AS failed FROM releases r LEFT OUTER JOIN releasevideo re ON re.releaseid = r.id + LEFT OUTER JOIN tv_episodes tve ON r.tv_episodes_id = tve.id LEFT OUTER JOIN releasenfo rn ON rn.releaseid = r.id INNER JOIN groups ON groups.id = r.groupid INNER JOIN category c ON c.id = r.categoryid INNER JOIN category cp ON cp.id = c.parentid + LEFT OUTER JOIN dnzb_failures df ON df.guid = r.guid %s", $this->getConcatenatedCategoryIDs(), $whereSql