From 4bca02f10307320e7a1ec4b99d1b6bd31b628e24 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Wed, 11 Mar 2026 10:11:30 +0100 Subject: [PATCH] Latest pint fixes --- app/Console/Commands/CreateMediaIndexes.php | 3 +- app/Console/Commands/NntmuxCheckIndex.php | 10 +-- app/Console/Commands/TmuxAttach.php | 3 +- app/Console/Commands/TmuxStart.php | 8 ++- app/Events/UserAccessedApi.php | 3 +- app/Events/UserLoggedIn.php | 5 +- app/Exceptions/Handler.php | 21 ++++--- app/Extensions/helper/helpers.php | 52 +++++++++------- app/Facades/Categorization.php | 2 +- app/Facades/Elasticsearch.php | 3 +- app/Facades/Search.php | 2 +- app/Facades/TvProcessing.php | 2 +- app/Facades/Yenc.php | 5 +- .../Admin/AdminBlacklistController.php | 4 +- .../Admin/AdminCategoryController.php | 8 ++- .../Admin/AdminCategoryRegexesController.php | 4 +- .../AdminCollectionRegexesController.php | 4 +- .../Admin/AdminContentController.php | 6 +- .../Admin/AdminGroupController.php | 4 +- .../Admin/AdminInvitationController.php | 5 +- .../Admin/AdminMovieController.php | 6 +- .../AdminReleaseNamingRegexesController.php | 4 +- .../Admin/AdminReleaseReportController.php | 2 +- .../Admin/AdminReleasesController.php | 6 +- .../Controllers/Admin/AdminSiteController.php | 4 +- app/Http/Controllers/Api/ApiController.php | 3 +- .../Controllers/Api/ApiInformController.php | 3 +- app/Http/Controllers/Api/ApiV2Controller.php | 4 +- app/Http/Controllers/Api/RSS.php | 5 +- .../Auth/ForgotPasswordController.php | 13 ++-- app/Http/Controllers/Auth/LoginController.php | 5 +- app/Http/Controllers/CartController.php | 3 +- app/Http/Controllers/ConsoleController.php | 3 +- app/Http/Controllers/ContactUsController.php | 9 ++- app/Http/Controllers/ContentController.php | 4 +- app/Http/Controllers/DetailsController.php | 5 +- app/Http/Controllers/GamesController.php | 3 +- app/Http/Controllers/GetNzbController.php | 5 +- app/Http/Controllers/MovieController.php | 17 +++-- app/Http/Controllers/MusicController.php | 3 +- .../PasswordSecurityController.php | 23 ++++--- app/Http/Middleware/ForceJsonOnAPI.php | 2 +- app/Http/Middleware/SetUserTimezone.php | 2 +- app/Http/Resources/AnidbResource.php | 3 +- app/Http/Resources/BookResource.php | 3 +- app/Http/Resources/MovieResource.php | 3 +- app/Jobs/SendAccountWillExpireEmail.php | 5 +- app/Jobs/SendInviteEmail.php | 5 +- app/Livewire/Forms/LoginForm.php | 2 +- app/Mail/AccountDeleted.php | 3 +- app/Mail/AccountExpired.php | 5 +- app/Mail/AccountWillExpire.php | 5 +- app/Mail/InvitationMail.php | 3 +- app/Mail/NewAccountCreatedEmail.php | 3 +- app/Models/AnidbEpisode.php | 7 ++- app/Models/AnidbInfo.php | 4 +- app/Models/AnidbTitle.php | 5 +- app/Models/BookInfo.php | 7 ++- app/Models/Category.php | 11 ++-- app/Models/ConsoleInfo.php | 9 +-- app/Models/DnzbFailure.php | 4 +- app/Models/Forumpost.php | 5 +- app/Models/GamesInfo.php | 12 ++-- app/Models/Genre.php | 8 +-- app/Models/Invitation.php | 17 ++--- app/Models/MovieInfo.php | 5 +- app/Models/MusicInfo.php | 7 ++- app/Models/PasswordSecurity.php | 2 +- app/Models/Predb.php | 4 +- app/Models/PredbHash.php | 2 +- app/Models/Release.php | 34 +++++----- app/Models/ReleaseComment.php | 9 +-- app/Models/ReleaseNfo.php | 2 +- app/Models/ReleaseReport.php | 6 +- app/Models/ReleasesGroups.php | 4 +- app/Models/RoleExpirationEmail.php | 5 +- app/Models/RolePromotion.php | 11 ++-- app/Models/RolePromotionStat.php | 28 +++++---- app/Models/RootCategory.php | 8 ++- app/Models/TvEpisode.php | 7 ++- app/Models/UsenetGroup.php | 8 ++- app/Models/User.php | 24 +++---- app/Models/UserDownload.php | 13 ++-- app/Models/UserExcludedCategory.php | 13 ++-- app/Models/UserMovie.php | 8 ++- app/Models/UserRequest.php | 5 +- app/Models/UserRoleHistory.php | 14 +++-- app/Models/UserSerie.php | 10 +-- app/Models/UsersRelease.php | 12 ++-- app/Models/Video.php | 18 +++--- app/Models/VideoAlias.php | 2 +- app/Observers/UserActivityObserver.php | 3 +- app/Observers/UserServiceObserver.php | 3 +- app/Providers/AppServiceProvider.php | 3 +- .../MediaExtractionService.php | 7 ++- .../ReleaseFileManager.php | 11 ++-- app/Services/Backfill/BackfillService.php | 4 +- app/Services/BookService.php | 3 +- .../Categorization/CategorizationService.php | 5 +- app/Services/GamesService.php | 3 +- app/Services/GenreService.php | 2 +- app/Services/IGDBService.php | 17 ++--- app/Services/ItunesService.php | 3 +- app/Services/MediaProcessingService.php | 7 ++- app/Services/MovieBrowseService.php | 3 +- app/Services/MovieService.php | 3 +- app/Services/NNTP/NNTPService.php | 4 +- app/Services/NameFixing/NameFixingService.php | 3 +- app/Services/Nzb/NzbImportService.php | 3 +- app/Services/Nzb/NzbService.php | 3 +- app/Services/PostProcessService.php | 3 +- app/Services/ReleaseCreationService.php | 2 +- app/Services/ReleaseExtraService.php | 8 ++- app/Services/ReleaseProcessingService.php | 5 +- app/Services/ReleaseRemoverService.php | 6 +- .../Releases/ReleaseBrowseService.php | 4 +- .../Releases/ReleaseManagementService.php | 4 +- .../Releases/ReleaseSearchService.php | 2 +- app/Services/TmdbClient.php | 8 ++- app/Services/Tmux/TmuxLayoutBuilder.php | 3 +- app/Services/TraktService.php | 11 ++-- .../Providers/AbstractTvProvider.php | 14 +++-- .../Providers/BaseVideoProvider.php | 4 +- .../TvProcessing/Providers/TmdbProvider.php | 6 +- .../TvProcessing/Providers/TraktProvider.php | 6 +- .../TvProcessing/Providers/TvMazeProvider.php | 6 +- .../TvProcessing/Providers/TvdbProvider.php | 6 +- .../TvProcessing/TvReleaseContext.php | 4 +- app/Support/Auth/AuthenticatesUsers.php | 11 ++-- app/Support/Auth/RegistersUsers.php | 11 ++-- app/Support/CaptchaHelper.php | 3 +- app/Support/DTOs/SteamGameData.php | 4 +- app/Transformers/DetailsTransformer.php | 5 +- bootstrap/app.php | 62 ++++++++++++------- bootstrap/providers.php | 34 ++++++---- config/app.php | 15 +++-- config/auth.php | 4 +- config/database.php | 5 +- config/elasticsearch.php | 4 +- config/forum/api.php | 10 ++- config/forum/frontend.php | 4 +- config/forum/integration.php | 19 ++++-- config/geoip.php | 19 ++++-- config/google2fa.php | 4 +- config/laravel-directory-cleanup.php | 4 +- config/logging.php | 7 ++- config/permission.php | 7 ++- config/services.php | 4 +- database/factories/ReleaseReportFactory.php | 4 +- ...024_05_25_122046_drop_stored_procedure.php | 3 +- ..._01_01_000000_create_invitations_table.php | 4 +- ...10_195505_fix_invitations_column_names.php | 6 +- ...46_fix_all_tables_collation_to_utf8mb4.php | 2 +- ...omposite_indexes_for_admin_performance.php | 2 +- ..._15_000000_fix_invitations_foreign_key.php | 6 +- debug_scrapers.php | 4 +- rector.php | 5 +- routes/api.php | 3 +- routes/console.php | 11 ++-- routes/web.php | 46 ++++++++------ .../Feature/AdminLogViewerControllerTest.php | 3 +- .../AdminRegistrationControllerTest.php | 3 +- .../Feature/BinariesStoreHeadersMixedTest.php | 4 +- tests/Feature/BinariesStoreHeadersTest.php | 4 +- tests/Feature/SteamServiceTest.php | 3 +- .../Unit/HashedReleaseCategorizationTest.php | 7 ++- tests/Unit/MediaProcessingServiceTest.php | 2 +- tests/Unit/TmdbClientTest.php | 3 +- tests/Unit/YencServiceTest.php | 3 +- 169 files changed, 754 insertions(+), 480 deletions(-) diff --git a/app/Console/Commands/CreateMediaIndexes.php b/app/Console/Commands/CreateMediaIndexes.php index b3c103c10..b159eed6b 100644 --- a/app/Console/Commands/CreateMediaIndexes.php +++ b/app/Console/Commands/CreateMediaIndexes.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Console\Commands; +use Elasticsearch\ClientBuilder; use Illuminate\Console\Command; use Manticoresearch\Client; use Manticoresearch\Exceptions\ResponseException; @@ -267,7 +268,7 @@ class CreateMediaIndexes extends Command try { // Create Elasticsearch client directly $esConfig = config('search.drivers.elasticsearch'); - $esClient = \Elasticsearch\ClientBuilder::create() + $esClient = ClientBuilder::create() ->setHosts($esConfig['hosts'] ?? [['host' => 'localhost', 'port' => 9200]]) ->build(); diff --git a/app/Console/Commands/NntmuxCheckIndex.php b/app/Console/Commands/NntmuxCheckIndex.php index def3025fc..fa4faa615 100644 --- a/app/Console/Commands/NntmuxCheckIndex.php +++ b/app/Console/Commands/NntmuxCheckIndex.php @@ -6,6 +6,8 @@ namespace App\Console\Commands; use App\Facades\Elasticsearch; use Exception; +use GuzzleHttp\Client; +use GuzzleHttp\Exception\RequestException; use Illuminate\Console\Command; class NntmuxCheckIndex extends Command @@ -119,7 +121,7 @@ class NntmuxCheckIndex extends Command $baseUrl = "http://{$host}:{$port}"; // Check if table exists using HTTP API - $client = new \GuzzleHttp\Client([ + $client = new Client([ 'base_uri' => $baseUrl, 'timeout' => 10, 'http_errors' => false, // Don't throw on HTTP errors @@ -227,13 +229,13 @@ class NntmuxCheckIndex extends Command ); } } - } catch (\Exception $e) { + } catch (Exception $e) { // Ignore describe errors } - } catch (\Exception $e) { + } catch (Exception $e) { $this->error("Error checking ManticoreSearch table: {$e->getMessage()}"); - if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) { + if ($e instanceof RequestException && $e->hasResponse()) { $this->error('Response body: '.$e->getResponse()->getBody()); } } diff --git a/app/Console/Commands/TmuxAttach.php b/app/Console/Commands/TmuxAttach.php index 3118a5a8d..29221aec8 100644 --- a/app/Console/Commands/TmuxAttach.php +++ b/app/Console/Commands/TmuxAttach.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Console\Commands; use App\Models\Settings; +use App\Services\Tmux\TmuxPaneManager; use App\Services\Tmux\TmuxSessionManager; use Illuminate\Console\Command; @@ -47,7 +48,7 @@ class TmuxAttach extends Command $this->info('💡 Press Ctrl+A then D to detach'); // Select monitor pane before attaching so user lands there - $paneManager = new \App\Services\Tmux\TmuxPaneManager($sessionName); + $paneManager = new TmuxPaneManager($sessionName); $paneManager->selectWindow(0); $paneManager->selectPane('0.0'); diff --git a/app/Console/Commands/TmuxStart.php b/app/Console/Commands/TmuxStart.php index 881c16af3..a7f5ac2b6 100644 --- a/app/Console/Commands/TmuxStart.php +++ b/app/Console/Commands/TmuxStart.php @@ -7,9 +7,11 @@ namespace App\Console\Commands; use App\Models\Collection; use App\Models\Settings; use App\Services\Tmux\TmuxLayoutBuilder; +use App\Services\Tmux\TmuxPaneManager; use App\Services\Tmux\TmuxSessionManager; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Process; class TmuxStart extends Command { @@ -100,7 +102,7 @@ class TmuxStart extends Command $this->startMonitor($sessionName); // Select monitor pane (0.0) so attach lands there - $paneManager = new \App\Services\Tmux\TmuxPaneManager($sessionName); + $paneManager = new TmuxPaneManager($sessionName); $paneManager->selectWindow(0); $paneManager->selectPane('0.0'); @@ -133,7 +135,7 @@ class TmuxStart extends Command */ private function checkTmuxInstalled(): bool { - $result = \Illuminate\Support\Facades\Process::timeout(5) + $result = Process::timeout(5) ->run('which tmux 2>/dev/null'); return $result->successful() && str_contains($result->output(), 'tmux'); @@ -169,7 +171,7 @@ class TmuxStart extends Command */ private function startMonitor(string $sessionName): void { - $paneManager = new \App\Services\Tmux\TmuxPaneManager($sessionName); + $paneManager = new TmuxPaneManager($sessionName); // Priority: new monitor > old monitor > artisan command $newMonitor = base_path('app/Services/Tmux/Scripts/monitor.php'); diff --git a/app/Events/UserAccessedApi.php b/app/Events/UserAccessedApi.php index 1b48ea158..193bcead1 100644 --- a/app/Events/UserAccessedApi.php +++ b/app/Events/UserAccessedApi.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Events; +use App\Models\User; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; @@ -13,7 +14,7 @@ class UserAccessedApi use Dispatchable, InteractsWithSockets, SerializesModels; /** - * @var \App\Models\User + * @var User */ public $user; diff --git a/app/Events/UserLoggedIn.php b/app/Events/UserLoggedIn.php index 6f6283d75..0bd1a6f8a 100644 --- a/app/Events/UserLoggedIn.php +++ b/app/Events/UserLoggedIn.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Events; +use App\Models\User; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; @@ -12,14 +13,14 @@ class UserLoggedIn { use Dispatchable, InteractsWithSockets, SerializesModels; - public \App\Models\User $user; + public User $user; public string $ip; /** * Create a new event instance. */ - public function __construct(\App\Models\User $user, string $ip = '') + public function __construct(User $user, string $ip = '') { $this->user = $user; $this->ip = $ip; diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 6a388b00a..450a4f3bd 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -5,6 +5,11 @@ declare(strict_types=1); namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; +use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Request; +use Illuminate\Session\TokenMismatchException; +use Spatie\Permission\Exceptions\UnauthorizedException; +use Symfony\Component\HttpFoundation\Response; use Throwable; class Handler extends ExceptionHandler @@ -46,25 +51,25 @@ class Handler extends ExceptionHandler * * @return void * - * @throws \Throwable + * @throws Throwable */ - public function report(\Throwable $exception) + public function report(Throwable $exception) { parent::report($exception); } /** - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\RedirectResponse|\Symfony\Component\HttpFoundation\Response + * @param Request $request + * @return RedirectResponse|Response * - * @throws \Throwable + * @throws Throwable */ - public function render($request, \Throwable $exception) + public function render($request, Throwable $exception) { - if ($exception instanceof \Spatie\Permission\Exceptions\UnauthorizedException) { + if ($exception instanceof UnauthorizedException) { abort(401); } - if ($exception instanceof \Illuminate\Session\TokenMismatchException) { + if ($exception instanceof TokenMismatchException) { return redirect() ->back() ->withInput($request->except(['password', 'password_confirmation'])) diff --git a/app/Extensions/helper/helpers.php b/app/Extensions/helper/helpers.php index b47f36f57..316278494 100644 --- a/app/Extensions/helper/helpers.php +++ b/app/Extensions/helper/helpers.php @@ -9,10 +9,14 @@ use GuzzleHttp\Client; use GuzzleHttp\Cookie\CookieJar; use GuzzleHttp\Cookie\SetCookie; use GuzzleHttp\Exception\RequestException; +use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; use sspat\ESQuerySanitizer\Sanitizer; +use STS\ZipStream\Builder; use STS\ZipStream\Facades\Zip as ZipStream; use Symfony\Component\Process\Process; @@ -272,7 +276,7 @@ if (! function_exists('getStreamingZip')) { * * @throws Exception */ - function getStreamingZip(array $guids = []): STS\ZipStream\Builder + function getStreamingZip(array $guids = []): Builder { $nzb = app(NzbService::class); $zipped = ZipStream::create(now()->format('Ymdhis').'.zip'); @@ -581,15 +585,15 @@ if (! function_exists('userDate')) { // Parse the date in the app's timezone (which should be UTC) // If dates in DB are stored in server timezone, they'll be parsed correctly $appTimezone = config('app.timezone', 'UTC'); - $carbon = \Illuminate\Support\Carbon::parse($date, $appTimezone); + $carbon = Carbon::parse($date, $appTimezone); // If user is authenticated and has a timezone set, convert to it - if (\Illuminate\Support\Facades\Auth::check() && \Illuminate\Support\Facades\Auth::user()->timezone) { - $carbon->setTimezone(\Illuminate\Support\Facades\Auth::user()->timezone); + if (Auth::check() && Auth::user()->timezone) { + $carbon->setTimezone(Auth::user()->timezone); } return $carbon->format($format); - } catch (\Exception $e) { + } catch (Exception $e) { return $date; } } @@ -612,15 +616,15 @@ if (! function_exists('userDateDiffForHumans')) { // Parse the date in the app's timezone (which should be UTC) // If dates in DB are stored in server timezone, they'll be parsed correctly $appTimezone = config('app.timezone', 'UTC'); - $carbon = \Illuminate\Support\Carbon::parse($date, $appTimezone); + $carbon = Carbon::parse($date, $appTimezone); // If user is authenticated and has a timezone set, convert to it - if (\Illuminate\Support\Facades\Auth::check() && \Illuminate\Support\Facades\Auth::user()->timezone) { - $carbon->setTimezone(\Illuminate\Support\Facades\Auth::user()->timezone); + if (Auth::check() && Auth::user()->timezone) { + $carbon->setTimezone(Auth::user()->timezone); } return $carbon->diffForHumans(); - } catch (\Exception $e) { + } catch (Exception $e) { return $date; } } @@ -636,20 +640,20 @@ if (! function_exists('getAvailableTimezones')) { { $timezones = []; $regions = [ - 'Africa' => \DateTimeZone::AFRICA, - 'America' => \DateTimeZone::AMERICA, - 'Antarctica' => \DateTimeZone::ANTARCTICA, - 'Arctic' => \DateTimeZone::ARCTIC, - 'Asia' => \DateTimeZone::ASIA, - 'Atlantic' => \DateTimeZone::ATLANTIC, - 'Australia' => \DateTimeZone::AUSTRALIA, - 'Europe' => \DateTimeZone::EUROPE, - 'Indian' => \DateTimeZone::INDIAN, - 'Pacific' => \DateTimeZone::PACIFIC, + 'Africa' => DateTimeZone::AFRICA, + 'America' => DateTimeZone::AMERICA, + 'Antarctica' => DateTimeZone::ANTARCTICA, + 'Arctic' => DateTimeZone::ARCTIC, + 'Asia' => DateTimeZone::ASIA, + 'Atlantic' => DateTimeZone::ATLANTIC, + 'Australia' => DateTimeZone::AUSTRALIA, + 'Europe' => DateTimeZone::EUROPE, + 'Indian' => DateTimeZone::INDIAN, + 'Pacific' => DateTimeZone::PACIFIC, ]; foreach ($regions as $name => $region) { - $timezones[$name] = \DateTimeZone::listIdentifiers($region); + $timezones[$name] = DateTimeZone::listIdentifiers($region); } return $timezones; @@ -792,12 +796,12 @@ if (! function_exists('fileInfo')) { * @param string $path Path to the file / folder to check. * @return string File info. Empty string on failure. * - * @throws \Exception + * @throws Exception */ function fileInfo(string $path): string { $magicPath = config('nntmux_settings.magic_file_path'); - if ($magicPath !== null && \Illuminate\Support\Facades\Process::run('which file')->successful()) { + if ($magicPath !== null && Illuminate\Support\Facades\Process::run('which file')->successful()) { $magicSwitch = " -m $magicPath"; $output = runCmd('file'.$magicSwitch.' -b "'.$path.'"'); } else { @@ -874,9 +878,9 @@ if (! function_exists('showApiError')) { } if (! function_exists('getRange')) { - function getRange(string $tableName): \Illuminate\Contracts\Pagination\LengthAwarePaginator // @phpstan-ignore missingType.generics + function getRange(string $tableName): LengthAwarePaginator // @phpstan-ignore missingType.generics { - $range = \Illuminate\Support\Facades\DB::table($tableName); + $range = DB::table($tableName); return $range->orderByDesc('created_at')->paginate(config('nntmux.items_per_page')); } diff --git a/app/Facades/Categorization.php b/app/Facades/Categorization.php index b2796a022..dd3356389 100644 --- a/app/Facades/Categorization.php +++ b/app/Facades/Categorization.php @@ -12,7 +12,7 @@ use Illuminate\Support\Facades\Facade; * @method static \Illuminate\Support\Collection getCategorizers() * @method static CategorizationPipeline addCategorizer(\App\Services\Categorization\Contracts\CategorizerInterface $categorizer) * - * @see \App\Services\Categorization\CategorizationPipeline + * @see CategorizationPipeline */ class Categorization extends Facade // @phpstan-ignore missingType.iterableValue, missingType.generics { diff --git a/app/Facades/Elasticsearch.php b/app/Facades/Elasticsearch.php index 0fc9d2c2e..0aaffeff5 100644 --- a/app/Facades/Elasticsearch.php +++ b/app/Facades/Elasticsearch.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Facades; use Illuminate\Support\Facades\Facade; +use Mailerlite\LaravelElasticsearch\Manager; /** * Elasticsearch Facade - provides static access to Elasticsearch client. @@ -16,7 +17,7 @@ use Illuminate\Support\Facades\Facade; * @method static array get(array $params) * @method static array deleteByQuery(array $params) * - * @see \Mailerlite\LaravelElasticsearch\Manager + * @see Manager */ class Elasticsearch extends Facade // @phpstan-ignore missingType.iterableValue { diff --git a/app/Facades/Search.php b/app/Facades/Search.php index b0d13e3f6..d9a9729f8 100644 --- a/app/Facades/Search.php +++ b/app/Facades/Search.php @@ -38,7 +38,7 @@ use Illuminate\Support\Facades\Facade; * @method static array searchReleasesByCategory(array $categoryIds, int $limit = 1000) * @method static array searchReleasesWithCategoryFilter(string $searchTerm, array $categoryIds = [], int $limit = 1000) * - * @see \App\Services\Search\SearchService + * @see SearchService */ class Search extends Facade // @phpstan-ignore missingType.iterableValue { diff --git a/app/Facades/TvProcessing.php b/app/Facades/TvProcessing.php index 086af399a..35bfd2daf 100644 --- a/app/Facades/TvProcessing.php +++ b/app/Facades/TvProcessing.php @@ -14,7 +14,7 @@ use Illuminate\Support\Facades\Facade; * @method static \Illuminate\Support\Collection getPipes() * @method static array getStats() * - * @see \App\Services\TvProcessing\TvProcessingPipeline + * @see TvProcessingPipeline */ class TvProcessing extends Facade // @phpstan-ignore missingType.iterableValue, missingType.generics { diff --git a/app/Facades/Yenc.php b/app/Facades/Yenc.php index fcb8eb483..3bbfb3fd3 100644 --- a/app/Facades/Yenc.php +++ b/app/Facades/Yenc.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Facades; +use App\Services\YencService; use Illuminate\Support\Facades\Facade; /** @@ -16,7 +17,7 @@ use Illuminate\Support\Facades\Facade; * @method static string encode(string $data, string $filename, int $lineLength = 128, bool $includeCrc32 = true) * @method static array|null extractMetadata(string $text) * - * @see \App\Services\YencService + * @see YencService */ class Yenc extends Facade // @phpstan-ignore missingType.iterableValue { @@ -25,6 +26,6 @@ class Yenc extends Facade // @phpstan-ignore missingType.iterableValue */ protected static function getFacadeAccessor(): string { - return \App\Services\YencService::class; + return YencService::class; } } diff --git a/app/Http/Controllers/Admin/AdminBlacklistController.php b/app/Http/Controllers/Admin/AdminBlacklistController.php index 5317480fa..2628b5895 100644 --- a/app/Http/Controllers/Admin/AdminBlacklistController.php +++ b/app/Http/Controllers/Admin/AdminBlacklistController.php @@ -8,6 +8,8 @@ use App\Enums\BlacklistConstants; use App\Http\Controllers\BasePageController; use App\Models\Category; use App\Services\BlacklistService; +use Illuminate\Contracts\View\View; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; class AdminBlacklistController extends BasePageController @@ -34,7 +36,7 @@ class AdminBlacklistController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Contracts\View\View|void + * @return RedirectResponse|View|void * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminCategoryController.php b/app/Http/Controllers/Admin/AdminCategoryController.php index dd036ad9d..3eb143a90 100644 --- a/app/Http/Controllers/Admin/AdminCategoryController.php +++ b/app/Http/Controllers/Admin/AdminCategoryController.php @@ -7,7 +7,9 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\BasePageController; use App\Models\Category; use App\Models\RootCategory; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminCategoryController extends BasePageController { @@ -31,7 +33,7 @@ class AdminCategoryController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ @@ -88,7 +90,7 @@ class AdminCategoryController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ @@ -141,7 +143,7 @@ class AdminCategoryController extends BasePageController /** * Delete a category. * - * @return \Illuminate\Http\RedirectResponse + * @return RedirectResponse * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminCategoryRegexesController.php b/app/Http/Controllers/Admin/AdminCategoryRegexesController.php index 6140223d3..9e3e05239 100644 --- a/app/Http/Controllers/Admin/AdminCategoryRegexesController.php +++ b/app/Http/Controllers/Admin/AdminCategoryRegexesController.php @@ -7,7 +7,9 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\BasePageController; use App\Models\Category; use App\Services\RegexService; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminCategoryRegexesController extends BasePageController { @@ -35,7 +37,7 @@ class AdminCategoryRegexesController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminCollectionRegexesController.php b/app/Http/Controllers/Admin/AdminCollectionRegexesController.php index a4d211bef..3a5d39d8c 100644 --- a/app/Http/Controllers/Admin/AdminCollectionRegexesController.php +++ b/app/Http/Controllers/Admin/AdminCollectionRegexesController.php @@ -7,7 +7,9 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\BasePageController; use App\Models\Category; use App\Services\RegexService; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminCollectionRegexesController extends BasePageController { @@ -35,7 +37,7 @@ class AdminCollectionRegexesController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminContentController.php b/app/Http/Controllers/Admin/AdminContentController.php index a4a492ddd..b11c34f6d 100644 --- a/app/Http/Controllers/Admin/AdminContentController.php +++ b/app/Http/Controllers/Admin/AdminContentController.php @@ -6,7 +6,11 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\BasePageController; use App\Models\Content; +use Illuminate\Foundation\Application; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Routing\Redirector; +use Illuminate\View\View; class AdminContentController extends BasePageController { @@ -35,7 +39,7 @@ class AdminContentController extends BasePageController /** * Show form to create or edit content. * - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View + * @return \Illuminate\Contracts\Foundation\Application|Application|RedirectResponse|Redirector|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminGroupController.php b/app/Http/Controllers/Admin/AdminGroupController.php index 8a40a1e5d..37bba2806 100644 --- a/app/Http/Controllers/Admin/AdminGroupController.php +++ b/app/Http/Controllers/Admin/AdminGroupController.php @@ -6,7 +6,9 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\BasePageController; use App\Models\UsenetGroup; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminGroupController extends BasePageController { @@ -43,7 +45,7 @@ class AdminGroupController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminInvitationController.php b/app/Http/Controllers/Admin/AdminInvitationController.php index 3cc413796..9820fd995 100644 --- a/app/Http/Controllers/Admin/AdminInvitationController.php +++ b/app/Http/Controllers/Admin/AdminInvitationController.php @@ -10,6 +10,7 @@ use App\Models\User; use App\Services\InvitationService; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Cache; use Illuminate\View\View; class AdminInvitationController extends BasePageController @@ -132,7 +133,7 @@ class AdminInvitationController extends BasePageController */ private function getOverallStats(): array { - return \Illuminate\Support\Facades\Cache::remember('admin_invitation_stats', 300, function () { + return Cache::remember('admin_invitation_stats', 300, function () { return [ 'total' => Invitation::count(), 'pending' => Invitation::valid()->count(), @@ -158,7 +159,7 @@ class AdminInvitationController extends BasePageController */ private function getTopInviters(int $limit = 10): array { - return \Illuminate\Support\Facades\Cache::remember('admin_top_inviters', 300, function () use ($limit) { + return Cache::remember('admin_top_inviters', 300, function () use ($limit) { return User::select('users.*') ->selectRaw('COUNT(invitations.id) as total_invitations') ->selectRaw('COUNT(CASE WHEN invitations.used_at IS NOT NULL THEN 1 END) as successful_invitations') diff --git a/app/Http/Controllers/Admin/AdminMovieController.php b/app/Http/Controllers/Admin/AdminMovieController.php index 936aba8f9..51e732863 100644 --- a/app/Http/Controllers/Admin/AdminMovieController.php +++ b/app/Http/Controllers/Admin/AdminMovieController.php @@ -8,7 +8,9 @@ use App\Http\Controllers\BasePageController; use App\Models\MovieInfo; use App\Models\Release; use App\Services\MovieService; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminMovieController extends BasePageController { @@ -39,7 +41,7 @@ class AdminMovieController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ @@ -104,7 +106,7 @@ class AdminMovieController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminReleaseNamingRegexesController.php b/app/Http/Controllers/Admin/AdminReleaseNamingRegexesController.php index b0672edbf..156c6ff10 100644 --- a/app/Http/Controllers/Admin/AdminReleaseNamingRegexesController.php +++ b/app/Http/Controllers/Admin/AdminReleaseNamingRegexesController.php @@ -7,7 +7,9 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\BasePageController; use App\Models\Category; use App\Services\RegexService; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminReleaseNamingRegexesController extends BasePageController { @@ -38,7 +40,7 @@ class AdminReleaseNamingRegexesController extends BasePageController } /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminReleaseReportController.php b/app/Http/Controllers/Admin/AdminReleaseReportController.php index 638827d90..4f132ff6c 100644 --- a/app/Http/Controllers/Admin/AdminReleaseReportController.php +++ b/app/Http/Controllers/Admin/AdminReleaseReportController.php @@ -63,7 +63,7 @@ class AdminReleaseReportController extends BasePageController $report = ReleaseReport::with('release')->findOrFail($id); if ($report->release) { - /** @var \App\Models\Release $release */ + /** @var Release $release */ $release = $report->release; $releaseName = $release->searchname; $releaseId = $report->releases_id; diff --git a/app/Http/Controllers/Admin/AdminReleasesController.php b/app/Http/Controllers/Admin/AdminReleasesController.php index 5456f02c2..2da0fcf9c 100644 --- a/app/Http/Controllers/Admin/AdminReleasesController.php +++ b/app/Http/Controllers/Admin/AdminReleasesController.php @@ -8,7 +8,11 @@ use App\Http\Controllers\BasePageController; use App\Models\Category; use App\Models\Release; use App\Services\Releases\ReleaseManagementService; +use Illuminate\Foundation\Application; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Routing\Redirector; +use Illuminate\View\View; class AdminReleasesController extends BasePageController { @@ -40,7 +44,7 @@ class AdminReleasesController extends BasePageController } /** - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View + * @return \Illuminate\Contracts\Foundation\Application|Application|RedirectResponse|Redirector|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Admin/AdminSiteController.php b/app/Http/Controllers/Admin/AdminSiteController.php index 912de0bd4..daff0bf2a 100644 --- a/app/Http/Controllers/Admin/AdminSiteController.php +++ b/app/Http/Controllers/Admin/AdminSiteController.php @@ -11,12 +11,14 @@ use App\Models\ReleaseStat; use App\Models\RoleStat; use App\Models\Settings; use App\Models\SignupStat; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class AdminSiteController extends BasePageController { /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return RedirectResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/Api/ApiController.php b/app/Http/Controllers/Api/ApiController.php index a8cb49f20..30c672d90 100644 --- a/app/Http/Controllers/Api/ApiController.php +++ b/app/Http/Controllers/Api/ApiController.php @@ -17,6 +17,7 @@ use App\Services\RegistrationStatusService; use App\Services\Releases\ReleaseBrowseService; use App\Services\Releases\ReleaseSearchService; use Illuminate\Contracts\Foundation\Application; +use Illuminate\Contracts\Routing\ResponseFactory; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -488,7 +489,7 @@ class ApiController extends BasePageController } /** - * @return Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Foundation\Application|Response|int + * @return Application|ResponseFactory|\Illuminate\Foundation\Application|Response|int */ public function maxAge(Request $request) { diff --git a/app/Http/Controllers/Api/ApiInformController.php b/app/Http/Controllers/Api/ApiInformController.php index 64fb85920..20cc48b83 100644 --- a/app/Http/Controllers/Api/ApiInformController.php +++ b/app/Http/Controllers/Api/ApiInformController.php @@ -9,6 +9,7 @@ use App\Models\Release; use App\Models\ReleaseInform; use App\Models\User; use App\Services\NameFixing\ReleaseUpdateService; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class ApiInformController extends Controller @@ -19,7 +20,7 @@ class ApiInformController extends Controller * * @throws \Exception */ - public function release(Request $request): \Illuminate\Http\JsonResponse + public function release(Request $request): JsonResponse { $releaseObName = $request->has('relo') && ! empty($request->input('relo')) ? $request->input('relo') : ''; $releasePrName = $request->has('relp') && ! empty($request->input('relp')) ? $request->input('relp') : ''; diff --git a/app/Http/Controllers/Api/ApiV2Controller.php b/app/Http/Controllers/Api/ApiV2Controller.php index ebc80a429..ae18f929c 100644 --- a/app/Http/Controllers/Api/ApiV2Controller.php +++ b/app/Http/Controllers/Api/ApiV2Controller.php @@ -17,9 +17,11 @@ use App\Services\Releases\ReleaseSearchService; use App\Transformers\ApiTransformer; use App\Transformers\CategoryTransformer; use App\Transformers\DetailsTransformer; +use Illuminate\Foundation\Application; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Routing\Redirector; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Cache; @@ -305,7 +307,7 @@ class ApiV2Controller extends BasePageController return response()->json($response); } - public function getNzb(Request $request): \Illuminate\Foundation\Application|JsonResponse|\Illuminate\Routing\Redirector|RedirectResponse|\Illuminate\Contracts\Foundation\Application + public function getNzb(Request $request): Application|JsonResponse|Redirector|RedirectResponse|\Illuminate\Contracts\Foundation\Application { $user = $this->resolveUser($request); if (! $user) { diff --git a/app/Http/Controllers/Api/RSS.php b/app/Http/Controllers/Api/RSS.php index 07eb994ef..7065a9bb0 100644 --- a/app/Http/Controllers/Api/RSS.php +++ b/app/Http/Controllers/Api/RSS.php @@ -9,6 +9,7 @@ use App\Models\Release; use App\Services\Releases\ReleaseBrowseService; use App\Services\Releases\ReleaseSearchService; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; @@ -161,7 +162,7 @@ class RSS extends ApiController $cacheKey = 'rss_trending_movies_48h'; return Cache::remember($cacheKey, 3600, function () { - $fortyEightHoursAgo = \Illuminate\Support\Carbon::now()->subHours(48); + $fortyEightHoursAgo = Carbon::now()->subHours(48); // First get the top 15 movies by download count $topMovies = DB::table('movieinfo as m') @@ -225,7 +226,7 @@ class RSS extends ApiController $cacheKey = 'rss_trending_shows_48h'; return Cache::remember($cacheKey, 3600, function () { - $fortyEightHoursAgo = \Illuminate\Support\Carbon::now()->subHours(48); + $fortyEightHoursAgo = Carbon::now()->subHours(48); // First get the top 15 TV shows by download count $topShows = DB::table('videos as v') diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php index 5e4691d39..e46412d7f 100644 --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -7,6 +7,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Jobs\SendPasswordForgottenEmail; use App\Models\User; +use App\Support\CaptchaHelper; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; @@ -53,16 +54,16 @@ class ForgotPasswordController extends Controller return redirect() ->route('forgottenpassword') ->withErrors(['error' => 'Missing parameter (email and/or apikey) to send password reset']) - ->withInput($request->except(\App\Support\CaptchaHelper::getResponseFieldName())); + ->withInput($request->except(CaptchaHelper::getResponseFieldName())); } - if (\App\Support\CaptchaHelper::isEnabled()) { - $validate = Validator::make($request->all(), \App\Support\CaptchaHelper::getValidationRules()); + if (CaptchaHelper::isEnabled()) { + $validate = Validator::make($request->all(), CaptchaHelper::getValidationRules()); if ($validate->fails()) { return redirect() ->route('forgottenpassword') ->withErrors(['error' => 'Captcha validation failed.']) - ->withInput($request->except(\App\Support\CaptchaHelper::getResponseFieldName())); + ->withInput($request->except(CaptchaHelper::getResponseFieldName())); } } @@ -72,7 +73,7 @@ class ForgotPasswordController extends Controller return redirect() ->route('forgottenpassword') ->withErrors(['error' => 'The email or apikey are not recognised.']) - ->withInput($request->except(\App\Support\CaptchaHelper::getResponseFieldName())); + ->withInput($request->except(CaptchaHelper::getResponseFieldName())); } // Check if user is soft deleted @@ -81,7 +82,7 @@ class ForgotPasswordController extends Controller return redirect() ->route('forgottenpassword') ->withErrors(['error' => 'This account has been deactivated.']) - ->withInput($request->except(\App\Support\CaptchaHelper::getResponseFieldName())); + ->withInput($request->except(CaptchaHelper::getResponseFieldName())); } // Generate a forgottenpassword guid, store it in the user table diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 36992367d..ce7de4598 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -14,6 +14,7 @@ use Illuminate\Auth\AuthenticationException; use Illuminate\Contracts\Foundation\Application; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Routing\Redirector; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; @@ -64,7 +65,7 @@ class LoginController extends Controller /** * @throws AuthenticationException */ - public function login(LoginLoginRequest $request): \Illuminate\Foundation\Application|\Illuminate\Routing\Redirector|Application|RedirectResponse + public function login(LoginLoginRequest $request): \Illuminate\Foundation\Application|Redirector|Application|RedirectResponse { $validator = Validator::make($request->all(), [ 'username' => ['required'], @@ -201,7 +202,7 @@ class LoginController extends Controller return view('auth.login'); } - public function logout(Request $request): \Illuminate\Routing\Redirector|RedirectResponse + public function logout(Request $request): Redirector|RedirectResponse { // Save 2FA trusted device cookie value before logout $trustedDeviceCookie = $request->cookie('2fa_trusted_device'); diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index 2bc4ad3fb..f49bf15b6 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -6,6 +6,7 @@ namespace App\Http\Controllers; use App\Models\Release; use App\Models\UsersRelease; +use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -33,7 +34,7 @@ class CartController extends BasePageController /** * @throws \Exception */ - public function store(Request $request): RedirectResponse|\Illuminate\Http\JsonResponse + public function store(Request $request): RedirectResponse|JsonResponse { $guids = explode(',', $request->input('id')); diff --git a/app/Http/Controllers/ConsoleController.php b/app/Http/Controllers/ConsoleController.php index e2cff80d2..69db8f82c 100644 --- a/app/Http/Controllers/ConsoleController.php +++ b/app/Http/Controllers/ConsoleController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Http\Controllers; use App\Models\Category; +use App\Models\Genre; use App\Services\ConsoleService; use App\Services\GenreService; use Illuminate\Http\Request; @@ -78,7 +79,7 @@ class ConsoleController extends BasePageController $genres = $gen->getGenres((string) GenreService::CONSOLE_TYPE, true); $tmpgnr = []; foreach ($genres as $gn) { - /** @var \App\Models\Genre $gn */ + /** @var Genre $gn */ $tmpgnr[$gn->id] = $gn->title; } $genre = ($request->has('genre') && isset($tmpgnr[$request->input('genre')])) ? $request->input('genre') : ''; diff --git a/app/Http/Controllers/ContactUsController.php b/app/Http/Controllers/ContactUsController.php index e8c88f2f0..77eb29a2e 100644 --- a/app/Http/Controllers/ContactUsController.php +++ b/app/Http/Controllers/ContactUsController.php @@ -6,11 +6,14 @@ namespace App\Http\Controllers; use App\Http\Requests\ContactContactURequest; use App\Jobs\SendContactUsEmail; +use App\Support\CaptchaHelper; +use Illuminate\Validation\ValidationException; +use Illuminate\View\View; class ContactUsController extends BasePageController { /** - * @throws \Illuminate\Validation\ValidationException + * @throws ValidationException */ public function contact(ContactContactURequest $request): mixed { @@ -22,7 +25,7 @@ class ContactUsController extends BasePageController $mailTo = config('mail.from.address'); $mailBody = 'Values submitted from contact form: '; - $captchaFieldName = \App\Support\CaptchaHelper::getResponseFieldName(); + $captchaFieldName = CaptchaHelper::getResponseFieldName(); foreach ($request->all() as $key => $value) { if ($key !== 'submit' && $key !== '_token' && $key !== 'g-recaptcha-response' && $key !== 'cf-turnstile-response') { $mailBody .= "$key : $value".PHP_EOL; @@ -39,7 +42,7 @@ class ContactUsController extends BasePageController } /** - * @return \Illuminate\View\View + * @return View * * @throws \Exception */ diff --git a/app/Http/Controllers/ContentController.php b/app/Http/Controllers/ContentController.php index b00c97e4c..00ec9f470 100644 --- a/app/Http/Controllers/ContentController.php +++ b/app/Http/Controllers/ContentController.php @@ -6,14 +6,16 @@ namespace App\Http\Controllers; use App\Models\Content; use App\Models\User; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class ContentController extends BasePageController { /** * Display content page(s). * - * @return \Illuminate\Http\JsonResponse|\Illuminate\View\View + * @return JsonResponse|View * * @throws \Exception */ diff --git a/app/Http/Controllers/DetailsController.php b/app/Http/Controllers/DetailsController.php index 983eac62d..a637fb2db 100644 --- a/app/Http/Controllers/DetailsController.php +++ b/app/Http/Controllers/DetailsController.php @@ -21,6 +21,7 @@ use App\Services\ConsoleService; use App\Services\GamesService; use App\Services\MovieService; use App\Services\MusicService; +use App\Services\PopulateAniListService; use App\Services\ReleaseExtraService; use App\Services\Releases\ReleaseSearchService; use Illuminate\Http\Request; @@ -63,7 +64,7 @@ class DetailsController extends BasePageController } $nfoData = ReleaseNfo::getReleaseNfo($data['id']); - /** @var \App\Models\ReleaseNfo|null $nfoData */ + /** @var ReleaseNfo|null $nfoData */ $nfo = $nfoData ? $nfoData->nfo : null; $reVideo = $this->releaseExtraService->getVideo($data['id']); $reAudio = $this->releaseExtraService->getAudio($data['id']); @@ -136,7 +137,7 @@ class DetailsController extends BasePageController if (empty($AniDBAPIArray->country) && empty($AniDBAPIArray->media_type)) { // Fetch fresh data from AniList if country/media_type is missing try { - $palist = new \App\Services\PopulateAniListService; + $palist = new PopulateAniListService; $palist->populateTable('info', $anilistId); // Refresh the data $AniDBAPIArray = (new AnidbService)->getAnimeInfo($data['anidbid']); diff --git a/app/Http/Controllers/GamesController.php b/app/Http/Controllers/GamesController.php index b40b70415..eb1516ee2 100644 --- a/app/Http/Controllers/GamesController.php +++ b/app/Http/Controllers/GamesController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Http\Controllers; use App\Models\Category; +use App\Models\Genre; use App\Services\GamesService; use App\Services\GenreService; use Illuminate\Http\Request; @@ -44,7 +45,7 @@ class GamesController extends BasePageController $genres = $gen->getGenres((string) GenreService::GAME_TYPE, true); $tmpgnr = []; foreach ($genres as $gn) { - /** @var \App\Models\Genre $gn */ + /** @var Genre $gn */ $tmpgnr[$gn->id] = $gn->title; } diff --git a/app/Http/Controllers/GetNzbController.php b/app/Http/Controllers/GetNzbController.php index 5326e2cea..9714a4f0a 100644 --- a/app/Http/Controllers/GetNzbController.php +++ b/app/Http/Controllers/GetNzbController.php @@ -15,6 +15,7 @@ use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; +use STS\ZipStream\Builder; use Symfony\Component\HttpFoundation\StreamedResponse; class GetNzbController extends BasePageController @@ -28,7 +29,7 @@ class GetNzbController extends BasePageController * * @throws Exception */ - public function getNzb(Request $request, ?string $guid = null): JsonResponse|Response|StreamedResponse|\STS\ZipStream\Builder + public function getNzb(Request $request, ?string $guid = null): JsonResponse|Response|StreamedResponse|Builder { // Normalize guid parameter $this->normalizeGuidParameter($request, $guid); @@ -188,7 +189,7 @@ class GetNzbController extends BasePageController string $userName, int $maxDownloads, string $releaseId - ): JsonResponse|Response|StreamedResponse|\STS\ZipStream\Builder { + ): JsonResponse|Response|StreamedResponse|Builder { $guids = explode(',', $releaseId); $guidCount = \count($guids); diff --git a/app/Http/Controllers/MovieController.php b/app/Http/Controllers/MovieController.php index 5bfb104fe..f87031d8d 100644 --- a/app/Http/Controllers/MovieController.php +++ b/app/Http/Controllers/MovieController.php @@ -7,7 +7,12 @@ namespace App\Http\Controllers; use App\Models\Category; use App\Services\MovieBrowseService; use App\Services\MovieService; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\DB; +use Illuminate\View\View; class MovieController extends BasePageController { @@ -153,7 +158,7 @@ class MovieController extends BasePageController } /** - * @return \Illuminate\Http\JsonResponse|\Illuminate\View\View + * @return JsonResponse|View */ public function showTrailer(Request $request) { @@ -201,13 +206,13 @@ class MovieController extends BasePageController $cacheKey = 'trending_movies_top_15_48h'; // Get trending movies from cache or calculate (refresh every hour) - $trendingMovies = \Illuminate\Support\Facades\Cache::remember($cacheKey, 3600, function () { + $trendingMovies = Cache::remember($cacheKey, 3600, function () { // Calculate timestamp for 48 hours ago - $fortyEightHoursAgo = \Illuminate\Support\Carbon::now()->subHours(48); + $fortyEightHoursAgo = Carbon::now()->subHours(48); // Get movies with their download counts from last 48 hours // Join with user_downloads to get actual download timestamps - $query = \Illuminate\Support\Facades\DB::table('movieinfo as m') + $query = DB::table('movieinfo as m') ->join('releases as r', 'm.imdbid', '=', 'r.imdbid') ->leftJoin('user_downloads as ud', 'r.id', '=', 'ud.releases_id') ->select([ @@ -220,8 +225,8 @@ class MovieController extends BasePageController 'm.cover', 'm.tmdbid', 'm.traktid', - \Illuminate\Support\Facades\DB::raw('COUNT(DISTINCT ud.id) as total_downloads'), - \Illuminate\Support\Facades\DB::raw('COUNT(DISTINCT r.id) as release_count'), + DB::raw('COUNT(DISTINCT ud.id) as total_downloads'), + DB::raw('COUNT(DISTINCT r.id) as release_count'), ]) ->where('m.title', '!=', '') ->where('m.imdbid', '!=', '0000000') diff --git a/app/Http/Controllers/MusicController.php b/app/Http/Controllers/MusicController.php index 9d8574d6e..c8dc43e6f 100644 --- a/app/Http/Controllers/MusicController.php +++ b/app/Http/Controllers/MusicController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Http\Controllers; use App\Models\Category; +use App\Models\Genre; use App\Services\GenreService; use App\Services\MusicService; use Illuminate\Http\Request; @@ -58,7 +59,7 @@ class MusicController extends BasePageController $genres = $gen->getGenres((string) GenreService::MUSIC_TYPE, true); $tmpgnr = []; foreach ($genres as $gn) { - /** @var \App\Models\Genre $gn */ + /** @var Genre $gn */ $tmpgnr[$gn->id] = $gn->title; } diff --git a/app/Http/Controllers/PasswordSecurityController.php b/app/Http/Controllers/PasswordSecurityController.php index cbd728c08..3a021afa1 100644 --- a/app/Http/Controllers/PasswordSecurityController.php +++ b/app/Http/Controllers/PasswordSecurityController.php @@ -6,15 +6,20 @@ namespace App\Http\Controllers; use App\Http\Requests\Disable2faPasswordSecurityRequest; use App\Models\PasswordSecurity; +use App\Models\User; use App\Services\PasswordBreachService; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; use Illuminate\Foundation\Application; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Routing\Redirector; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; +use PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException; +use PragmaRX\Google2FA\Exceptions\InvalidCharactersException; +use PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException; use PragmaRX\Google2FALaravel\Facade as Google2FA; class PasswordSecurityController extends Controller @@ -44,9 +49,9 @@ class PasswordSecurityController extends Controller } /** - * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException - * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException - * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws IncompatibleWithGoogleAuthenticatorException + * @throws InvalidCharactersException + * @throws SecretKeyTooShortException */ public function generate2faSecret(Request $request): RedirectResponse { @@ -74,9 +79,9 @@ class PasswordSecurityController extends Controller } /** - * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException - * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException - * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws IncompatibleWithGoogleAuthenticatorException + * @throws InvalidCharactersException + * @throws SecretKeyTooShortException */ public function enable2fa(Request $request): RedirectResponse { @@ -118,7 +123,7 @@ class PasswordSecurityController extends Controller return redirect()->to('profileedit#security')->with('error_2fa', 'Unable to cancel 2FA setup.'); } - public function disable2fa(Disable2faPasswordSecurityRequest $request): \Illuminate\Routing\Redirector|RedirectResponse|\Illuminate\Contracts\Foundation\Application + public function disable2fa(Disable2faPasswordSecurityRequest $request): Redirector|RedirectResponse|\Illuminate\Contracts\Foundation\Application { $user = $request->user(); @@ -158,7 +163,7 @@ class PasswordSecurityController extends Controller } $userId = $request->session()->get('2fa:user:id'); - $user = \App\Models\User::find($userId); + $user = User::find($userId); if (! $user || ! $user->passwordSecurity) { $request->session()->forget('2fa:user:id'); @@ -270,7 +275,7 @@ class PasswordSecurityController extends Controller $userId = $request->session()->get('2fa:user:id'); // Get the user - $user = \App\Models\User::find($userId); + $user = User::find($userId); if (! $user) { $request->session()->forget('2fa:user:id'); diff --git a/app/Http/Middleware/ForceJsonOnAPI.php b/app/Http/Middleware/ForceJsonOnAPI.php index 2084de4de..fcd7e54d9 100644 --- a/app/Http/Middleware/ForceJsonOnAPI.php +++ b/app/Http/Middleware/ForceJsonOnAPI.php @@ -14,7 +14,7 @@ class ForceJsonOnAPI /** * Handle an incoming request. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Middleware/SetUserTimezone.php b/app/Http/Middleware/SetUserTimezone.php index e30547401..2163f29dc 100644 --- a/app/Http/Middleware/SetUserTimezone.php +++ b/app/Http/Middleware/SetUserTimezone.php @@ -17,7 +17,7 @@ class SetUserTimezone * with database operations and helper functions. Instead, the timezone * conversion happens in the userDate() and userDateDiffForHumans() helpers. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Resources/AnidbResource.php b/app/Http/Resources/AnidbResource.php index 91a9f3c7f..56b59c5a0 100644 --- a/app/Http/Resources/AnidbResource.php +++ b/app/Http/Resources/AnidbResource.php @@ -4,13 +4,14 @@ declare(strict_types=1); namespace App\Http\Resources; +use App\Models\AnidbInfo; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; /** * AniDB API Resource for transforming anime data. * - * @mixin \App\Models\AnidbInfo + * @mixin AnidbInfo */ class AnidbResource extends JsonResource { diff --git a/app/Http/Resources/BookResource.php b/app/Http/Resources/BookResource.php index 70d399945..be1e717fe 100644 --- a/app/Http/Resources/BookResource.php +++ b/app/Http/Resources/BookResource.php @@ -4,13 +4,14 @@ declare(strict_types=1); namespace App\Http\Resources; +use App\Models\BookInfo; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; /** * Book API Resource for transforming book data. * - * @mixin \App\Models\BookInfo + * @mixin BookInfo */ class BookResource extends JsonResource { diff --git a/app/Http/Resources/MovieResource.php b/app/Http/Resources/MovieResource.php index 763417012..99d3e7c48 100644 --- a/app/Http/Resources/MovieResource.php +++ b/app/Http/Resources/MovieResource.php @@ -4,13 +4,14 @@ declare(strict_types=1); namespace App\Http\Resources; +use App\Models\MovieInfo; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; /** * Movie API Resource for transforming movie data. * - * @mixin \App\Models\MovieInfo + * @mixin MovieInfo */ class MovieResource extends JsonResource { diff --git a/app/Jobs/SendAccountWillExpireEmail.php b/app/Jobs/SendAccountWillExpireEmail.php index 95087ab3f..724b0b820 100644 --- a/app/Jobs/SendAccountWillExpireEmail.php +++ b/app/Jobs/SendAccountWillExpireEmail.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Jobs; use App\Mail\AccountWillExpire; +use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -18,12 +19,12 @@ class SendAccountWillExpireEmail implements ShouldQueue private int $days; - private \App\Models\User $user; + private User $user; /** * Create a new job instance. */ - public function __construct(\App\Models\User $user, int $days) + public function __construct(User $user, int $days) { $this->user = $user; $this->days = $days; diff --git a/app/Jobs/SendInviteEmail.php b/app/Jobs/SendInviteEmail.php index 63328ae0f..1ac89cf27 100644 --- a/app/Jobs/SendInviteEmail.php +++ b/app/Jobs/SendInviteEmail.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Jobs; use App\Mail\SendInvite; +use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -20,12 +21,12 @@ class SendInviteEmail implements ShouldQueue private string $url; - private \App\Models\User $user; + private User $user; /** * SendInviteEmail constructor. */ - public function __construct(string $email, \App\Models\User $user, string $url) + public function __construct(string $email, User $user, string $url) { $this->email = $email; $this->user = $user; diff --git a/app/Livewire/Forms/LoginForm.php b/app/Livewire/Forms/LoginForm.php index e5c8496c7..dbcbd5cf3 100644 --- a/app/Livewire/Forms/LoginForm.php +++ b/app/Livewire/Forms/LoginForm.php @@ -26,7 +26,7 @@ class LoginForm extends Form /** * Attempt to authenticate the request's credentials. * - * @throws \Illuminate\Validation\ValidationException + * @throws ValidationException */ public function authenticate(): void { diff --git a/app/Mail/AccountDeleted.php b/app/Mail/AccountDeleted.php index 79c2ae55d..730cae6e0 100644 --- a/app/Mail/AccountDeleted.php +++ b/app/Mail/AccountDeleted.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Mail; use Illuminate\Bus\Queueable; +use Illuminate\Database\Eloquent\Model; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; @@ -13,7 +14,7 @@ class AccountDeleted extends Mailable use Queueable, SerializesModels; /** - * @var \Illuminate\Database\Eloquent\Model|null|object|static + * @var Model|null|object|static */ private $user; diff --git a/app/Mail/AccountExpired.php b/app/Mail/AccountExpired.php index bdb057c07..71c90f1c8 100644 --- a/app/Mail/AccountExpired.php +++ b/app/Mail/AccountExpired.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Mail; +use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; @@ -12,7 +13,7 @@ class AccountExpired extends Mailable { use Queueable, SerializesModels; - public \App\Models\User $user; + public User $user; private mixed $siteEmail; @@ -21,7 +22,7 @@ class AccountExpired extends Mailable /** * Create a new message instance. */ - public function __construct(\App\Models\User $user) + public function __construct(User $user) { $this->user = $user; $this->siteEmail = config('mail.from.address'); diff --git a/app/Mail/AccountWillExpire.php b/app/Mail/AccountWillExpire.php index b354eb01c..c5e09800f 100644 --- a/app/Mail/AccountWillExpire.php +++ b/app/Mail/AccountWillExpire.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Mail; +use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; @@ -14,7 +15,7 @@ class AccountWillExpire extends Mailable private int $days; - private \App\Models\User $user; + private User $user; private mixed $siteEmail; @@ -23,7 +24,7 @@ class AccountWillExpire extends Mailable /** * Create a new message instance. */ - public function __construct(\App\Models\User $user, int $days) + public function __construct(User $user, int $days) { $this->user = $user; $this->days = $days; diff --git a/app/Mail/InvitationMail.php b/app/Mail/InvitationMail.php index 184d404f7..630ef13d2 100644 --- a/app/Mail/InvitationMail.php +++ b/app/Mail/InvitationMail.php @@ -7,6 +7,7 @@ namespace App\Mail; use App\Models\Invitation; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; +use Illuminate\Mail\Mailables\Attachment; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\SerializesModels; @@ -55,7 +56,7 @@ class InvitationMail extends Mailable /** * Get the attachments for the message. * - * @return array + * @return array */ public function attachments(): array { diff --git a/app/Mail/NewAccountCreatedEmail.php b/app/Mail/NewAccountCreatedEmail.php index e173637a3..04ab072ec 100644 --- a/app/Mail/NewAccountCreatedEmail.php +++ b/app/Mail/NewAccountCreatedEmail.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Mail; +use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; @@ -13,7 +14,7 @@ class NewAccountCreatedEmail extends Mailable use Queueable, SerializesModels; /** - * @var \App\Models\User + * @var User */ private $user; diff --git a/app/Models/AnidbEpisode.php b/app/Models/AnidbEpisode.php index 742097150..670747655 100644 --- a/app/Models/AnidbEpisode.php +++ b/app/Models/AnidbEpisode.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -16,7 +17,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; * @property int $episode_no Numeric version of episode (leave 0 for combined episodes). * @property string $episode_title Title of the episode (en, x-jat) * @property string $airdate - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AnidbInfo[] $info + * @property-read Collection|AnidbInfo[] $info * @property-read AnidbTitle $title * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnidbEpisode whereAirdate($value) @@ -56,7 +57,7 @@ class AnidbEpisode extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\AnidbTitle, $this> + * @return BelongsTo */ public function title(): BelongsTo { @@ -64,7 +65,7 @@ class AnidbEpisode extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\AnidbInfo, $this> + * @return HasMany */ public function info(): HasMany { diff --git a/app/Models/AnidbInfo.php b/app/Models/AnidbInfo.php index bfcff30b8..4f226448e 100644 --- a/app/Models/AnidbInfo.php +++ b/app/Models/AnidbInfo.php @@ -87,7 +87,7 @@ class AnidbInfo extends Model /** * Get the title associated with this info. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\AnidbTitle, $this> + * @return BelongsTo */ public function title(): BelongsTo { @@ -97,7 +97,7 @@ class AnidbInfo extends Model /** * Get the releases associated with this anime. * - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function releases(): HasMany { diff --git a/app/Models/AnidbTitle.php b/app/Models/AnidbTitle.php index 5f5bd445d..2d92200a3 100644 --- a/app/Models/AnidbTitle.php +++ b/app/Models/AnidbTitle.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -14,7 +15,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; * @property string $type type of title. * @property string $lang * @property string $title - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AnidbInfo[] $info + * @property-read Collection|AnidbInfo[] $info * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnidbTitle whereAnidbid($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnidbTitle whereLang($value) @@ -52,7 +53,7 @@ class AnidbTitle extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\AnidbInfo, $this> + * @return HasMany */ public function info(): HasMany { diff --git a/app/Models/BookInfo.php b/app/Models/BookInfo.php index 0284e6feb..4d3c4ee6f 100644 --- a/app/Models/BookInfo.php +++ b/app/Models/BookInfo.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Laravel\Scout\Searchable; @@ -25,8 +26,8 @@ use Laravel\Scout\Searchable; * @property string|null $overview * @property string $genre * @property bool $cover - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookInfo whereAsin($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookInfo whereAuthor($value) @@ -86,7 +87,7 @@ class BookInfo extends Model /** * Get the releases associated with this book. * - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function releases(): HasMany { diff --git a/app/Models/Category.php b/app/Models/Category.php index 550771376..3e52e782d 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -22,9 +23,9 @@ use Illuminate\Support\Facades\DB; * @property int $minsizetoformrelease * @property int $maxsizetoformrelease * @property int|null $count Computed count from aggregate queries - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Category[] $children + * @property-read Collection|Category[] $children * @property-read Category|null $parent - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Release[] $releases + * @property-read Collection|Release[] $releases * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Category whereDescription($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Category whereDisablepreview($value) @@ -268,7 +269,7 @@ class Category extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function releases(): HasMany { @@ -276,7 +277,7 @@ class Category extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\RootCategory, $this> + * @return BelongsTo */ public function parent(): BelongsTo { @@ -589,7 +590,7 @@ class Category extends Model * @param array $excludedCats * @return array */ - public static function getCategories(bool $activeOnly = false, array $excludedCats = []): \Illuminate\Database\Eloquent\Collection // @phpstan-ignore missingType.generics + public static function getCategories(bool $activeOnly = false, array $excludedCats = []): Collection // @phpstan-ignore missingType.generics { $sql = self::query() ->with('parent') diff --git a/app/Models/ConsoleInfo.php b/app/Models/ConsoleInfo.php index 30bb828b8..f4c5a91b2 100644 --- a/app/Models/ConsoleInfo.php +++ b/app/Models/ConsoleInfo.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -24,8 +25,8 @@ use Laravel\Scout\Searchable; * @property string|null $releasedate * @property string|null $review * @property bool $cover - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ConsoleInfo whereAsin($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ConsoleInfo whereCover($value) @@ -87,7 +88,7 @@ class ConsoleInfo extends Model /** * Get the genre for the console info. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Genre, $this> + * @return BelongsTo */ public function genre(): BelongsTo { @@ -97,7 +98,7 @@ class ConsoleInfo extends Model /** * Get the releases for the console info. * - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function releases(): HasMany { diff --git a/app/Models/DnzbFailure.php b/app/Models/DnzbFailure.php index 0d5239f91..9240b3182 100644 --- a/app/Models/DnzbFailure.php +++ b/app/Models/DnzbFailure.php @@ -49,7 +49,7 @@ class DnzbFailure extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { @@ -57,7 +57,7 @@ class DnzbFailure extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { diff --git a/app/Models/Forumpost.php b/app/Models/Forumpost.php index 81e8e9f63..eb9df49d1 100644 --- a/app/Models/Forumpost.php +++ b/app/Models/Forumpost.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Model; @@ -19,8 +20,8 @@ use Illuminate\Database\Eloquent\Model; * @property bool $locked * @property bool $sticky * @property int $replies - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Forumpost whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Forumpost whereForumid($value) diff --git a/app/Models/GamesInfo.php b/app/Models/GamesInfo.php index fd5776cf8..52d508326 100644 --- a/app/Models/GamesInfo.php +++ b/app/Models/GamesInfo.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -25,10 +27,10 @@ use Laravel\Scout\Searchable; * @property bool $backdrop * @property string $trailer * @property string $classused - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property-read Genre|null $genre - * @property-read \Illuminate\Database\Eloquent\Collection|Release[] $releases + * @property-read Collection|Release[] $releases * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GamesInfo whereAsin($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GamesInfo whereBackdrop($value) @@ -81,7 +83,7 @@ class GamesInfo extends Model /** * Get the genre for this game. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Genre, $this> + * @return BelongsTo */ public function genre(): BelongsTo { @@ -91,7 +93,7 @@ class GamesInfo extends Model /** * Get the releases for this game. * - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function releases(): HasMany { diff --git a/app/Models/Genre.php b/app/Models/Genre.php index c0096626b..c2c32af42 100644 --- a/app/Models/Genre.php +++ b/app/Models/Genre.php @@ -17,7 +17,7 @@ use Illuminate\Support\Facades\DB; * @property string $title * @property int|null $type * @property bool $disabled - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\MusicInfo[] $music + * @property-read Collection|MusicInfo[] $music * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Genre whereDisabled($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Genre whereId($value) @@ -48,7 +48,7 @@ class Genre extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\MusicInfo, $this> + * @return HasMany */ public function music(): HasMany { @@ -56,7 +56,7 @@ class Genre extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\ConsoleInfo, $this> + * @return HasMany */ public function consoleInfo(): HasMany { @@ -64,7 +64,7 @@ class Genre extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\GamesInfo, $this> + * @return HasMany */ public function gamesInfo(): HasMany { diff --git a/app/Models/Invitation.php b/app/Models/Invitation.php index 9e8624f8a..044e99289 100644 --- a/app/Models/Invitation.php +++ b/app/Models/Invitation.php @@ -7,6 +7,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Carbon; use Illuminate\Support\Str; /** @@ -16,15 +17,15 @@ use Illuminate\Support\Str; * @property string $token * @property string $email * @property int $invited_by - * @property \Illuminate\Support\Carbon $expires_at - * @property \Illuminate\Support\Carbon|null $used_at + * @property Carbon $expires_at + * @property Carbon|null $used_at * @property int|null $used_by * @property bool $is_active * @property array|null $metadata - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\User $invitedBy - * @property-read \App\Models\User|null $usedBy + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property-read User $invitedBy + * @property-read User|null $usedBy * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Invitation newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Invitation newQuery() @@ -78,7 +79,7 @@ class Invitation extends Model // @phpstan-ignore missingType.iterableValue /** * Get the user who created this invitation * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function invitedBy(): BelongsTo { @@ -88,7 +89,7 @@ class Invitation extends Model // @phpstan-ignore missingType.iterableValue /** * Get the user who used this invitation * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function usedBy(): BelongsTo { diff --git a/app/Models/MovieInfo.php b/app/Models/MovieInfo.php index ea50574b4..00ae8db2c 100644 --- a/app/Models/MovieInfo.php +++ b/app/Models/MovieInfo.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Facades\Cache; @@ -27,8 +28,8 @@ use Illuminate\Support\Facades\Cache; * @property string $language * @property bool $cover * @property bool $backdrop - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property string $trailer * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MovieInfo whereActors($value) diff --git a/app/Models/MusicInfo.php b/app/Models/MusicInfo.php index 740b90e69..a00847187 100644 --- a/app/Models/MusicInfo.php +++ b/app/Models/MusicInfo.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Laravel\Scout\Searchable; @@ -24,8 +25,8 @@ use Laravel\Scout\Searchable; * @property int|null $genres_id * @property string|null $tracks * @property bool $cover - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property int|null $_totalcount Computed total count from aggregate queries * @property-read Genre|null $genre * @@ -73,7 +74,7 @@ class MusicInfo extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Genre, $this> + * @return BelongsTo */ public function genre(): BelongsTo { diff --git a/app/Models/PasswordSecurity.php b/app/Models/PasswordSecurity.php index fe9966f2a..f3cca4aa6 100644 --- a/app/Models/PasswordSecurity.php +++ b/app/Models/PasswordSecurity.php @@ -18,7 +18,7 @@ class PasswordSecurity extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { diff --git a/app/Models/Predb.php b/app/Models/Predb.php index 248372b12..0f5f8b0e8 100644 --- a/app/Models/Predb.php +++ b/app/Models/Predb.php @@ -86,7 +86,7 @@ class Predb extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\PredbHash, $this> + * @return HasMany */ public function hash(): HasMany { @@ -94,7 +94,7 @@ class Predb extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function release(): HasMany { diff --git a/app/Models/PredbHash.php b/app/Models/PredbHash.php index a6070b02c..78d82f88b 100644 --- a/app/Models/PredbHash.php +++ b/app/Models/PredbHash.php @@ -48,7 +48,7 @@ class PredbHash extends Model protected $primaryKey = 'hash'; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Predb, $this> + * @return BelongsTo */ public function predb(): BelongsTo { diff --git a/app/Models/Release.php b/app/Models/Release.php index 7d483a4d4..9ae26cc68 100644 --- a/app/Models/Release.php +++ b/app/Models/Release.php @@ -6,11 +6,13 @@ namespace App\Models; use App\Facades\Search; use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; @@ -63,7 +65,7 @@ class Release extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\UsenetGroup, $this> + * @return BelongsTo */ public function group(): BelongsTo { @@ -71,7 +73,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UserDownload, $this> + * @return HasMany */ public function download(): HasMany { @@ -79,7 +81,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UsersRelease, $this> + * @return HasMany */ public function userRelease(): HasMany { @@ -87,7 +89,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\ReleaseFile, $this> + * @return HasMany */ public function file(): HasMany { @@ -95,7 +97,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Category, $this> + * @return BelongsTo */ public function category(): BelongsTo { @@ -103,7 +105,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Predb, $this> + * @return BelongsTo */ public function predb(): BelongsTo { @@ -111,7 +113,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\DnzbFailure, $this> + * @return HasMany */ public function failed(): HasMany { @@ -119,7 +121,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasOne<\App\Models\ReleaseNfo, $this> + * @return HasOne */ public function nfo(): HasOne { @@ -127,7 +129,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\ReleaseComment, $this> + * @return HasMany */ public function comment(): HasMany { @@ -135,7 +137,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\ReleaseReport, $this> + * @return HasMany */ public function reports(): HasMany { @@ -143,7 +145,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\ReleasesGroups, $this> + * @return HasMany */ public function releaseGroup(): HasMany { @@ -151,7 +153,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Video, $this> + * @return BelongsTo */ public function video(): BelongsTo { @@ -159,7 +161,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasOne<\App\Models\VideoData, $this> + * @return HasOne */ public function videoData(): HasOne { @@ -167,7 +169,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\TvEpisode, $this> + * @return BelongsTo */ public function episode(): BelongsTo { @@ -338,7 +340,7 @@ class Release extends Model } /** - * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection|mixed + * @return Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|Collection|mixed */ public static function getReleases() { @@ -500,7 +502,7 @@ class Release extends Model } /** - * @return Release|false|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder|object|null + * @return Release|false|Builder|Model|\Illuminate\Database\Query\Builder|object|null */ public static function getAlternate(string $guid, int $userid) { diff --git a/app/Models/ReleaseComment.php b/app/Models/ReleaseComment.php index 85ab7c133..d9a763f0c 100644 --- a/app/Models/ReleaseComment.php +++ b/app/Models/ReleaseComment.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -21,8 +22,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property string $text_hash * @property string $username * @property int $users_id - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property string|null $host * @property bool $shared * @property string $shareid @@ -67,7 +68,7 @@ class ReleaseComment extends Model protected $dateFormat = false; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { @@ -75,7 +76,7 @@ class ReleaseComment extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { diff --git a/app/Models/ReleaseNfo.php b/app/Models/ReleaseNfo.php index b3b71d2ff..724a9b971 100644 --- a/app/Models/ReleaseNfo.php +++ b/app/Models/ReleaseNfo.php @@ -40,7 +40,7 @@ class ReleaseNfo extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { diff --git a/app/Models/ReleaseReport.php b/app/Models/ReleaseReport.php index 21009e2d2..677e11380 100644 --- a/app/Models/ReleaseReport.php +++ b/app/Models/ReleaseReport.php @@ -75,7 +75,7 @@ class ReleaseReport extends Model /** * Get the release that was reported. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { @@ -85,7 +85,7 @@ class ReleaseReport extends Model /** * Get the user who reported the release. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -95,7 +95,7 @@ class ReleaseReport extends Model /** * Get the admin who reviewed the report. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function reviewer(): BelongsTo { diff --git a/app/Models/ReleasesGroups.php b/app/Models/ReleasesGroups.php index 6205808c9..ccb411c59 100644 --- a/app/Models/ReleasesGroups.php +++ b/app/Models/ReleasesGroups.php @@ -66,7 +66,7 @@ class ReleasesGroups extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { @@ -74,7 +74,7 @@ class ReleasesGroups extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\UsenetGroup, $this> + * @return BelongsTo */ public function group(): BelongsTo { diff --git a/app/Models/RoleExpirationEmail.php b/app/Models/RoleExpirationEmail.php index dd12a8757..e316db85e 100644 --- a/app/Models/RoleExpirationEmail.php +++ b/app/Models/RoleExpirationEmail.php @@ -5,14 +5,15 @@ declare(strict_types=1); namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * App\Models\RoleExpirationEmail. * * @property int $id * @property int $users_id - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property int $day * @property int $week * @property int $month diff --git a/app/Models/RolePromotion.php b/app/Models/RolePromotion.php index 5cda1c153..8197c885f 100644 --- a/app/Models/RolePromotion.php +++ b/app/Models/RolePromotion.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Carbon; @@ -22,7 +23,7 @@ use Spatie\Permission\Models\Role; * @property bool $is_active * @property \Carbon\Carbon|null $created_at * @property \Carbon\Carbon|null $updated_at - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\RolePromotionStat[] $statistics + * @property-read Collection|RolePromotionStat[] $statistics */ class RolePromotion extends Model // @phpstan-ignore missingType.iterableValue { @@ -47,7 +48,7 @@ class RolePromotion extends Model // @phpstan-ignore missingType.iterableValue /** * Get the statistics for this promotion * - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\RolePromotionStat, $this> + * @return HasMany */ public function statistics(): HasMany { @@ -195,8 +196,8 @@ class RolePromotion extends Model // @phpstan-ignore missingType.iterableValue public function trackApplication( int $userId, int $roleId, - ?\Illuminate\Support\Carbon $previousExpiryDate = null, - ?\Illuminate\Support\Carbon $newExpiryDate = null + ?Carbon $previousExpiryDate = null, + ?Carbon $newExpiryDate = null ): RolePromotionStat { return RolePromotionStat::recordPromotion( $userId, @@ -220,7 +221,7 @@ class RolePromotion extends Model // @phpstan-ignore missingType.iterableValue ->get() ->groupBy('role_id') ->map(function ($stats, $roleId) { - /** @var \App\Models\RolePromotionStat|null $firstStat */ + /** @var RolePromotionStat|null $firstStat */ $firstStat = $stats->first(); return [ diff --git a/app/Models/RolePromotionStat.php b/app/Models/RolePromotionStat.php index b970a2e9c..eb88f55a8 100644 --- a/app/Models/RolePromotionStat.php +++ b/app/Models/RolePromotionStat.php @@ -4,8 +4,10 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Spatie\Permission\Models\Role; /** * App\Models\RolePromotionStat @@ -15,14 +17,14 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property int $role_promotion_id * @property int $role_id * @property int $days_added - * @property \Carbon\Carbon|null $previous_expiry_date - * @property \Carbon\Carbon|null $new_expiry_date - * @property \Carbon\Carbon $applied_at - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at - * @property-read \App\Models\User $user - * @property-read \App\Models\RolePromotion $promotion - * @property-read \Spatie\Permission\Models\Role $role + * @property Carbon|null $previous_expiry_date + * @property Carbon|null $new_expiry_date + * @property Carbon $applied_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property-read User $user + * @property-read RolePromotion $promotion + * @property-read Role $role */ class RolePromotionStat extends Model { @@ -46,7 +48,7 @@ class RolePromotionStat extends Model /** * Get the user that received the promotion * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -56,7 +58,7 @@ class RolePromotionStat extends Model /** * Get the promotion that was applied * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\RolePromotion, $this> + * @return BelongsTo */ public function promotion(): BelongsTo { @@ -68,7 +70,7 @@ class RolePromotionStat extends Model */ public function role(): BelongsTo // @phpstan-ignore missingType.generics { - return $this->belongsTo(\Spatie\Permission\Models\Role::class); + return $this->belongsTo(Role::class); } /** @@ -153,8 +155,8 @@ class RolePromotionStat extends Model int $promotionId, int $roleId, int $daysAdded, - ?\Carbon\Carbon $previousExpiryDate = null, - ?\Carbon\Carbon $newExpiryDate = null + ?Carbon $previousExpiryDate = null, + ?Carbon $newExpiryDate = null ): self { return static::create([ 'user_id' => $userId, diff --git a/app/Models/RootCategory.php b/app/Models/RootCategory.php index 30da0090d..1046345bd 100644 --- a/app/Models/RootCategory.php +++ b/app/Models/RootCategory.php @@ -4,7 +4,9 @@ declare(strict_types=1); namespace App\Models; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * App\Models\RootCategory. @@ -13,9 +15,9 @@ use Illuminate\Database\Eloquent\Model; * @property string $title * @property int $status * @property int $disablepreview - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Category[] $categories + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property-read Collection|Category[] $categories * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\RootCategory newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\RootCategory newQuery() diff --git a/app/Models/TvEpisode.php b/app/Models/TvEpisode.php index a479e87e3..320ce5072 100644 --- a/app/Models/TvEpisode.php +++ b/app/Models/TvEpisode.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -19,7 +20,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; * @property string $title Title of the episode. * @property string $firstaired Date of original airing/release. * @property string $summary Description/summary of the episode. - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Release[] $release + * @property-read Collection|Release[] $release * @property-read Video $video * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TvEpisode whereEpisode($value) @@ -52,7 +53,7 @@ class TvEpisode extends Model public $timestamps = false; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Video, $this> + * @return BelongsTo */ public function video(): BelongsTo { @@ -60,7 +61,7 @@ class TvEpisode extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function release(): HasMany { diff --git a/app/Models/UsenetGroup.php b/app/Models/UsenetGroup.php index 5adcf5685..7023ed45d 100644 --- a/app/Models/UsenetGroup.php +++ b/app/Models/UsenetGroup.php @@ -7,7 +7,9 @@ namespace App\Models; use App\Services\NNTP\NNTPService; use App\Services\Nzb\NzbService; use App\Services\ReleaseImageService; +use App\Services\Releases\ReleaseManagementService; use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Facades\DB; @@ -28,7 +30,7 @@ use Illuminate\Support\Facades\DB; * @property bool $active * @property bool $backfill * @property string|null $description - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Release[] $release + * @property-read Collection|Release[] $release * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UsenetGroup whereActive($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UsenetGroup whereBackfill($value) @@ -90,7 +92,7 @@ class UsenetGroup extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function release(): HasMany { @@ -387,7 +389,7 @@ class UsenetGroup extends Model $releases = $res->get(); - $releaseManagement = app(\App\Services\Releases\ReleaseManagementService::class); + $releaseManagement = app(ReleaseManagementService::class); $nzb = app(NzbService::class); $releaseImage = new ReleaseImageService; foreach ($releases as $row) { diff --git a/app/Models/User.php b/app/Models/User.php index 81fbb880b..71a0fcd26 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -198,7 +198,7 @@ final class User extends Authenticatable // ===== Relationships ===== /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\Spatie\Permission\Models\Role, $this> + * @return BelongsTo */ public function role(): BelongsTo { @@ -206,7 +206,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UserRequest, $this> + * @return HasMany */ public function requests(): HasMany { @@ -214,7 +214,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UserDownload, $this> + * @return HasMany */ public function downloads(): HasMany { @@ -222,7 +222,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UsersRelease, $this> + * @return HasMany */ public function releases(): HasMany { @@ -230,7 +230,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UserSerie, $this> + * @return HasMany */ public function series(): HasMany { @@ -238,7 +238,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Invitation, $this> + * @return HasMany */ public function invitations(): HasMany { @@ -246,7 +246,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\DnzbFailure, $this> + * @return HasMany */ public function failedReleases(): HasMany { @@ -254,7 +254,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\ReleaseComment, $this> + * @return HasMany */ public function comments(): HasMany { @@ -262,7 +262,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\RolePromotionStat, $this> + * @return HasMany */ public function promotionStats(): HasMany { @@ -270,7 +270,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UserRoleHistory, $this> + * @return HasMany */ public function roleHistory(): HasMany { @@ -278,7 +278,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasOne<\App\Models\PasswordSecurity, $this> + * @return HasOne */ public function passwordSecurity(): HasOne { @@ -286,7 +286,7 @@ final class User extends Authenticatable } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\UserExcludedCategory, $this> + * @return HasMany */ public function excludedCategories(): HasMany { diff --git a/app/Models/UserDownload.php b/app/Models/UserDownload.php index 5f32ff20b..c9c1ee9e6 100644 --- a/app/Models/UserDownload.php +++ b/app/Models/UserDownload.php @@ -4,6 +4,9 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -46,7 +49,7 @@ class UserDownload extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -54,7 +57,7 @@ class UserDownload extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { @@ -99,7 +102,7 @@ class UserDownload extends Model ->get(); foreach ($downloads as $download) { - $hourKey = \Carbon\Carbon::parse($download->timestamp)->format('H:00'); + $hourKey = Carbon::parse($download->timestamp)->format('H:00'); if (isset($hourlyData[$hourKey])) { $hourlyData[$hourKey]++; } @@ -109,7 +112,7 @@ class UserDownload extends Model } /** - * @return \Illuminate\Database\Eloquent\Collection + * @return Collection */ public static function getDownloadRequestsForUser(mixed $userID) { @@ -120,7 +123,7 @@ class UserDownload extends Model * If a user downloads a NZB, log it. * * - * @return int|\Illuminate\Database\Eloquent\Builder + * @return int|Builder */ public static function addDownloadRequest(mixed $userID, mixed $releaseID) // @phpstan-ignore missingType.generics { diff --git a/app/Models/UserExcludedCategory.php b/app/Models/UserExcludedCategory.php index cfb4aab11..311f814aa 100644 --- a/app/Models/UserExcludedCategory.php +++ b/app/Models/UserExcludedCategory.php @@ -6,6 +6,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Carbon; /** * App\Models\UserExcludedCategory. @@ -13,10 +14,10 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property int $id * @property int $users_id * @property int $categories_id - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\User $user - * @property-read \App\Models\Category $category + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property-read User $user + * @property-read Category $category * * @method static \Illuminate\Database\Eloquent\Builder|UserExcludedCategory whereUsersId($value) * @method static \Illuminate\Database\Eloquent\Builder|UserExcludedCategory whereCategoriesId($value) @@ -41,7 +42,7 @@ class UserExcludedCategory extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -49,7 +50,7 @@ class UserExcludedCategory extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Category, $this> + * @return BelongsTo */ public function category(): BelongsTo { diff --git a/app/Models/UserMovie.php b/app/Models/UserMovie.php index 51aa77190..29462630f 100644 --- a/app/Models/UserMovie.php +++ b/app/Models/UserMovie.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -13,8 +15,8 @@ use Illuminate\Database\Eloquent\Model; * @property int $users_id * @property int|null $imdbid * @property string|null $categories List of categories for user movies - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserMovie whereCategories($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserMovie whereCreatedAt($value) @@ -40,7 +42,7 @@ class UserMovie extends Model /** * @param array $catID - * @return int|\Illuminate\Database\Eloquent\Builder + * @return int|Builder */ public static function addMovie(mixed $uid, mixed $imdbid, array $catID = []) // @phpstan-ignore missingType.generics { diff --git a/app/Models/UserRequest.php b/app/Models/UserRequest.php index afd2490c8..73ea2b82b 100644 --- a/app/Models/UserRequest.php +++ b/app/Models/UserRequest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Facades\DB; @@ -49,7 +50,7 @@ class UserRequest extends Model protected $fillable = ['id', 'users_id', 'request', 'hosthash', 'timestamp']; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -109,7 +110,7 @@ class UserRequest extends Model ->get(); foreach ($requests as $request) { - $hourKey = \Carbon\Carbon::parse($request->timestamp)->format('H:00'); + $hourKey = Carbon::parse($request->timestamp)->format('H:00'); if (isset($hourlyData[$hourKey])) { $hourlyData[$hourKey]++; } diff --git a/app/Models/UserRoleHistory.php b/app/Models/UserRoleHistory.php index 75e17b8a0..1046ae652 100644 --- a/app/Models/UserRoleHistory.php +++ b/app/Models/UserRoleHistory.php @@ -4,9 +4,11 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; use Carbon\CarbonInterface; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Spatie\Permission\Models\Role; /** * App\Models\UserRoleHistory @@ -21,8 +23,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property bool $is_stacked * @property string|null $change_reason * @property int|null $changed_by - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property-read User $user * @property-read User|null $changedByUser */ @@ -52,7 +54,7 @@ class UserRoleHistory extends Model /** * Get the user this history belongs to * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -62,7 +64,7 @@ class UserRoleHistory extends Model /** * Get the admin who made this change * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function changedByUser(): BelongsTo { @@ -74,7 +76,7 @@ class UserRoleHistory extends Model */ public function oldRole(): BelongsTo // @phpstan-ignore missingType.generics { - return $this->belongsTo(\Spatie\Permission\Models\Role::class, 'old_role_id'); + return $this->belongsTo(Role::class, 'old_role_id'); } /** @@ -82,7 +84,7 @@ class UserRoleHistory extends Model */ public function newRole(): BelongsTo // @phpstan-ignore missingType.generics { - return $this->belongsTo(\Spatie\Permission\Models\Role::class, 'new_role_id'); + return $this->belongsTo(Role::class, 'new_role_id'); } /** diff --git a/app/Models/UserSerie.php b/app/Models/UserSerie.php index 2d63b89fb..489ea4a8f 100644 --- a/app/Models/UserSerie.php +++ b/app/Models/UserSerie.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -14,8 +16,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property int $users_id * @property int $videos_id FK to videos.id * @property string|null $categories List of categories for user tv shows - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property-read User $user * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserSerie whereCategories($value) @@ -41,7 +43,7 @@ class UserSerie extends Model protected $dateFormat = false; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -53,7 +55,7 @@ class UserSerie extends Model * * * @param array $catID - * @return int|\Illuminate\Database\Eloquent\Builder + * @return int|Builder */ public static function addShow(mixed $userId, mixed $videoId, array $catID = []) // @phpstan-ignore missingType.generics { diff --git a/app/Models/UsersRelease.php b/app/Models/UsersRelease.php index 78973818c..6fa598b95 100644 --- a/app/Models/UsersRelease.php +++ b/app/Models/UsersRelease.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Models; +use Carbon\Carbon; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -13,8 +15,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property int $id * @property int $users_id * @property int $releases_id FK to releases.id - * @property \Carbon\Carbon|null $created_at - * @property \Carbon\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property-read Release $release * @property-read User $user * @@ -40,7 +42,7 @@ class UsersRelease extends Model protected $guarded = ['id']; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User, $this> + * @return BelongsTo */ public function user(): BelongsTo { @@ -48,7 +50,7 @@ class UsersRelease extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Release, $this> + * @return BelongsTo */ public function release(): BelongsTo { @@ -61,7 +63,7 @@ class UsersRelease extends Model } /** - * @return int|\Illuminate\Database\Eloquent\Builder + * @return int|Builder */ public static function addCart(mixed $uid, mixed $releaseid) // @phpstan-ignore missingType.generics { diff --git a/app/Models/Video.php b/app/Models/Video.php index 3c923e7cc..6752d8dcf 100644 --- a/app/Models/Video.php +++ b/app/Models/Video.php @@ -5,9 +5,11 @@ declare(strict_types=1); namespace App\Models; use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; +use Illuminate\Support\Facades\DB; /** * App\Models\Video. @@ -25,9 +27,9 @@ use Illuminate\Database\Eloquent\Relations\HasOne; * @property int $tvmaze ID number for TVMaze site. * @property int $tvrage ID number for TVRage site. * @property bool $source Which site did we use for info? - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\VideoAlias[] $alias - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TvEpisode[] $episode - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Release[] $release + * @property-read Collection|VideoAlias[] $alias + * @property-read Collection|TvEpisode[] $episode + * @property-read Collection|Release[] $release * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Video whereAnidb($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Video whereCountriesId($value) @@ -64,7 +66,7 @@ class Video extends Model public $timestamps = false; /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\VideoAlias, $this> + * @return HasMany */ public function alias(): HasMany { @@ -72,7 +74,7 @@ class Video extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Release, $this> + * @return HasMany */ public function release(): HasMany { @@ -80,7 +82,7 @@ class Video extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\TvEpisode, $this> + * @return HasMany */ public function episode(): HasMany { @@ -88,7 +90,7 @@ class Video extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasOne<\App\Models\TvInfo, $this> + * @return HasOne */ public function tvInfo(): HasOne { @@ -203,7 +205,7 @@ class Video extends Model ORDER BY videos.title ASC "; - $results = \Illuminate\Support\Facades\DB::select($sql, $params); + $results = DB::select($sql, $params); // Convert stdClass objects to arrays for backward compatibility return array_map(fn ($row) => (array) $row, $results); diff --git a/app/Models/VideoAlias.php b/app/Models/VideoAlias.php index 2782628e0..2fc35c6ce 100644 --- a/app/Models/VideoAlias.php +++ b/app/Models/VideoAlias.php @@ -38,7 +38,7 @@ class VideoAlias extends Model protected $guarded = []; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Video, $this> + * @return BelongsTo */ public function video(): BelongsTo { diff --git a/app/Observers/UserActivityObserver.php b/app/Observers/UserActivityObserver.php index d35939c45..b27ab76b9 100644 --- a/app/Observers/UserActivityObserver.php +++ b/app/Observers/UserActivityObserver.php @@ -7,6 +7,7 @@ namespace App\Observers; use App\Jobs\SendAccountChangedEmail; use App\Models\User; use App\Models\UserActivity; +use Spatie\Permission\Models\Role; class UserActivityObserver { @@ -162,7 +163,7 @@ class UserActivityObserver } try { - $role = \Spatie\Permission\Models\Role::find($roleId); + $role = Role::find($roleId); return $role ? $role->name : "Role #{$roleId}"; } catch (\Exception $e) { diff --git a/app/Observers/UserServiceObserver.php b/app/Observers/UserServiceObserver.php index 5bafeab0b..5975f851a 100644 --- a/app/Observers/UserServiceObserver.php +++ b/app/Observers/UserServiceObserver.php @@ -9,6 +9,7 @@ use App\Jobs\SendWelcomeEmail; use App\Models\User; use Illuminate\Support\Facades\File; use Illuminate\Support\Str; +use Jrean\UserVerification\Exceptions\ModelNotCompliantException; use Jrean\UserVerification\Facades\UserVerification; use Spatie\Permission\Models\Role; @@ -18,7 +19,7 @@ class UserServiceObserver * Handle the user "created" event. * * - * @throws \Jrean\UserVerification\Exceptions\ModelNotCompliantException + * @throws ModelNotCompliantException */ public function created(User $user): void { diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 014637eaf..cc361eb8e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -13,6 +13,7 @@ use App\Observers\MovieInfoObserver; use App\Observers\ReleaseObserver; use App\Observers\RolePromotionObserver; use App\Observers\VideoObserver; +use App\View\Composers\GlobalDataComposer; use Illuminate\Auth\Events\Login; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Event; @@ -38,7 +39,7 @@ class AppServiceProvider extends ServiceProvider 'layouts.guest', 'layouts.app', 'admin.*', - ], \App\View\Composers\GlobalDataComposer::class); + ], GlobalDataComposer::class); Gate::define('viewPulse', function (User $user) { return $user->hasRole('Admin'); diff --git a/app/Services/AdditionalProcessing/MediaExtractionService.php b/app/Services/AdditionalProcessing/MediaExtractionService.php index 09e10a6e7..072627443 100644 --- a/app/Services/AdditionalProcessing/MediaExtractionService.php +++ b/app/Services/AdditionalProcessing/MediaExtractionService.php @@ -20,6 +20,7 @@ use FFMpeg\FFProbe; use FFMpeg\Filters\Video\ResizeFilter; use FFMpeg\Format\Audio\Vorbis; use FFMpeg\Format\Video\Ogg; +use FFMpeg\Media\Video; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; use Mhor\MediaInfo\MediaInfo; @@ -89,7 +90,7 @@ class MediaExtractionService try { if ($this->ffprobe()->isValid($fileLocation)) { - /** @var \FFMpeg\Media\Video $video */ + /** @var Video $video */ $video = $this->ffmpeg()->open($fileLocation); $video->frame(TimeCode::fromString($time === '' ? '00:00:03:00' : $time)) ->save($fileName); @@ -150,7 +151,7 @@ class MediaExtractionService try { if ($this->ffprobe()->isValid($fileLocation)) { - /** @var \FFMpeg\Media\Video $video */ + /** @var Video $video */ $video = $this->ffmpeg()->open($fileLocation); $clip = $video->clip( TimeCode::fromString($lowestLength), @@ -173,7 +174,7 @@ class MediaExtractionService if (! $newMethod) { try { if ($this->ffprobe()->isValid($fileLocation)) { - /** @var \FFMpeg\Media\Video $video */ + /** @var Video $video */ $video = $this->ffmpeg()->open($fileLocation); $clip = $video->clip( TimeCode::fromSeconds(0), diff --git a/app/Services/AdditionalProcessing/ReleaseFileManager.php b/app/Services/AdditionalProcessing/ReleaseFileManager.php index ba0b9a43f..15634bb04 100644 --- a/app/Services/AdditionalProcessing/ReleaseFileManager.php +++ b/app/Services/AdditionalProcessing/ReleaseFileManager.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Services\AdditionalProcessing; +use App\Facades\Search; +use App\Models\Category; use App\Models\MediaInfo as MediaInfoModel; use App\Models\Predb; use App\Models\Release; @@ -17,6 +19,7 @@ use App\Services\NNTP\NNTPService; use App\Services\Nzb\NzbService; use App\Services\ReleaseImageService; use App\Services\Releases\ReleaseBrowseService; +use dariusiii\rarinfo\Par2Info; use Illuminate\Contracts\Filesystem\FileNotFoundException; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\File; @@ -146,7 +149,7 @@ class ReleaseFileManager */ public function updateSearchIndex(int $releaseId): void { - \App\Facades\Search::updateRelease($releaseId); + Search::updateRelease($releaseId); } /** @@ -275,7 +278,7 @@ class ReleaseFileManager // Delete from search index try { - \App\Facades\Search::deleteRelease($id); + Search::deleteRelease($id); } catch (\Throwable) { // Ignore } @@ -296,7 +299,7 @@ class ReleaseFileManager public function processPar2File( string $fileLocation, ReleaseProcessingContext $context, - \dariusiii\rarinfo\Par2Info $par2Info + Par2Info $par2Info ): bool { $par2Info->open($fileLocation); @@ -318,7 +321,7 @@ class ReleaseFileManager // Only get new name if category is OTHER $foundName = true; if ((int) $releaseInfo->proc_pp === 0 && $this->config->renamePar2 - && in_array((int) $context->release->categories_id, \App\Models\Category::OTHERS_GROUP, false) + && in_array((int) $context->release->categories_id, Category::OTHERS_GROUP, false) ) { $foundName = false; } diff --git a/app/Services/Backfill/BackfillService.php b/app/Services/Backfill/BackfillService.php index ec1da6d1a..e89ef3277 100644 --- a/app/Services/Backfill/BackfillService.php +++ b/app/Services/Backfill/BackfillService.php @@ -344,7 +344,7 @@ final class BackfillService /** * Log backfill completion. */ - private function logBackfillComplete(\Illuminate\Support\Carbon $startTime): void + private function logBackfillComplete(Carbon $startTime): void { $duration = now()->diffInSeconds($startTime, true); $this->log("Backfilling completed in {$duration} seconds."); @@ -385,7 +385,7 @@ final class BackfillService /** * Log group completion. */ - private function logGroupComplete(string $shortGroupName, \Illuminate\Support\Carbon $startTime): void + private function logGroupComplete(string $shortGroupName, Carbon $startTime): void { $duration = number_format(now()->timestamp - $startTime->timestamp, 2); $this->log(PHP_EOL."Group {$shortGroupName} processed in {$duration} seconds."); diff --git a/app/Services/BookService.php b/app/Services/BookService.php index 6976c7713..b58d373e4 100644 --- a/app/Services/BookService.php +++ b/app/Services/BookService.php @@ -8,6 +8,7 @@ use App\Models\BookInfo; use App\Models\Category; use App\Models\Release; use App\Models\Settings; +use App\Services\Releases\ReleaseBrowseService; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; @@ -114,7 +115,7 @@ class BookService } $order = $this->getBookOrder($orderBy); $expiresAt = now()->addMinutes(config('nntmux.cache_expiry_medium')); - $showPasswords = app(\App\Services\Releases\ReleaseBrowseService::class)->showPasswords(); + $showPasswords = app(ReleaseBrowseService::class)->showPasswords(); $baseWhere = "boo.cover = 1 AND boo.title != '' " ."AND r.passwordstatus {$showPasswords} " diff --git a/app/Services/Categorization/CategorizationService.php b/app/Services/Categorization/CategorizationService.php index 8ba677bc0..33b25ea86 100644 --- a/app/Services/Categorization/CategorizationService.php +++ b/app/Services/Categorization/CategorizationService.php @@ -6,6 +6,7 @@ namespace App\Services\Categorization; use App\Models\Category; use App\Services\Categorization\Pipes\AbstractCategorizationPipe; +use Blacklight\Categorize; /** * Categorization service using Laravel Pipeline. @@ -106,9 +107,9 @@ class CategorizationService $legacyCategoryId = Category::OTHER_MISC; $legacyCategoryName = 'Unknown'; - if (class_exists(\Blacklight\Categorize::class)) { + if (class_exists(Categorize::class)) { try { - $legacy = new \Blacklight\Categorize; + $legacy = new Categorize; /** @var int $legacyCategoryId */ $legacyCategoryId = (int) $legacy->determineCategory($groupId, $releaseName); $legacyCategory = Category::find($legacyCategoryId); diff --git a/app/Services/GamesService.php b/app/Services/GamesService.php index a5d592344..e755e1ce5 100644 --- a/app/Services/GamesService.php +++ b/app/Services/GamesService.php @@ -9,6 +9,7 @@ use App\Models\GamesInfo; use App\Models\Genre; use App\Models\Release; use App\Models\Settings; +use App\Services\Releases\ReleaseBrowseService; use GuzzleHttp\Exception\ClientException; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Model; @@ -201,7 +202,7 @@ class GamesService } $order = $this->getGamesOrder($orderBy); $expiresAt = now()->addMinutes(config('nntmux.cache_expiry_medium')); - $showPasswords = app(\App\Services\Releases\ReleaseBrowseService::class)->showPasswords(); + $showPasswords = app(ReleaseBrowseService::class)->showPasswords(); $baseWhere = "gi.title != '' AND gi.cover = 1 " ."AND r.passwordstatus {$showPasswords} " diff --git a/app/Services/GenreService.php b/app/Services/GenreService.php index 37d649e48..b15c4ae52 100644 --- a/app/Services/GenreService.php +++ b/app/Services/GenreService.php @@ -43,7 +43,7 @@ class GenreService $genres = $this->getGenres($type); $genresArray = []; foreach ($genres as $genre) { - /** @var \App\Models\Genre $genre */ + /** @var Genre $genre */ $genresArray[$genre->id] = strtolower($genre->title); } diff --git a/app/Services/IGDBService.php b/app/Services/IGDBService.php index 9dae626ae..c1af2fcf6 100644 --- a/app/Services/IGDBService.php +++ b/app/Services/IGDBService.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Services; use Illuminate\Support\Carbon; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\RateLimiter; @@ -313,7 +314,7 @@ class IGDBService $developers = []; if (! empty($game->involved_companies)) { $involvedCompanies = $game->involved_companies; - if ($involvedCompanies instanceof \Illuminate\Support\Collection) { + if ($involvedCompanies instanceof Collection) { $involvedCompanies = $involvedCompanies->toArray(); } foreach ($involvedCompanies as $company) { @@ -393,7 +394,7 @@ class IGDBService $genres = []; if (! empty($game->genres)) { $gameGenres = $game->genres; - if ($gameGenres instanceof \Illuminate\Support\Collection) { + if ($gameGenres instanceof Collection) { $gameGenres = $gameGenres->toArray(); } foreach ($gameGenres as $genre) { @@ -404,7 +405,7 @@ class IGDBService // Fall back to themes if no genres if (empty($genres) && ! empty($game->themes)) { $gameThemes = $game->themes; - if ($gameThemes instanceof \Illuminate\Support\Collection) { + if ($gameThemes instanceof Collection) { $gameThemes = $gameThemes->toArray(); } foreach ($gameThemes as $theme) { @@ -459,7 +460,7 @@ class IGDBService { if (! empty($game->artworks)) { $artworks = $game->artworks; - $firstArtwork = ($artworks instanceof \Illuminate\Support\Collection) ? $artworks->first() : ($artworks[0] ?? null); + $firstArtwork = ($artworks instanceof Collection) ? $artworks->first() : ($artworks[0] ?? null); $url = $this->getImageUrl($firstArtwork, '1080p'); if (! empty($url)) { return $url; @@ -468,7 +469,7 @@ class IGDBService if (! empty($game->screenshots)) { $screenshots = $game->screenshots; - $firstScreenshot = ($screenshots instanceof \Illuminate\Support\Collection) ? $screenshots->first() : ($screenshots[0] ?? null); + $firstScreenshot = ($screenshots instanceof Collection) ? $screenshots->first() : ($screenshots[0] ?? null); return $this->getImageUrl($firstScreenshot, '1080p'); } @@ -483,7 +484,7 @@ class IGDBService { if (! empty($game->videos)) { $videos = $game->videos; - if ($videos instanceof \Illuminate\Support\Collection) { + if ($videos instanceof Collection) { $videos = $videos->toArray(); } foreach ($videos as $video) { @@ -503,7 +504,7 @@ class IGDBService protected function getAgeRating(Game $game): string { $ageRatings = $game->age_ratings ?? []; - if ($ageRatings instanceof \Illuminate\Support\Collection) { + if ($ageRatings instanceof Collection) { $ageRatings = $ageRatings->toArray(); } @@ -594,7 +595,7 @@ class IGDBService } if (! empty($game->game_modes)) { $gameModes = $game->game_modes; - if ($gameModes instanceof \Illuminate\Support\Collection) { + if ($gameModes instanceof Collection) { $modes = $gameModes->map(fn ($m) => is_array($m) ? ($m['name'] ?? '') : ($m->name ?? ''))->toArray(); } else { $modes = array_map(fn ($m) => $m['name'] ?? '', $gameModes); diff --git a/app/Services/ItunesService.php b/app/Services/ItunesService.php index 6e78b3c4a..29b5fb85c 100644 --- a/app/Services/ItunesService.php +++ b/app/Services/ItunesService.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Services; +use Carbon\Carbon; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Support\Facades\Cache; @@ -369,7 +370,7 @@ class ItunesService protected function parseDate(string $dateString): ?string { try { - return \Carbon\Carbon::parse($dateString)->format('Y-m-d'); + return Carbon::parse($dateString)->format('Y-m-d'); } catch (\Exception $e) { return null; } diff --git a/app/Services/MediaProcessingService.php b/app/Services/MediaProcessingService.php index 8c2f30ae0..7deab2e05 100644 --- a/app/Services/MediaProcessingService.php +++ b/app/Services/MediaProcessingService.php @@ -15,6 +15,7 @@ use FFMpeg\FFProbe; use FFMpeg\Filters\Video\ResizeFilter; use FFMpeg\Format\Audio\Vorbis; use FFMpeg\Format\Video\Ogg; +use FFMpeg\Media\Video; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; use Mhor\MediaInfo\MediaInfo; @@ -123,7 +124,7 @@ class MediaProcessingService $time = $this->getVideoTime($fileLocation); if ($this->ffprobe->isValid($fileLocation)) { try { - /** @var \FFMpeg\Media\Video $video */ + /** @var Video $video */ $video = $this->ffmpeg->open($fileLocation); $video->frame(TimeCode::fromString($time === '' ? '00:00:03:00' : $time)) ->save($fileName); @@ -178,7 +179,7 @@ class MediaProcessingService } if ($this->ffprobe->isValid($fileLocation)) { try { - /** @var \FFMpeg\Media\Video $video */ + /** @var Video $video */ $video = $this->ffmpeg->open($fileLocation); $videoSample = $video->clip(TimeCode::fromString($lowestLength), TimeCode::fromSeconds($durationSeconds)); $format = new Ogg; @@ -195,7 +196,7 @@ class MediaProcessingService } if (! $newMethod && $this->ffprobe->isValid($fileLocation)) { try { - /** @var \FFMpeg\Media\Video $video */ + /** @var Video $video */ $video = $this->ffmpeg->open($fileLocation); $videoSample = $video->clip(TimeCode::fromSeconds(0), TimeCode::fromSeconds($durationSeconds)); $format = new Ogg; diff --git a/app/Services/MovieBrowseService.php b/app/Services/MovieBrowseService.php index 8a8bdfdb1..1686a5aa6 100644 --- a/app/Services/MovieBrowseService.php +++ b/app/Services/MovieBrowseService.php @@ -6,6 +6,7 @@ namespace App\Services; use App\Models\Category; use App\Models\MovieInfo; +use App\Services\Releases\ReleaseBrowseService; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; @@ -18,7 +19,7 @@ class MovieBrowseService public function __construct() { - $this->showPasswords = app(\App\Services\Releases\ReleaseBrowseService::class)->showPasswords(); + $this->showPasswords = app(ReleaseBrowseService::class)->showPasswords(); } /** diff --git a/app/Services/MovieService.php b/app/Services/MovieService.php index 8461f8bdf..e795bc425 100644 --- a/app/Services/MovieService.php +++ b/app/Services/MovieService.php @@ -9,6 +9,7 @@ use App\Models\Category; use App\Models\MovieInfo; use App\Models\Release; use App\Models\Settings; +use App\Services\Releases\ReleaseBrowseService; use App\Services\TvProcessing\Providers\TraktProvider; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; @@ -92,7 +93,7 @@ class MovieService $this->imdburl = (int) Settings::settingValue('imdburl') !== 0; $this->movieqty = Settings::settingValue('maximdbprocessed') !== '' ? (int) Settings::settingValue('maximdbprocessed') : 100; - $this->showPasswords = app(\App\Services\Releases\ReleaseBrowseService::class)->showPasswords(); + $this->showPasswords = app(ReleaseBrowseService::class)->showPasswords(); $this->echooutput = config('nntmux.echocli'); $this->imgSavePath = storage_path('covers/movies/'); diff --git a/app/Services/NNTP/NNTPService.php b/app/Services/NNTP/NNTPService.php index 8eb5a3efd..6e8729909 100644 --- a/app/Services/NNTP/NNTPService.php +++ b/app/Services/NNTP/NNTPService.php @@ -900,8 +900,8 @@ class NNTPService extends NntpClient * of their _getTextResponse function since it is incompatible at decoding * headers when XFeature GZip compression is enabled server side. * - * @return \App\Services\NNTP\NNTPService|array|string Our overridden function when compression is enabled. - * parent Parent function when no compression. + * @return NNTPService|array|string Our overridden function when compression is enabled. + * parent Parent function when no compression. */ public function _getTextResponse(): NNTPService|array|string { diff --git a/app/Services/NameFixing/NameFixingService.php b/app/Services/NameFixing/NameFixingService.php index cc3172ab3..1c5be371f 100644 --- a/app/Services/NameFixing/NameFixingService.php +++ b/app/Services/NameFixing/NameFixingService.php @@ -10,6 +10,7 @@ use App\Models\Release; use App\Services\NameFixing\Extractors\FileNameExtractor; use App\Services\NameFixing\Extractors\NfoNameExtractor; use App\Services\NNTP\NNTPService; +use App\Services\Nzb\NzbContentsService; /** * Main service for name fixing operations. @@ -993,7 +994,7 @@ class NameFixingService if ($total > 0) { $this->_totalReleases = $total; cli()->info(number_format($total).' releases to process.'); - $nzbContentsService = app(\App\Services\Nzb\NzbContentsService::class); + $nzbContentsService = app(NzbContentsService::class); foreach ($releases as $release) { /** @var Release $release */ diff --git a/app/Services/Nzb/NzbImportService.php b/app/Services/Nzb/NzbImportService.php index 0a61ba76d..6ee5ea64a 100644 --- a/app/Services/Nzb/NzbImportService.php +++ b/app/Services/Nzb/NzbImportService.php @@ -10,6 +10,7 @@ use App\Models\UsenetGroup; use App\Services\BlacklistService; use App\Services\Categorization\CategorizationService; use App\Services\ReleaseCleaningService; +use Illuminate\Contracts\Filesystem\FileNotFoundException; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\File; use Illuminate\Support\Str; @@ -80,7 +81,7 @@ class NzbImportService /** * Begin importing NZB files. * - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @throws FileNotFoundException */ public function beginImport(mixed $filesToProcess, bool $useNzbName = false, bool $delete = false, bool $deleteFailed = false, int $source = 1): bool|string { diff --git a/app/Services/Nzb/NzbService.php b/app/Services/Nzb/NzbService.php index 52fe20d9e..816044a34 100644 --- a/app/Services/Nzb/NzbService.php +++ b/app/Services/Nzb/NzbService.php @@ -9,6 +9,7 @@ use App\Models\Collection; use App\Models\Part; use App\Models\Release; use App\Models\Settings; +use Illuminate\Database\QueryException; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; @@ -53,7 +54,7 @@ class NzbService { try { $nzbSplitLevel = (int) Settings::settingValue('nzbsplitlevel'); - } catch (\Illuminate\Database\QueryException $e) { + } catch (QueryException $e) { // Table doesn't exist yet (e.g., during migrations or tests) $nzbSplitLevel = 1; } diff --git a/app/Services/PostProcessService.php b/app/Services/PostProcessService.php index 30e64e8de..8ed517495 100644 --- a/app/Services/PostProcessService.php +++ b/app/Services/PostProcessService.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Services; +use App\Models\Settings; use App\Services\AdditionalProcessing\AdditionalProcessingOrchestrator; use App\Services\NameFixing\NameFixingService; use App\Services\NNTP\NNTPService; @@ -215,7 +216,7 @@ final class PostProcessService $forkingService = new ForkingService; $processTV = is_numeric($processTV) ? $processTV - : \App\Models\Settings::settingValue('lookuptv'); + : Settings::settingValue('lookuptv'); $renamedOnly = ((int) $processTV === 2); $forkingService->processTv($renamedOnly); diff --git a/app/Services/ReleaseCreationService.php b/app/Services/ReleaseCreationService.php index 9b71c8f36..9a80412a4 100644 --- a/app/Services/ReleaseCreationService.php +++ b/app/Services/ReleaseCreationService.php @@ -186,7 +186,7 @@ class ReleaseCreationService ' Releases added and '. number_format($duplicate). ' duplicate collections deleted in '. - $totalTime.\Illuminate\Support\Str::plural(' second', (int) $totalTime), + $totalTime.Str::plural(' second', (int) $totalTime), true ); } diff --git a/app/Services/ReleaseExtraService.php b/app/Services/ReleaseExtraService.php index 0883ad9d8..232bfcf64 100644 --- a/app/Services/ReleaseExtraService.php +++ b/app/Services/ReleaseExtraService.php @@ -7,6 +7,8 @@ namespace App\Services; use App\Models\AudioData; use App\Models\ReleaseSubtitle; use App\Models\VideoData; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; use Mhor\MediaInfo\Container\MediaInfoContainer; @@ -19,7 +21,7 @@ class ReleaseExtraService * Get video data for a release. * * @param int $id Release ID - * @return \Illuminate\Database\Eloquent\Model|null + * @return Model|null */ public function get(int $id) { @@ -65,7 +67,7 @@ class ReleaseExtraService * Get subtitles for a release. * * @param int $id Release ID - * @return \Illuminate\Database\Eloquent\Model|null + * @return Model|null */ public function getSubs(int $id) { @@ -80,7 +82,7 @@ class ReleaseExtraService * Get video data by release GUID. * * @param string $guid Release GUID - * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder|null + * @return Builder|Model|\Illuminate\Database\Query\Builder|null */ public function getByGuid(string $guid) // @phpstan-ignore missingType.generics { diff --git a/app/Services/ReleaseProcessingService.php b/app/Services/ReleaseProcessingService.php index d8c3113af..8abb1de53 100644 --- a/app/Services/ReleaseProcessingService.php +++ b/app/Services/ReleaseProcessingService.php @@ -15,6 +15,7 @@ use App\Models\UsenetGroup; use App\Services\Categorization\CategorizationService; use App\Services\NNTP\NNTPService; use App\Services\Nzb\NzbService; +use App\Services\Releases\ReleaseBrowseService; use App\Services\Releases\ReleaseManagementService; use App\Support\DTOs\ProcessReleasesSettings; use App\Support\DTOs\ReleaseCreationResult; @@ -1123,11 +1124,11 @@ final class ReleaseProcessingService Release::query() ->select(['id', 'guid']) - ->where('passwordstatus', '=', \App\Services\Releases\ReleaseBrowseService::PASSWD_RAR) + ->where('passwordstatus', '=', ReleaseBrowseService::PASSWD_RAR) ->orWhereIn('id', function ($query): void { $query->select('releases_id') ->from('release_files') - ->where('passworded', '=', \App\Services\Releases\ReleaseBrowseService::PASSWD_RAR); + ->where('passworded', '=', ReleaseBrowseService::PASSWD_RAR); }) ->chunkById(self::BATCH_SIZE, function ($releases) use (&$stats): bool { foreach ($releases as $release) { diff --git a/app/Services/ReleaseRemoverService.php b/app/Services/ReleaseRemoverService.php index e8518413e..7876a7be9 100644 --- a/app/Services/ReleaseRemoverService.php +++ b/app/Services/ReleaseRemoverService.php @@ -5,10 +5,12 @@ declare(strict_types=1); namespace App\Services; use App\Enums\BlacklistConstants; +use App\Facades\Search; use App\Models\Category; use App\Models\Settings; use App\Services\Nzb\NzbService; use App\Services\Releases\ReleaseManagementService; +use Carbon\Carbon; use Exception; use Illuminate\Support\Facades\DB; @@ -288,7 +290,7 @@ class ReleaseRemoverService /** * Log completion message. */ - private function logCompletion(\Carbon\Carbon $timeStart): void + private function logCompletion(Carbon $timeStart): void { if ($this->echoCLI) { cli()->headerOver(($this->delete ? 'Deleted ' : 'Would have deleted ').$this->deletedCount.' release(s). This script ran for '); @@ -615,7 +617,7 @@ class ReleaseRemoverService */ private function performSearch(string $regexMatch): array { - return \App\Facades\Search::searchReleases($regexMatch, 100); + return Search::searchReleases($regexMatch, 100); } /** diff --git a/app/Services/Releases/ReleaseBrowseService.php b/app/Services/Releases/ReleaseBrowseService.php index 93ab5c6b6..f885689c8 100644 --- a/app/Services/Releases/ReleaseBrowseService.php +++ b/app/Services/Releases/ReleaseBrowseService.php @@ -313,7 +313,7 @@ class ReleaseBrowseService /** * @param array $excludedCats - * @return \Illuminate\Database\Eloquent\Collection|mixed + * @return Collection|mixed */ public function getShowsRange(mixed $userShows, mixed $offset, mixed $limit, mixed $orderBy, int $maxAge = -1, array $excludedCats = []) { @@ -588,7 +588,7 @@ class ReleaseBrowseService } } catch (\Exception $fallbackException) { // Log the error for debugging - \Illuminate\Support\Facades\Log::error('getPagerCount failed', [ + Log::error('getPagerCount failed', [ 'query' => $query, 'error' => $fallbackException->getMessage(), ]); diff --git a/app/Services/Releases/ReleaseManagementService.php b/app/Services/Releases/ReleaseManagementService.php index 04a3ad527..9ca58db71 100644 --- a/app/Services/Releases/ReleaseManagementService.php +++ b/app/Services/Releases/ReleaseManagementService.php @@ -8,6 +8,8 @@ use App\Facades\Search; use App\Models\Release; use App\Services\Nzb\NzbService; use App\Services\ReleaseImageService; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; @@ -105,7 +107,7 @@ class ReleaseManagementService } /** - * @return Release[]|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection + * @return Release[]|Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|Collection */ public function getForExport(string $postFrom = '', string $postTo = '', string $groupID = '') // @phpstan-ignore missingType.generics { diff --git a/app/Services/Releases/ReleaseSearchService.php b/app/Services/Releases/ReleaseSearchService.php index 4d4e6bf32..c56bd957f 100644 --- a/app/Services/Releases/ReleaseSearchService.php +++ b/app/Services/Releases/ReleaseSearchService.php @@ -268,7 +268,7 @@ class ReleaseSearchService * @param array $cat Category IDs (list or associative) * @param array $excludedCategories * @param array $siteIdArr - * @return array|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection|mixed + * @return array|Collection|\Illuminate\Support\Collection|mixed */ public function tvSearch(array $siteIdArr = [], string $series = '', string $episode = '', string $airDate = '', int $offset = 0, int $limit = 100, string $name = '', array $cat = [-1], int $maxAge = -1, int $minSize = 0, array $excludedCategories = []): mixed { diff --git a/app/Services/TmdbClient.php b/app/Services/TmdbClient.php index 55150492c..5a3c1f7eb 100644 --- a/app/Services/TmdbClient.php +++ b/app/Services/TmdbClient.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Services; +use Illuminate\Http\Client\PendingRequest; +use Illuminate\Http\Client\RequestException; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -62,9 +64,9 @@ class TmdbClient try { $response = Http::timeout($this->timeout) - ->retry($this->retryTimes, $this->retryDelay, function (\Throwable $exception, \Illuminate\Http\Client\PendingRequest $request, ?string $key = null) { + ->retry($this->retryTimes, $this->retryDelay, function (\Throwable $exception, PendingRequest $request, ?string $key = null) { // Don't retry on 404 errors - resource simply doesn't exist - if ($exception instanceof \Illuminate\Http\Client\RequestException) { + if ($exception instanceof RequestException) { return $exception->response->status() !== 404; } @@ -92,7 +94,7 @@ class TmdbClient return null; } catch (\Throwable $e) { // Check if this is a 404 wrapped in an exception - if ($e instanceof \Illuminate\Http\Client\RequestException && $e->response->status() === 404) { + if ($e instanceof RequestException && $e->response->status() === 404) { Log::debug('TMDB: Resource not found', ['endpoint' => $endpoint]); return null; diff --git a/app/Services/Tmux/TmuxLayoutBuilder.php b/app/Services/Tmux/TmuxLayoutBuilder.php index acfc6d7a3..3006d2681 100644 --- a/app/Services/Tmux/TmuxLayoutBuilder.php +++ b/app/Services/Tmux/TmuxLayoutBuilder.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Services\Tmux; use App\Models\Settings; +use Illuminate\Support\Facades\Process; /** * Service for building tmux window layouts based on sequential mode @@ -326,7 +327,7 @@ class TmuxLayoutBuilder */ protected function commandExists(string $command): bool { - $result = \Illuminate\Support\Facades\Process::timeout(5) + $result = Process::timeout(5) ->run("which {$command} 2>/dev/null"); return $result->successful() && str_contains($result->output(), $command); diff --git a/app/Services/TraktService.php b/app/Services/TraktService.php index a6b67ae23..a31aad998 100644 --- a/app/Services/TraktService.php +++ b/app/Services/TraktService.php @@ -4,6 +4,9 @@ declare(strict_types=1); namespace App\Services; +use Illuminate\Http\Client\PendingRequest; +use Illuminate\Http\Client\RequestException; +use Illuminate\Http\Client\Response; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -110,9 +113,9 @@ class TraktService try { $response = Http::timeout($this->timeout) - ->retry($this->retryTimes, $this->retryDelay, function (\Throwable $exception, \Illuminate\Http\Client\PendingRequest $request, ?string $key = null) { + ->retry($this->retryTimes, $this->retryDelay, function (\Throwable $exception, PendingRequest $request, ?string $key = null) { // Don't retry on 404 - resource doesn't exist - if ($exception instanceof \Illuminate\Http\Client\RequestException) { + if ($exception instanceof RequestException) { $status = $exception->response->status(); if ($status === 404) { return false; @@ -171,7 +174,7 @@ class TraktService return null; } catch (\Throwable $e) { // Check if this is a 404 wrapped in an exception - if ($e instanceof \Illuminate\Http\Client\RequestException && $e->response->status() === 404) { + if ($e instanceof RequestException && $e->response->status() === 404) { Log::debug('Trakt: Resource not found', ['endpoint' => $endpoint]); return null; @@ -189,7 +192,7 @@ class TraktService /** * Get backoff seconds from 429 response (Retry-After header or default). */ - protected function getRateLimitBackoff(\Illuminate\Http\Client\Response $response): int + protected function getRateLimitBackoff(Response $response): int { $retryAfter = $response->header('Retry-After'); if ($retryAfter !== null && is_numeric($retryAfter)) { diff --git a/app/Services/TvProcessing/Providers/AbstractTvProvider.php b/app/Services/TvProcessing/Providers/AbstractTvProvider.php index 1f3f46589..299c82818 100644 --- a/app/Services/TvProcessing/Providers/AbstractTvProvider.php +++ b/app/Services/TvProcessing/Providers/AbstractTvProvider.php @@ -11,6 +11,10 @@ use App\Models\TvEpisode; use App\Models\TvInfo; use App\Models\Video; use App\Services\Releases\ReleaseBrowseService; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\QueryException; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; /** @@ -78,7 +82,7 @@ abstract class AbstractTvProvider extends BaseVideoProvider $this->catWhere = 'categories_id BETWEEN '.Category::TV_ROOT.' AND '.Category::TV_OTHER.' AND categories_id != '.Category::TV_ANIME; try { $this->tvqty = Settings::settingValue('maxrageprocessed') !== '' ? (int) Settings::settingValue('maxrageprocessed') : 75; - } catch (\Illuminate\Database\QueryException $e) { + } catch (QueryException $e) { // Table doesn't exist yet (e.g., during migrations or tests) $this->tvqty = 75; } @@ -130,9 +134,9 @@ abstract class AbstractTvProvider extends BaseVideoProvider abstract public function formatEpisodeInfo(mixed $episode): array; /** - * @return Release[]|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection|int + * @return Release[]|Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|Collection|int */ - public function getTvReleases(string $groupID = '', string $guidChar = '', int $lookupSetting = 1, int $status = 0): array|\Illuminate\Database\Eloquent\Collection|int|\Illuminate\Support\Collection // @phpstan-ignore missingType.generics + public function getTvReleases(string $groupID = '', string $guidChar = '', int $lookupSetting = 1, int $status = 0): array|\Illuminate\Database\Eloquent\Collection|int|Collection // @phpstan-ignore missingType.generics { $ret = 0; if ($lookupSetting === 0) { @@ -340,9 +344,9 @@ abstract class AbstractTvProvider extends BaseVideoProvider } /** - * @return Video|false|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model + * @return Video|false|Builder|Model */ - public function getSiteByID(string $column, int $id): \Illuminate\Database\Eloquent\Model|bool|\Illuminate\Database\Eloquent\Builder|Video|int|string // @phpstan-ignore missingType.generics + public function getSiteByID(string $column, int $id): Model|bool|Builder|Video|int|string // @phpstan-ignore missingType.generics { $return = false; $video = Video::query()->where('id', $id)->first([$column]); diff --git a/app/Services/TvProcessing/Providers/BaseVideoProvider.php b/app/Services/TvProcessing/Providers/BaseVideoProvider.php index 10250acde..76730ba3c 100644 --- a/app/Services/TvProcessing/Providers/BaseVideoProvider.php +++ b/app/Services/TvProcessing/Providers/BaseVideoProvider.php @@ -28,6 +28,8 @@ namespace App\Services\TvProcessing\Providers; use App\Models\TvInfo; use App\Models\Video; use App\Models\VideoAlias; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Cache; /** @@ -320,7 +322,7 @@ abstract class BaseVideoProvider * Retrieves all aliases for given VideoID or VideoID for a given alias. * * - * @return VideoAlias[]|bool|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|mixed + * @return VideoAlias[]|bool|Builder[]|Collection|mixed */ public function getAliases(int $videoId, string $alias = ''): mixed { diff --git a/app/Services/TvProcessing/Providers/TmdbProvider.php b/app/Services/TvProcessing/Providers/TmdbProvider.php index b22c96f56..18586be11 100644 --- a/app/Services/TvProcessing/Providers/TmdbProvider.php +++ b/app/Services/TvProcessing/Providers/TmdbProvider.php @@ -4,8 +4,10 @@ declare(strict_types=1); namespace App\Services\TvProcessing\Providers; +use App\Models\Video; use App\Services\ReleaseImageService; use App\Services\TmdbClient; +use App\Services\TraktService; class TmdbProvider extends AbstractTvProvider { @@ -377,7 +379,7 @@ class TmdbProvider extends AbstractTvProvider */ protected function getAllSiteIdsFromVideoID(int $videoId): array { - $result = \App\Models\Video::query() + $result = Video::query() ->where('id', $videoId) ->first(['tmdb', 'tvdb', 'imdb']); @@ -541,7 +543,7 @@ class TmdbProvider extends AbstractTvProvider protected function lookupTraktId(int $tmdbId, int|string $imdbId, int $tvdbId): int { try { - $traktService = app(\App\Services\TraktService::class); + $traktService = app(TraktService::class); if (! $traktService->isConfigured()) { return 0; diff --git a/app/Services/TvProcessing/Providers/TraktProvider.php b/app/Services/TvProcessing/Providers/TraktProvider.php index dc88480b1..a43d50c00 100644 --- a/app/Services/TvProcessing/Providers/TraktProvider.php +++ b/app/Services/TvProcessing/Providers/TraktProvider.php @@ -4,8 +4,10 @@ declare(strict_types=1); namespace App\Services\TvProcessing\Providers; +use App\Models\Video; use App\Services\ReleaseImageService; use App\Services\TraktService; +use DariusIII\TVMaze\TVMaze; use Illuminate\Support\Carbon; /** @@ -247,7 +249,7 @@ class TraktProvider extends AbstractTvProvider */ protected function getAllSiteIdsFromVideoID(int $videoId): array { - $result = \App\Models\Video::query() + $result = Video::query() ->where('id', $videoId) ->first(['trakt', 'tmdb', 'tvdb', 'imdb']); @@ -425,7 +427,7 @@ class TraktProvider extends AbstractTvProvider protected function lookupTvMazeId(int $tvdbId, int|string $imdbId): int { try { - $tvmazeClient = new \DariusIII\TVMaze\TVMaze; + $tvmazeClient = new TVMaze; // Try TVDB ID first if ($tvdbId > 0) { diff --git a/app/Services/TvProcessing/Providers/TvMazeProvider.php b/app/Services/TvProcessing/Providers/TvMazeProvider.php index d90899e86..b9da8c5ff 100644 --- a/app/Services/TvProcessing/Providers/TvMazeProvider.php +++ b/app/Services/TvProcessing/Providers/TvMazeProvider.php @@ -5,6 +5,8 @@ declare(strict_types=1); namespace App\Services\TvProcessing\Providers; use App\Services\ReleaseImageService; +use App\Services\TmdbClient; +use App\Services\TraktService; use DariusIII\TVMaze\TVMaze as Client; /** @@ -485,7 +487,7 @@ class TvMazeProvider extends AbstractTvProvider try { // Try to get TMDB ID via TMDB's find endpoint - $tmdbClient = app(\App\Services\TmdbClient::class); + $tmdbClient = app(TmdbClient::class); if ($tmdbClient->isConfigured()) { // Try TVDB ID first if ($tvdbId > 0) { @@ -504,7 +506,7 @@ class TvMazeProvider extends AbstractTvProvider } // Try to get Trakt ID via Trakt's search endpoint - $traktService = app(\App\Services\TraktService::class); + $traktService = app(TraktService::class); if ($traktService->isConfigured()) { // Try TVDB ID first if ($tvdbId > 0) { diff --git a/app/Services/TvProcessing/Providers/TvdbProvider.php b/app/Services/TvProcessing/Providers/TvdbProvider.php index aada4fd39..7b6b18a10 100644 --- a/app/Services/TvProcessing/Providers/TvdbProvider.php +++ b/app/Services/TvProcessing/Providers/TvdbProvider.php @@ -6,6 +6,8 @@ namespace App\Services\TvProcessing\Providers; use App\Services\FanartTvService; use App\Services\ReleaseImageService; +use App\Services\TmdbClient; +use App\Services\TraktService; use CanIHaveSomeCoffee\TheTVDbAPI\Exception\ParseException; use CanIHaveSomeCoffee\TheTVDbAPI\Exception\ResourceNotFoundException; use CanIHaveSomeCoffee\TheTVDbAPI\Exception\UnauthorizedException; @@ -448,7 +450,7 @@ class TvdbProvider extends AbstractTvProvider try { // Try to get TMDB ID and other IDs via TMDB's find endpoint - $tmdbClient = app(\App\Services\TmdbClient::class); + $tmdbClient = app(TmdbClient::class); if ($tmdbClient->isConfigured() && $tvdbId > 0) { $tmdbIds = $tmdbClient->lookupTvShowIds($tvdbId, 'tvdb'); if ($tmdbIds !== null) { @@ -457,7 +459,7 @@ class TvdbProvider extends AbstractTvProvider } // Try to get Trakt ID via Trakt's search endpoint - $traktService = app(\App\Services\TraktService::class); + $traktService = app(TraktService::class); if ($traktService->isConfigured()) { // Try TVDB ID first if ($tvdbId > 0) { diff --git a/app/Services/TvProcessing/TvReleaseContext.php b/app/Services/TvProcessing/TvReleaseContext.php index 6f669be3b..9eaa63bb7 100644 --- a/app/Services/TvProcessing/TvReleaseContext.php +++ b/app/Services/TvProcessing/TvReleaseContext.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Services\TvProcessing; +use Illuminate\Database\Eloquent\Model; + /** * Value object containing release information for TV processing. */ @@ -28,7 +30,7 @@ class TvReleaseContext public static function fromRelease(array|object $release): self { // Handle Eloquent models properly - use toArray() instead of casting - if ($release instanceof \Illuminate\Database\Eloquent\Model) { + if ($release instanceof Model) { $data = $release->toArray(); } else { $data = is_array($release) ? $release : (array) $release; diff --git a/app/Support/Auth/AuthenticatesUsers.php b/app/Support/Auth/AuthenticatesUsers.php index 3b475df69..a93eb118f 100644 --- a/app/Support/Auth/AuthenticatesUsers.php +++ b/app/Support/Auth/AuthenticatesUsers.php @@ -4,7 +4,10 @@ declare(strict_types=1); namespace App\Support\Auth; +use Illuminate\Contracts\Auth\StatefulGuard; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\ValidationException; @@ -16,7 +19,7 @@ trait AuthenticatesUsers /** * Show the application's login form. * - * @return \Illuminate\Contracts\View\View + * @return View */ public function showLoginForm(): mixed { @@ -59,7 +62,7 @@ trait AuthenticatesUsers /** * Send the response after the user was authenticated. */ - protected function sendLoginResponse(Request $request): \Illuminate\Http\RedirectResponse|JsonResponse + protected function sendLoginResponse(Request $request): RedirectResponse|JsonResponse { $request->session()->regenerate(); @@ -78,7 +81,7 @@ trait AuthenticatesUsers * The user has been authenticated. * * @param mixed $user - * @return \Illuminate\Http\RedirectResponse|JsonResponse|null + * @return RedirectResponse|JsonResponse|null */ protected function authenticated(Request $request, $user): mixed { @@ -108,7 +111,7 @@ trait AuthenticatesUsers /** * Get the guard to be used during authentication. */ - protected function guard(): \Illuminate\Contracts\Auth\StatefulGuard + protected function guard(): StatefulGuard { return Auth::guard(); } diff --git a/app/Support/Auth/RegistersUsers.php b/app/Support/Auth/RegistersUsers.php index 2b00c491f..62df65ae8 100644 --- a/app/Support/Auth/RegistersUsers.php +++ b/app/Support/Auth/RegistersUsers.php @@ -5,7 +5,10 @@ declare(strict_types=1); namespace App\Support\Auth; use Illuminate\Auth\Events\Registered; +use Illuminate\Contracts\Auth\StatefulGuard; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -16,7 +19,7 @@ trait RegistersUsers /** * Show the application registration form. * - * @return \Illuminate\Contracts\View\View + * @return View */ public function showRegistrationForm(): mixed { @@ -26,7 +29,7 @@ trait RegistersUsers /** * Handle a registration request for the application. */ - public function register(Request $request): \Illuminate\Http\RedirectResponse|JsonResponse + public function register(Request $request): RedirectResponse|JsonResponse { $this->validator($request->all())->validate(); @@ -46,7 +49,7 @@ trait RegistersUsers /** * Get the guard to be used during registration. */ - protected function guard(): \Illuminate\Contracts\Auth\StatefulGuard + protected function guard(): StatefulGuard { return Auth::guard(); } @@ -55,7 +58,7 @@ trait RegistersUsers * The user has been registered. * * @param mixed $user - * @return \Illuminate\Http\RedirectResponse|JsonResponse|null + * @return RedirectResponse|JsonResponse|null */ protected function registered(Request $request, $user): mixed { diff --git a/app/Support/CaptchaHelper.php b/app/Support/CaptchaHelper.php index 088e5360a..5c873550b 100644 --- a/app/Support/CaptchaHelper.php +++ b/app/Support/CaptchaHelper.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Support; +use App\Rules\TurnstileRule; use App\Services\TurnstileService; use Illuminate\Support\Facades\Log; @@ -120,7 +121,7 @@ class CaptchaHelper return [ $fieldName => [ 'required', - new \App\Rules\TurnstileRule, + new TurnstileRule, ], ]; } diff --git a/app/Support/DTOs/SteamGameData.php b/app/Support/DTOs/SteamGameData.php index 5c9451e6f..f30e7b34b 100644 --- a/app/Support/DTOs/SteamGameData.php +++ b/app/Support/DTOs/SteamGameData.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Support\DTOs; +use Illuminate\Support\Carbon; + /** * Data Transfer Object for Steam Game data. * @@ -177,7 +179,7 @@ final readonly class SteamGameData $releaseDate = null; if (! empty($data['release_date']['date'])) { try { - $releaseDate = \Illuminate\Support\Carbon::parse($data['release_date']['date'])->format('Y-m-d'); + $releaseDate = Carbon::parse($data['release_date']['date'])->format('Y-m-d'); } catch (\Exception $e) { $releaseDate = $data['release_date']['date']; } diff --git a/app/Transformers/DetailsTransformer.php b/app/Transformers/DetailsTransformer.php index d1c8470ed..2b83c915b 100644 --- a/app/Transformers/DetailsTransformer.php +++ b/app/Transformers/DetailsTransformer.php @@ -6,17 +6,18 @@ namespace App\Transformers; use App\Models\Category; use App\Models\Release; +use App\Models\User; use Illuminate\Support\Carbon; use League\Fractal\TransformerAbstract; class DetailsTransformer extends TransformerAbstract { - protected \App\Models\User $user; + protected User $user; /** * DetailsTransformer constructor. */ - public function __construct(\App\Models\User $user) + public function __construct(User $user) { $this->user = $user; } diff --git a/bootstrap/app.php b/bootstrap/app.php index 1bb1dfd39..12cdea964 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,14 +1,34 @@ withProviders([ - \Laravel\Tinker\TinkerServiceProvider::class, - \Jrean\UserVerification\UserVerificationServiceProvider::class, - \Creativeorange\Gravatar\GravatarServiceProvider::class, + TinkerServiceProvider::class, + UserVerificationServiceProvider::class, + GravatarServiceProvider::class, ]) ->withRouting( web: __DIR__.'/../routes/web.php', @@ -35,36 +55,36 @@ return Application::configure(basePath: dirname(__DIR__)) ]); $middleware->append([ - \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, - \App\Http\Middleware\ForceJsonOnAPI::class, - \App\Http\Middleware\BlockAbusiveServices::class, // Block AIOStreams, Oracle Cloud, UsenetStreamer, Cloudflare WARP + CheckForMaintenanceMode::class, + ForceJsonOnAPI::class, + BlockAbusiveServices::class, // Block AIOStreams, Oracle Cloud, UsenetStreamer, Cloudflare WARP ]); $middleware->replace( - \Illuminate\Http\Middleware\TrustProxies::class, - \Monicahq\Cloudflare\Http\Middleware\TrustProxies::class + TrustProxies::class, + Monicahq\Cloudflare\Http\Middleware\TrustProxies::class ); $middleware->web([ - \Illuminate\Session\Middleware\AuthenticateSession::class, - \App\Http\Middleware\TrustedDevice2FAMiddleware::class, // Add our new trusted device middleware - \App\Http\Middleware\ContentSecurityPolicy::class, // Add CSP middleware for security - \App\Http\Middleware\SetUserTimezone::class, // Set user timezone - \App\Http\Middleware\NoCacheForAuthenticatedUsers::class, // Prevent Cloudflare/CDN caching of authenticated pages + AuthenticateSession::class, + TrustedDevice2FAMiddleware::class, // Add our new trusted device middleware + ContentSecurityPolicy::class, // Add CSP middleware for security + SetUserTimezone::class, // Set user timezone + NoCacheForAuthenticatedUsers::class, // Prevent Cloudflare/CDN caching of authenticated pages ]); $middleware->throttleApi('60,1'); $middleware->alias([ - '2fa' => \App\Http\Middleware\Google2FAMiddleware::class, - 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, - 'clearance' => \App\Http\Middleware\ClearanceMiddleware::class, - 'isVerified' => \Jrean\UserVerification\Middleware\IsVerified::class, - 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, - 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, - 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class, + '2fa' => Google2FAMiddleware::class, + 'bindings' => SubstituteBindings::class, + 'clearance' => ClearanceMiddleware::class, + 'isVerified' => IsVerified::class, + 'permission' => PermissionMiddleware::class, + 'role' => RoleMiddleware::class, + 'role_or_permission' => RoleOrPermissionMiddleware::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { - \Sentry\Laravel\Integration::handles($exceptions); + Integration::handles($exceptions); })->create(); diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 41f7a9d9c..3142f0ab3 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -1,15 +1,27 @@ env('APP_TIMEZONE', 'UTC'), 'aliases' => Facade::defaultAliases()->merge([ - 'Elasticsearch' => App\Facades\Elasticsearch::class, + 'Elasticsearch' => Elasticsearch::class, 'Google2FA' => PragmaRX\Google2FALaravel\Facade::class, - 'Gravatar' => Creativeorange\Gravatar\Facades\Gravatar::class, - 'RedisManager' => Illuminate\Support\Facades\Redis::class, - 'UserVerification' => Jrean\UserVerification\Facades\UserVerification::class, - 'Yenc' => App\Facades\Yenc::class, + 'Gravatar' => Gravatar::class, + 'RedisManager' => Redis::class, + 'UserVerification' => UserVerification::class, + 'Yenc' => Yenc::class, ])->toArray(), ]; diff --git a/config/auth.php b/config/auth.php index a6b2f2491..850f7b710 100644 --- a/config/auth.php +++ b/config/auth.php @@ -1,5 +1,7 @@ [ 'users' => [ 'driver' => 'eloquent', - 'model' => env('AUTH_MODEL', App\Models\User::class), + 'model' => env('AUTH_MODEL', User::class), ], // 'users' => [ diff --git a/config/database.php b/config/database.php index 07f37868b..e3548aa74 100644 --- a/config/database.php +++ b/config/database.php @@ -1,6 +1,7 @@ false, 'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO\MYSQL::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + MYSQL::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], @@ -77,7 +78,7 @@ return [ 'strict' => false, 'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO\MYSQL::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + MYSQL::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], ], diff --git a/config/elasticsearch.php b/config/elasticsearch.php index 9a736f994..438c8c3d2 100644 --- a/config/elasticsearch.php +++ b/config/elasticsearch.php @@ -1,5 +1,7 @@ storage_path('logs/elasticsearch.log'), - 'logLevel' => Monolog\Logger::INFO, + 'logLevel' => Logger::INFO, /** * Retries diff --git a/config/forum/api.php b/config/forum/api.php index 75811cc2b..4454cf046 100644 --- a/config/forum/api.php +++ b/config/forum/api.php @@ -1,5 +1,9 @@ [ - 'category' => TeamTeaTime\Forum\Http\Resources\CategoryResource::class, - 'thread' => TeamTeaTime\Forum\Http\Resources\ThreadResource::class, - 'post' => TeamTeaTime\Forum\Http\Resources\PostResource::class, + 'category' => CategoryResource::class, + 'thread' => ThreadResource::class, + 'post' => PostResource::class, ], ]; diff --git a/config/forum/frontend.php b/config/forum/frontend.php index 46ef8f523..ca486632b 100644 --- a/config/forum/frontend.php +++ b/config/forum/frontend.php @@ -1,5 +1,7 @@ TeamTeaTime\Forum\Support\Frontend\Forum::class, + 'utility_class' => Forum::class, ]; diff --git a/config/forum/integration.php b/config/forum/integration.php index e209254c2..0644827c3 100644 --- a/config/forum/integration.php +++ b/config/forum/integration.php @@ -1,5 +1,14 @@ [ - 'forum' => App\Policies\ForumPolicy::class, + 'forum' => ForumPolicy::class, 'model' => [ - TeamTeaTime\Forum\Models\Category::class => \App\Policies\CategoryPolicy::class, - TeamTeaTime\Forum\Models\Thread::class => \App\Policies\ThreadPolicy::class, - TeamTeaTime\Forum\Models\Post::class => \App\Policies\PostPolicy::class, + Category::class => CategoryPolicy::class, + Thread::class => ThreadPolicy::class, + Post::class => PostPolicy::class, ], ], @@ -29,7 +38,7 @@ return [ | */ - 'user_model' => App\Models\User::class, + 'user_model' => User::class, /* |-------------------------------------------------------------------------- diff --git a/config/geoip.php b/config/geoip.php index ad6764bb5..aed7d1e07 100644 --- a/config/geoip.php +++ b/config/geoip.php @@ -1,5 +1,12 @@ [ 'maxmind_database' => [ - 'class' => Torann\GeoIP\Services\MaxMindDatabase::class, + 'class' => MaxMindDatabase::class, 'database_path' => storage_path('app/geoip.mmdb'), 'update_url' => 'https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz', 'locales' => ['en'], ], 'maxmind_api' => [ - 'class' => Torann\GeoIP\Services\MaxMindWebService::class, + 'class' => MaxMindWebService::class, 'user_id' => env('MAXMIND_USER_ID'), 'license_key' => env('MAXMIND_LICENSE_KEY'), 'locales' => ['en'], ], 'ipapi' => [ - 'class' => Torann\GeoIP\Services\IPApi::class, + 'class' => IPApi::class, 'secure' => true, 'key' => env('IPAPI_KEY'), 'continent_path' => storage_path('app/continents.json'), @@ -74,7 +81,7 @@ return [ ], 'ipgeolocation' => [ - 'class' => Torann\GeoIP\Services\IPGeoLocation::class, + 'class' => IPGeoLocation::class, 'secure' => true, 'key' => env('IPGEOLOCATION_KEY'), 'continent_path' => storage_path('app/continents.json'), @@ -82,13 +89,13 @@ return [ ], 'ipdata' => [ - 'class' => Torann\GeoIP\Services\IPData::class, + 'class' => IPData::class, 'key' => env('IPDATA_API_KEY'), 'secure' => true, ], 'ipfinder' => [ - 'class' => Torann\GeoIP\Services\IPFinder::class, + 'class' => IPFinder::class, 'key' => env('IPFINDER_API_KEY'), 'secure' => true, 'locales' => ['en'], diff --git a/config/google2fa.php b/config/google2fa.php index 754ef29aa..053ff15aa 100644 --- a/config/google2fa.php +++ b/config/google2fa.php @@ -1,5 +1,7 @@ PragmaRX\Google2FALaravel\Support\Constants::QRCODE_IMAGE_BACKEND_SVG, + 'qrcode_image_backend' => Constants::QRCODE_IMAGE_BACKEND_SVG, ]; diff --git a/config/laravel-directory-cleanup.php b/config/laravel-directory-cleanup.php index 2377c2e52..74d36cb40 100644 --- a/config/laravel-directory-cleanup.php +++ b/config/laravel-directory-cleanup.php @@ -1,5 +1,7 @@ [ @@ -30,5 +32,5 @@ return [ * You can customize this behaviour by writing your own clean up policy. A valid policy * is any class that implements `Spatie\DirectoryCleanup\Policies\CleanupPolicy`. */ - 'cleanup_policy' => Spatie\DirectoryCleanup\Policies\DeleteEverything::class, + 'cleanup_policy' => DeleteEverything::class, ]; diff --git a/config/logging.php b/config/logging.php index 89db30475..8e6e514ec 100644 --- a/config/logging.php +++ b/config/logging.php @@ -1,5 +1,8 @@ [ @@ -38,7 +41,7 @@ return [ 'papertrail' => [ 'driver' => 'monolog', 'level' => 'debug', - 'handler' => Monolog\Handler\SyslogUdpHandler::class, + 'handler' => SyslogUdpHandler::class, 'handler_with' => [ 'host' => env('PAPERTRAIL_URL'), 'port' => env('PAPERTRAIL_PORT'), @@ -46,7 +49,7 @@ return [ ], 'stderr' => [ 'driver' => 'monolog', - 'handler' => Monolog\Handler\StreamHandler::class, + 'handler' => StreamHandler::class, 'formatter' => env('LOG_STDERR_FORMATTER'), 'with' => [ 'stream' => 'php://stderr', diff --git a/config/permission.php b/config/permission.php index d77bf26d7..9f206aae6 100644 --- a/config/permission.php +++ b/config/permission.php @@ -1,5 +1,8 @@ [ @@ -13,7 +16,7 @@ return [ * `Spatie\Permission\Contracts\Permission` contract. */ - 'permission' => Spatie\Permission\Models\Permission::class, + 'permission' => Permission::class, /* * When using the "HasRoles" trait from this package, we need to know which @@ -24,7 +27,7 @@ return [ * `Spatie\Permission\Contracts\Role` contract. */ - 'role' => Spatie\Permission\Models\Role::class, + 'role' => Role::class, ], diff --git a/config/services.php b/config/services.php index cf345c69c..b8ffaf900 100644 --- a/config/services.php +++ b/config/services.php @@ -1,5 +1,7 @@ [ @@ -13,7 +15,7 @@ return [ ], 'stripe' => [ - 'model' => App\User::class, + 'model' => User::class, 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), 'webhook' => [ diff --git a/database/factories/ReleaseReportFactory.php b/database/factories/ReleaseReportFactory.php index c9808cf94..2f0fea3bc 100644 --- a/database/factories/ReleaseReportFactory.php +++ b/database/factories/ReleaseReportFactory.php @@ -8,14 +8,14 @@ use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\ReleaseReport> + * @extends Factory */ class ReleaseReportFactory extends Factory { /** * The name of the factory's corresponding model. * - * @var class-string<\App\Models\ReleaseReport> + * @var class-string */ protected $model = ReleaseReport::class; diff --git a/database/migrations/2024_05_25_122046_drop_stored_procedure.php b/database/migrations/2024_05_25_122046_drop_stored_procedure.php index b4b43c1b3..7750800fd 100644 --- a/database/migrations/2024_05_25_122046_drop_stored_procedure.php +++ b/database/migrations/2024_05_25_122046_drop_stored_procedure.php @@ -1,6 +1,7 @@ index($columns, $indexName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Index creation failed, but continue } } @@ -143,7 +143,7 @@ return new class extends Migration $table->dropIndex($indexName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Index drop failed, but continue } } diff --git a/database/migrations/2025_08_10_195505_fix_invitations_column_names.php b/database/migrations/2025_08_10_195505_fix_invitations_column_names.php index 3ee55d6a1..2b1dde117 100644 --- a/database/migrations/2025_08_10_195505_fix_invitations_column_names.php +++ b/database/migrations/2025_08_10_195505_fix_invitations_column_names.php @@ -18,7 +18,7 @@ return new class extends Migration // Drop the existing foreign key constraint first try { $table->dropForeign('FK_users_inv'); - } catch (\Exception $e) { + } catch (Exception $e) { // Foreign key might not exist or have different name } @@ -109,7 +109,7 @@ return new class extends Migration $table->index($columns, $indexName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Index creation failed, but continue } } @@ -126,7 +126,7 @@ return new class extends Migration $table->dropIndex($indexName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Index drop failed, but continue } } diff --git a/database/migrations/2025_11_05_104146_fix_all_tables_collation_to_utf8mb4.php b/database/migrations/2025_11_05_104146_fix_all_tables_collation_to_utf8mb4.php index ed6960e02..7f9283bc4 100644 --- a/database/migrations/2025_11_05_104146_fix_all_tables_collation_to_utf8mb4.php +++ b/database/migrations/2025_11_05_104146_fix_all_tables_collation_to_utf8mb4.php @@ -27,7 +27,7 @@ return new class extends Migration try { // Convert table to utf8mb4 DB::statement("ALTER TABLE `{$tableName}` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); - } catch (\Exception $e) { + } catch (Exception $e) { echo "Warning: Could not convert table {$tableName}: ".$e->getMessage()."\n"; } } diff --git a/database/migrations/2025_12_22_120000_add_composite_indexes_for_admin_performance.php b/database/migrations/2025_12_22_120000_add_composite_indexes_for_admin_performance.php index 4b5b1a51b..433d8c531 100644 --- a/database/migrations/2025_12_22_120000_add_composite_indexes_for_admin_performance.php +++ b/database/migrations/2025_12_22_120000_add_composite_indexes_for_admin_performance.php @@ -102,7 +102,7 @@ return new class extends Migration */ private function indexExists(string $table, string $indexName): bool { - $indexes = \DB::select("SHOW INDEX FROM {$table} WHERE Key_name = ?", [$indexName]); + $indexes = DB::select("SHOW INDEX FROM {$table} WHERE Key_name = ?", [$indexName]); return count($indexes) > 0; } diff --git a/database/migrations/2026_01_15_000000_fix_invitations_foreign_key.php b/database/migrations/2026_01_15_000000_fix_invitations_foreign_key.php index 8acb26d66..e51ccc3f2 100644 --- a/database/migrations/2026_01_15_000000_fix_invitations_foreign_key.php +++ b/database/migrations/2026_01_15_000000_fix_invitations_foreign_key.php @@ -146,7 +146,7 @@ return new class extends Migration $table->dropForeign($foreignKeyName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Foreign key might not exist, continue report($e); } @@ -164,7 +164,7 @@ return new class extends Migration $table->index($columns, $indexName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Index creation failed, but continue report($e); } @@ -182,7 +182,7 @@ return new class extends Migration $table->dropIndex($indexName); }); } - } catch (\Exception $e) { + } catch (Exception $e) { // Index drop failed, but continue report($e); } diff --git a/debug_scrapers.php b/debug_scrapers.php index dd36e0819..279cbf18a 100644 --- a/debug_scrapers.php +++ b/debug_scrapers.php @@ -1,6 +1,8 @@ #!/usr/bin/env php loadHtml($response); // Try various selectors diff --git a/rector.php b/rector.php index 9b8d14272..c944dbcc8 100644 --- a/rector.php +++ b/rector.php @@ -4,6 +4,7 @@ declare(strict_types=1); use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector; use Rector\Config\RectorConfig; +use Rector\Set\ValueObject\SetList; use RectorLaravel\Set\LaravelSetList; return static function (RectorConfig $rectorConfig): void { @@ -26,7 +27,7 @@ return static function (RectorConfig $rectorConfig): void { // define sets of rules $rectorConfig->sets([ LaravelSetList::LARAVEL_100, - \Rector\Set\ValueObject\SetList::PHP_84, - \Rector\Set\ValueObject\SetList::CODE_QUALITY, + SetList::PHP_84, + SetList::CODE_QUALITY, ]); }; diff --git a/routes/api.php b/routes/api.php index cbf2129de..d2de48e4b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -14,6 +14,7 @@ use App\Http\Controllers\Api\ApiController; use App\Http\Controllers\Api\ApiInformController; use App\Http\Controllers\Api\ApiV2Controller; +use App\Services\ReleaseExtraService; Route::prefix('v1')->group(function () { Route::match(['post', 'get'], 'api', [ApiController::class, 'api']); @@ -37,7 +38,7 @@ Route::prefix('inform')->middleware('auth:api')->group(function () { // Mediainfo endpoint (no auth required for internal use) Route::get('release/{id}/mediainfo', function ($id) { - $releaseExtra = app(\App\Services\ReleaseExtraService::class); + $releaseExtra = app(ReleaseExtraService::class); $video = $releaseExtra->getVideo($id); $audio = $releaseExtra->getAudio($id); diff --git a/routes/console.php b/routes/console.php index 12e16649b..a578a799d 100644 --- a/routes/console.php +++ b/routes/console.php @@ -2,6 +2,9 @@ use App\Jobs\PurgeDeletedAccounts; use App\Jobs\RemoveInactiveAccounts; +use App\Models\UserActivityStat; +use App\Models\UserDownload; +use App\Models\UserRequest; use Illuminate\Foundation\Inspiring; use Illuminate\Support\Facades\Schedule; @@ -37,11 +40,11 @@ Schedule::command('metrics:collect')->everyFiveMinutes()->withoutOverlapping(); Schedule::command('metrics:collect --cleanup')->dailyAt('03:00'); // Cleanup old user activity stats weekly (keep last 90 days) Schedule::call(function () { - \App\Models\UserActivityStat::cleanupOldStats(90); + UserActivityStat::cleanupOldStats(90); })->weeklyOn(1, '04:00'); // Cleanup old hourly stats daily (keep last 30 days) Schedule::call(function () { - \App\Models\UserActivityStat::cleanupOldHourlyStats(30); + UserActivityStat::cleanupOldHourlyStats(30); })->dailyAt('04:30'); if (config('nntmux.purge_inactive_users') === true) { Schedule::job(new RemoveInactiveAccounts)->daily(); @@ -49,8 +52,8 @@ if (config('nntmux.purge_inactive_users') === true) { } // Cleanup old API requests and download logs (older than 1 day) - deferred from inline API calls Schedule::call(function () { - \App\Models\UserRequest::clearApiRequests(false); - \App\Models\UserDownload::where('timestamp', '<', now()->subDay())->delete(); + UserRequest::clearApiRequests(false); + UserDownload::where('timestamp', '<', now()->subDay())->delete(); })->name('cleanup-api-request-logs')->hourly()->withoutOverlapping(); // Check tmux health and auto-restart if monitor pane is dead Schedule::command('tmux:health-check --auto-restart')->everyThirtyMinutes()->withoutOverlapping(); diff --git a/routes/web.php b/routes/web.php index 900da3917..f2a7b0e88 100644 --- a/routes/web.php +++ b/routes/web.php @@ -24,6 +24,7 @@ use App\Http\Controllers\Admin\AdminContentController; use App\Http\Controllers\Admin\AdminFailedReleasesController; use App\Http\Controllers\Admin\AdminGameController; use App\Http\Controllers\Admin\AdminGroupController; +use App\Http\Controllers\Admin\AdminInvitationController; use App\Http\Controllers\Admin\AdminLogViewerController; use App\Http\Controllers\Admin\AdminMovieController; use App\Http\Controllers\Admin\AdminMusicController; @@ -32,6 +33,7 @@ use App\Http\Controllers\Admin\AdminPredbController; use App\Http\Controllers\Admin\AdminPromotionController; use App\Http\Controllers\Admin\AdminRegistrationController; use App\Http\Controllers\Admin\AdminReleaseNamingRegexesController; +use App\Http\Controllers\Admin\AdminReleaseReportController; use App\Http\Controllers\Admin\AdminReleasesController; use App\Http\Controllers\Admin\AdminRoleController; use App\Http\Controllers\Admin\AdminShowsController; @@ -42,6 +44,7 @@ use App\Http\Controllers\Admin\AdminUserRoleHistoryController; use App\Http\Controllers\Admin\DeletedUsersController; use App\Http\Controllers\AdultController; use App\Http\Controllers\AjaxController; +use App\Http\Controllers\Api\FileListApiController; use App\Http\Controllers\ApiHelpController; use App\Http\Controllers\Auth\ForgotPasswordController; use App\Http\Controllers\Auth\LoginController; @@ -55,6 +58,7 @@ use App\Http\Controllers\CartController; use App\Http\Controllers\ConsoleController; use App\Http\Controllers\ContactUsController; use App\Http\Controllers\ContentController; +use App\Http\Controllers\CoverController; use App\Http\Controllers\DetailsController; use App\Http\Controllers\FailedReleasesController; use App\Http\Controllers\GamesController; @@ -69,13 +73,15 @@ use App\Http\Controllers\PasswordSecurityController; use App\Http\Controllers\PrivacyPolicyController; use App\Http\Controllers\ProfileController; use App\Http\Controllers\ProfileSecurityController; +use App\Http\Controllers\ReleaseReportController; use App\Http\Controllers\RssController; use App\Http\Controllers\SearchController; +use App\Http\Controllers\SearchSuggestController; use App\Http\Controllers\SeriesController; use App\Http\Controllers\TermsController; // Serve cover images from storage - Must be public (no auth required) -Route::get('/covers/{type}/{filename}', [App\Http\Controllers\CoverController::class, 'show']) +Route::get('/covers/{type}/{filename}', [CoverController::class, 'show']) ->where('type', 'anime|audio|audiosample|book|console|games|movies|music|preview|sample|tvrage|video') ->where('filename', '.*') ->name('covers.show'); @@ -101,9 +107,9 @@ Route::post('2fa/verify', [PasswordSecurityController::class, 'verify2fa'])->nam Route::post('2faVerify', [PasswordSecurityController::class, 'verify2fa'])->name('2faVerify'); // Search autocomplete and suggest API routes (no auth required for better UX) -Route::get('api/search/autocomplete', [\App\Http\Controllers\SearchSuggestController::class, 'autocomplete'])->name('api.search.autocomplete'); -Route::get('api/search/suggest', [\App\Http\Controllers\SearchSuggestController::class, 'suggest'])->name('api.search.suggest'); -Route::get('api/search/assist', [\App\Http\Controllers\SearchSuggestController::class, 'searchAssist'])->name('api.search.assist'); +Route::get('api/search/autocomplete', [SearchSuggestController::class, 'autocomplete'])->name('api.search.autocomplete'); +Route::get('api/search/suggest', [SearchSuggestController::class, 'suggest'])->name('api.search.suggest'); +Route::get('api/search/assist', [SearchSuggestController::class, 'searchAssist'])->name('api.search.assist'); Route::middleware('isVerified')->group(function () { Route::match(['GET', 'POST'], 'resetpassword', [ResetPasswordController::class, 'reset'])->name('resetpassword'); @@ -164,11 +170,11 @@ Route::middleware('isVerified')->group(function () { Route::match(['GET', 'POST'], 'search', [SearchController::class, 'search'])->name('search'); // Release Report routes - Route::post('release-report', [\App\Http\Controllers\ReleaseReportController::class, 'store'])->name('release-report.store'); - Route::get('release-report/reasons', [\App\Http\Controllers\ReleaseReportController::class, 'getReasons'])->name('release-report.reasons'); - Route::get('release-report/check', [\App\Http\Controllers\ReleaseReportController::class, 'checkReported'])->name('release-report.check'); + Route::post('release-report', [ReleaseReportController::class, 'store'])->name('release-report.store'); + Route::get('release-report/reasons', [ReleaseReportController::class, 'getReasons'])->name('release-report.reasons'); + Route::get('release-report/check', [ReleaseReportController::class, 'checkReported'])->name('release-report.check'); - Route::get('api/release/{guid}/filelist', [\App\Http\Controllers\Api\FileListApiController::class, 'getFileList'])->name('api.filelist'); + Route::get('api/release/{guid}/filelist', [FileListApiController::class, 'getFileList'])->name('api.filelist'); Route::match(['GET', 'POST'], 'ajax_profile', [AjaxController::class, 'profile'])->name('ajax_profile'); Route::match(['GET', 'POST'], '2fa', [PasswordSecurityController::class, 'show2faForm'])->name('2fa'); Route::get('2fa/enable', [PasswordSecurityController::class, 'showEnable2faForm'])->name('2fa.enable'); @@ -255,12 +261,12 @@ Route::middleware(['role:Admin', '2fa'])->prefix('admin')->group(function () { Route::post('release-delete/{id}', [AdminReleasesController::class, 'destroy'])->name('admin.release-delete'); // Release Reports Management - Route::get('release-reports', [\App\Http\Controllers\Admin\AdminReleaseReportController::class, 'index'])->name('admin.release-reports'); - Route::post('release-reports/{id}/status', [\App\Http\Controllers\Admin\AdminReleaseReportController::class, 'updateStatus'])->name('admin.release-reports.update-status'); - Route::post('release-reports/{id}/delete-release', [\App\Http\Controllers\Admin\AdminReleaseReportController::class, 'deleteRelease'])->name('admin.release-reports.delete-release'); - Route::post('release-reports/{id}/dismiss', [\App\Http\Controllers\Admin\AdminReleaseReportController::class, 'dismiss'])->name('admin.release-reports.dismiss'); - Route::post('release-reports/{id}/revert', [\App\Http\Controllers\Admin\AdminReleaseReportController::class, 'revert'])->name('admin.release-reports.revert'); - Route::post('release-reports/bulk', [\App\Http\Controllers\Admin\AdminReleaseReportController::class, 'bulkAction'])->name('admin.release-reports.bulk'); + Route::get('release-reports', [AdminReleaseReportController::class, 'index'])->name('admin.release-reports'); + Route::post('release-reports/{id}/status', [AdminReleaseReportController::class, 'updateStatus'])->name('admin.release-reports.update-status'); + Route::post('release-reports/{id}/delete-release', [AdminReleaseReportController::class, 'deleteRelease'])->name('admin.release-reports.delete-release'); + Route::post('release-reports/{id}/dismiss', [AdminReleaseReportController::class, 'dismiss'])->name('admin.release-reports.dismiss'); + Route::post('release-reports/{id}/revert', [AdminReleaseReportController::class, 'revert'])->name('admin.release-reports.revert'); + Route::post('release-reports/bulk', [AdminReleaseReportController::class, 'bulkAction'])->name('admin.release-reports.bulk'); Route::get('show-list', [AdminShowsController::class, 'index'])->name('admin.show-list'); Route::match(['GET', 'POST'], 'show-edit', [AdminShowsController::class, 'edit'])->name('admin.show-edit'); @@ -314,12 +320,12 @@ Route::get('/invitation/{token}', [InvitationController::class, 'show'])->name(' // Admin invitation management routes Route::middleware(['role:Admin', '2fa'])->prefix('admin/invitations')->name('admin.invitations.')->group(function () { - Route::get('/', [App\Http\Controllers\Admin\AdminInvitationController::class, 'index'])->name('index'); - Route::get('/{id}', [App\Http\Controllers\Admin\AdminInvitationController::class, 'show'])->name('show'); - Route::post('/{id}/resend', [App\Http\Controllers\Admin\AdminInvitationController::class, 'resend'])->name('resend'); - Route::post('/{id}/cancel', [App\Http\Controllers\Admin\AdminInvitationController::class, 'cancel'])->name('cancel'); - Route::post('/bulk', [App\Http\Controllers\Admin\AdminInvitationController::class, 'bulkAction'])->name('bulk'); - Route::post('/cleanup', [App\Http\Controllers\Admin\AdminInvitationController::class, 'cleanup'])->name('cleanup'); + Route::get('/', [AdminInvitationController::class, 'index'])->name('index'); + Route::get('/{id}', [AdminInvitationController::class, 'show'])->name('show'); + Route::post('/{id}/resend', [AdminInvitationController::class, 'resend'])->name('resend'); + Route::post('/{id}/cancel', [AdminInvitationController::class, 'cancel'])->name('cancel'); + Route::post('/bulk', [AdminInvitationController::class, 'bulkAction'])->name('bulk'); + Route::post('/cleanup', [AdminInvitationController::class, 'cleanup'])->name('cleanup'); }); Route::post('btcpay/webhook', [BtcPaymentController::class, 'btcPayCallback'])->name('btcpay.webhook'); diff --git a/tests/Feature/AdminLogViewerControllerTest.php b/tests/Feature/AdminLogViewerControllerTest.php index 446f7b2a1..6a042394e 100644 --- a/tests/Feature/AdminLogViewerControllerTest.php +++ b/tests/Feature/AdminLogViewerControllerTest.php @@ -6,6 +6,7 @@ namespace Tests\Feature; use App\Http\Middleware\Google2FAMiddleware; use App\Models\User; +use App\View\Composers\GlobalDataComposer; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Cache; @@ -297,7 +298,7 @@ class AdminLogViewerControllerTest extends TestCase private function resetGlobalComposerState(): void { - $reflection = new \ReflectionClass(\App\View\Composers\GlobalDataComposer::class); + $reflection = new \ReflectionClass(GlobalDataComposer::class); $property = $reflection->getProperty('resolvedData'); $property->setAccessible(true); $property->setValue(null, null); diff --git a/tests/Feature/AdminRegistrationControllerTest.php b/tests/Feature/AdminRegistrationControllerTest.php index 187bb9ee4..c54b84ab6 100644 --- a/tests/Feature/AdminRegistrationControllerTest.php +++ b/tests/Feature/AdminRegistrationControllerTest.php @@ -10,6 +10,7 @@ use App\Models\RegistrationStatusHistory; use App\Models\Settings; use App\Models\User; use App\Services\RegistrationFailureLogService; +use App\View\Composers\GlobalDataComposer; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Cache; @@ -410,7 +411,7 @@ class AdminRegistrationControllerTest extends TestCase private function resetGlobalComposerState(): void { - $reflection = new ReflectionClass(\App\View\Composers\GlobalDataComposer::class); + $reflection = new ReflectionClass(GlobalDataComposer::class); $property = $reflection->getProperty('resolvedData'); $property->setAccessible(true); $property->setValue(null, null); diff --git a/tests/Feature/BinariesStoreHeadersMixedTest.php b/tests/Feature/BinariesStoreHeadersMixedTest.php index f6c828550..a5c784d11 100644 --- a/tests/Feature/BinariesStoreHeadersMixedTest.php +++ b/tests/Feature/BinariesStoreHeadersMixedTest.php @@ -12,8 +12,8 @@ class BinariesStoreHeadersMixedTest extends TestCase { parent::setUp(); config(['database.default' => 'sqlite', 'database.connections.sqlite.database' => ':memory:']); - \Illuminate\Support\Facades\DB::purge(); - \Illuminate\Support\Facades\DB::reconnect(); + DB::purge(); + DB::reconnect(); // Minimal tables. DB::statement('CREATE TABLE settings ( diff --git a/tests/Feature/BinariesStoreHeadersTest.php b/tests/Feature/BinariesStoreHeadersTest.php index 163fa0ae5..d5114ae24 100644 --- a/tests/Feature/BinariesStoreHeadersTest.php +++ b/tests/Feature/BinariesStoreHeadersTest.php @@ -12,8 +12,8 @@ class BinariesStoreHeadersTest extends TestCase { parent::setUp(); config(['database.default' => 'sqlite', 'database.connections.sqlite.database' => ':memory:']); - \Illuminate\Support\Facades\DB::purge(); - \Illuminate\Support\Facades\DB::reconnect(); + DB::purge(); + DB::reconnect(); // Minimal tables. DB::statement('CREATE TABLE settings ( diff --git a/tests/Feature/SteamServiceTest.php b/tests/Feature/SteamServiceTest.php index 0a6b5b78a..dcbfb19a0 100644 --- a/tests/Feature/SteamServiceTest.php +++ b/tests/Feature/SteamServiceTest.php @@ -6,6 +6,7 @@ namespace Tests\Feature; use App\Models\SteamApp; use App\Services\SteamService; +use Illuminate\Http\Client\ConnectionException; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Http; @@ -458,7 +459,7 @@ class SteamServiceTest extends TestCase { Http::fake([ 'store.steampowered.com/api/appdetails*' => function () { - throw new \Illuminate\Http\Client\ConnectionException('Connection timed out'); + throw new ConnectionException('Connection timed out'); }, ]); diff --git a/tests/Unit/HashedReleaseCategorizationTest.php b/tests/Unit/HashedReleaseCategorizationTest.php index c56e760e2..8a4e60bc8 100644 --- a/tests/Unit/HashedReleaseCategorizationTest.php +++ b/tests/Unit/HashedReleaseCategorizationTest.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace Tests\Unit; use App\Models\Category; +use App\Services\Categorization\CategorizationResult; use App\Services\Categorization\Categorizers\MiscCategorizer; use App\Services\Categorization\Pipes\CategorizationPassable; use App\Services\Categorization\Pipes\ConsolePipe; @@ -303,7 +304,7 @@ class HashedReleaseCategorizationTest extends TestCase public function test_other_misc_with_matched_by_is_successful(): void { - $result = new \App\Services\Categorization\CategorizationResult( + $result = new CategorizationResult( Category::OTHER_MISC, 0.5, 'obfuscated_pattern' ); @@ -312,14 +313,14 @@ class HashedReleaseCategorizationTest extends TestCase public function test_no_match_sentinel_is_not_successful(): void { - $result = \App\Services\Categorization\CategorizationResult::noMatch(); + $result = CategorizationResult::noMatch(); $this->assertFalse($result->isSuccessful()); } public function test_other_hashed_is_successful(): void { - $result = new \App\Services\Categorization\CategorizationResult( + $result = new CategorizationResult( Category::OTHER_HASHED, 0.95, 'hash_md5' ); diff --git a/tests/Unit/MediaProcessingServiceTest.php b/tests/Unit/MediaProcessingServiceTest.php index b984ee985..fbddedbf5 100644 --- a/tests/Unit/MediaProcessingServiceTest.php +++ b/tests/Unit/MediaProcessingServiceTest.php @@ -31,7 +31,7 @@ class MediaProcessingServiceTest extends TestCase Facade::setFacadeApplication($container); $this->tmpDir = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'mps_'.uniqid().DIRECTORY_SEPARATOR; - \Illuminate\Support\Facades\File::makeDirectory($this->tmpDir, 0777, true, true); + File::makeDirectory($this->tmpDir, 0777, true, true); } protected function tearDown(): void diff --git a/tests/Unit/TmdbClientTest.php b/tests/Unit/TmdbClientTest.php index 3536a024d..dcd602ed9 100644 --- a/tests/Unit/TmdbClientTest.php +++ b/tests/Unit/TmdbClientTest.php @@ -3,6 +3,7 @@ namespace Tests\Unit; use App\Services\TmdbClient; +use Illuminate\Http\Client\ConnectionException; use Illuminate\Support\Facades\Http; use Tests\TestCase; @@ -509,7 +510,7 @@ class TmdbClientTest extends TestCase { Http::fake([ 'api.themoviedb.org/*' => function () { - throw new \Illuminate\Http\Client\ConnectionException('Connection timed out'); + throw new ConnectionException('Connection timed out'); }, ]); diff --git a/tests/Unit/YencServiceTest.php b/tests/Unit/YencServiceTest.php index 539eff158..7be78741d 100644 --- a/tests/Unit/YencServiceTest.php +++ b/tests/Unit/YencServiceTest.php @@ -2,6 +2,7 @@ namespace Tests\Unit; +use App\Facades\Yenc; use App\Services\YencService; use RuntimeException; use Tests\TestCase; @@ -179,6 +180,6 @@ class YencServiceTest extends TestCase public function test_facade_works(): void { - $this->assertTrue(\App\Facades\Yenc::enabled()); + $this->assertTrue(Yenc::enabled()); } }