| Conditions | 17 |
| Paths | 12288 |
| Total Lines | 76 |
| Code Lines | 67 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 26 | public function getMovieRange(int $page, array $cat, int $start, int $num, string $orderBy, int $maxAge = -1, array $excludedCats = []): mixed |
||
| 27 | { |
||
| 28 | $page = max(1, $page); |
||
| 29 | $start = max(0, $start); |
||
| 30 | $catsrch = ''; |
||
| 31 | if (count($cat) > 0 && $cat[0] !== -1) { |
||
| 32 | $catsrch = Category::getCategorySearch($cat); |
||
| 33 | } |
||
| 34 | $order = $this->getMovieOrder($orderBy); |
||
| 35 | $expiresAt = now()->addMinutes(config('nntmux.cache_expiry_medium')); |
||
| 36 | $whereAge = $maxAge > 0 ? 'AND r.postdate > NOW() - INTERVAL '.$maxAge.' DAY ' : ''; |
||
| 37 | $whereExcluded = count($excludedCats) > 0 ? ' AND r.categories_id NOT IN ('.implode(',', $excludedCats).')' : ''; |
||
| 38 | $limitClause = $start === false ? '' : ' LIMIT '.$num.' OFFSET '.$start; |
||
| 39 | $moviesSql = "SELECT SQL_CALC_FOUND_ROWS m.imdbid, GROUP_CONCAT(r.id ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_id " |
||
| 40 | ."FROM movieinfo m LEFT JOIN releases r USING (imdbid) WHERE m.title != '' AND m.imdbid != '0000000' " |
||
| 41 | ."AND r.passwordstatus {$this->showPasswords} " |
||
| 42 | .$this->getBrowseBy().' ' |
||
| 43 | .(! empty($catsrch) ? $catsrch.' ' : '') |
||
| 44 | .$whereAge |
||
| 45 | .$whereExcluded.' ' |
||
| 46 | ."GROUP BY m.imdbid ORDER BY {$order[0]} {$order[1]} {$limitClause}"; |
||
| 47 | $movieCache = Cache::get(md5($moviesSql.$page)); |
||
| 48 | if ($movieCache !== null) { |
||
| 49 | $movies = $movieCache; |
||
| 50 | } else { |
||
| 51 | $data = MovieInfo::fromQuery($moviesSql); |
||
| 52 | $movies = ['total' => DB::select('SELECT FOUND_ROWS() AS total'), 'result' => $data]; |
||
| 53 | Cache::put(md5($moviesSql.$page), $movies, $expiresAt); |
||
| 54 | } |
||
| 55 | $movieIDs = $releaseIDs = []; |
||
| 56 | if (! empty($movies['result'])) { |
||
| 57 | foreach ($movies['result'] as $id) { |
||
| 58 | $movieIDs[] = $id->imdbid; |
||
| 59 | $releaseIDs[] = $id->grp_release_id; |
||
| 60 | } |
||
| 61 | } |
||
| 62 | $inMovieIds = (is_array($movieIDs) && ! empty($movieIDs)) ? implode(',', $movieIDs) : -1; |
||
| 63 | $inReleaseIds = (is_array($releaseIDs) && ! empty($releaseIDs)) ? implode(',', $releaseIDs) : -1; |
||
| 64 | $sql = 'SELECT ' |
||
| 65 | ."GROUP_CONCAT(r.id ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_id, " |
||
| 66 | ."GROUP_CONCAT(r.rarinnerfilecount ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_rarinnerfilecount, " |
||
| 67 | ."GROUP_CONCAT(r.haspreview ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_haspreview, " |
||
| 68 | ."GROUP_CONCAT(r.passwordstatus ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_password, " |
||
| 69 | ."GROUP_CONCAT(r.guid ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_guid, " |
||
| 70 | ."GROUP_CONCAT(rn.releases_id ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_nfoid, " |
||
| 71 | ."GROUP_CONCAT(g.name ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_grpname, " |
||
| 72 | ."GROUP_CONCAT(r.searchname ORDER BY r.postdate DESC SEPARATOR '#') AS grp_release_name, " |
||
| 73 | ."GROUP_CONCAT(r.postdate ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_postdate, " |
||
| 74 | ."GROUP_CONCAT(r.adddate ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_adddate, " |
||
| 75 | ."GROUP_CONCAT(r.size ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_size, " |
||
| 76 | ."GROUP_CONCAT(r.totalpart ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_totalparts, " |
||
| 77 | ."GROUP_CONCAT(r.comments ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_comments, " |
||
| 78 | ."GROUP_CONCAT(r.grabs ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_grabs, " |
||
| 79 | ."GROUP_CONCAT(df.failed ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_failed, " |
||
| 80 | ."GROUP_CONCAT(cp.title, ' > ', c.title ORDER BY r.postdate DESC SEPARATOR ',' ) AS grp_release_catname, " |
||
| 81 | .'m.*, g.name AS group_name, rn.releases_id AS nfoid FROM releases r ' |
||
| 82 | .'LEFT OUTER JOIN usenet_groups g ON g.id = r.groups_id ' |
||
| 83 | .'LEFT OUTER JOIN release_nfos rn ON rn.releases_id = r.id ' |
||
| 84 | .'LEFT OUTER JOIN dnzb_failures df ON df.release_id = r.id ' |
||
| 85 | .'LEFT OUTER JOIN categories c ON c.id = r.categories_id ' |
||
| 86 | .'LEFT OUTER JOIN root_categories cp ON cp.id = c.root_categories_id ' |
||
| 87 | .'INNER JOIN movieinfo m ON m.imdbid = r.imdbid ' |
||
| 88 | ."WHERE m.imdbid IN ($inMovieIds) AND r.id IN ($inReleaseIds) " |
||
| 89 | .(! empty($catsrch) ? $catsrch.' ' : '') |
||
| 90 | ."GROUP BY m.imdbid ORDER BY {$order[0]} {$order[1]}"; |
||
| 91 | $return = Cache::get(md5($sql.$page)); |
||
| 92 | if ($return !== null) { |
||
| 93 | return $return; |
||
| 94 | } |
||
| 95 | $return = Release::fromQuery($sql); |
||
| 96 | if (count($return) > 0) { |
||
|
|
|||
| 97 | $return[0]->_totalcount = $movies['total'][0]->total ?? 0; |
||
| 98 | } |
||
| 99 | Cache::put(md5($sql.$page), $return, $expiresAt); |
||
| 100 | |||
| 101 | return $return; |
||
| 102 | } |
||
| 185 |