0 %s %s AND r.categories_id = %d GROUP BY at.anidbid ORDER BY at.title ASC', $rsql, $tsql, Category::TV_ANIME ) ); } /** * Retrieves a range of Anime titles for site display. */ public function getAnimeRange(string $animeTitle = ''): LengthAwarePaginator { $query = AnidbTitle::query() ->where('at.lang', '=', 'en'); if ($animeTitle !== '') { $query->where('at.title', 'like', '%'.$animeTitle.'%'); } $query->select(['at.anidbid', DB::raw("GROUP_CONCAT(at.title SEPARATOR ', ') AS title"), 'ai.description']) ->from('anidb_titles as at') ->leftJoin('anidb_info as ai', 'ai.anidbid', '=', 'at.anidbid') ->groupBy('at.anidbid') ->orderByDesc('at.anidbid'); return $query->paginate(config('nntmux.items_per_page')); } /** * Retrieves all info for a specific AniDB ID. */ public function getAnimeInfo(int $anidbID): mixed { $animeInfo = DB::select( sprintf( ' SELECT at.anidbid, at.lang, at.title, ai.startdate, ai.enddate, ai.updated, ai.related, ai.creators, ai.description, ai.rating, ai.picture, ai.categories, ai.characters, ai.type, ai.similar, ae.episodeid, ae .episode_title, ae.episode_no, ae.airdate FROM anidb_titles AS at LEFT JOIN anidb_info AS ai USING (anidbid) LEFT JOIN anidb_episodes ae USING (anidbid) WHERE at.anidbid = %d', $anidbID ) ); return $animeInfo[0] ?? false; } }