Files
mtdb_movie/app/Actions/Titles/Retrieve/ShowTitle.php
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

56 lines
1.6 KiB
PHP
Executable File

<?php
namespace App\Actions\Titles\Retrieve;
use App\Models\Title;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
class ShowTitle
{
public function execute(int|string $id, array $params): array
{
if (defined('SHOULD_PRERENDER')) {
$params['skipUpdating'] = true;
$params['load'] =
'images,genres,productionCountries,keywords,videos,primaryVideo,seasons,compactCredits';
$params['loadCount'] = 'seasons';
}
if (is_numeric($id) || ctype_digit($id)) {
$title = Title::findOrFail($id);
} else {
$title = Title::firstOrCreateFromEncodedTmdbId($id);
}
if (!Arr::get($params, 'skipUpdating')) {
$title = $title->maybeUpdateFromExternal();
if (!$title) {
abort(404);
}
}
$response = ['title' => $title->loadCount('seasons')];
foreach (explode(',', Arr::get($params, 'load', '')) as $relation) {
$methodName = sprintf('load%s', Str::camel($relation));
if (method_exists($this, $methodName)) {
$response = $this->$methodName($title, $params, $response);
} elseif (method_exists($title, $relation)) {
$title->load($relation);
}
}
foreach (
explode(',', Arr::get($params, 'loadCount', ''))
as $relation
) {
if (method_exists($title, $relation)) {
$title->loadCount($relation);
}
}
return $response;
}
}