diff --git a/app/Http/Controllers/Api/AudioFiles.php b/app/Http/Controllers/Api/AudioFiles.php index be006a3d..6a468296 100644 --- a/app/Http/Controllers/Api/AudioFiles.php +++ b/app/Http/Controllers/Api/AudioFiles.php @@ -6,6 +6,7 @@ use App\Repositories\SelectorRepository; use App\Repositories\Serializers\AudioSerializer; use App\Repositories\StopRepository; +use App\Repositories\TourRepository; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\DB; @@ -21,11 +22,20 @@ public function __invoke() ->select(DB::raw(1)) ->whereColumn('stops.id', 'selectors.selectable_id') ->where('selectors.selectable_type', 'stop'); + $publishedTours = App::Make(TourRepository::class) + ->getBaseModel() + ->newQuery() + ->visible() + ->published() + ->select(DB::raw(1)) + ->whereColumn('tours.id', 'selectors.selectable_id') + ->where('selectors.selectable_type', 'tour'); $selectorRepository = App::make(SelectorRepository::class); $audios = $selectorRepository ->getBaseModel() ->newQuery() ->whereExists($publishedStops) + ->orWhereExists($publishedTours) ->get() ->map(fn ($selector) => $selector->audios->isEmpty() ? null : $selector->audios) ->filter(); diff --git a/app/Models/Transformers/StopTransformer.php b/app/Models/Transformers/StopTransformer.php index 27019f04..e1cbcd95 100644 --- a/app/Models/Transformers/StopTransformer.php +++ b/app/Models/Transformers/StopTransformer.php @@ -25,7 +25,7 @@ public function transform(TwillModelContract $stop): array $nid = Util::cantorPair($objectType, $stop->object_id); return [ 'object' => $nid, - 'audio_id' => (string) $stop->selector?->number, + 'audio_id' => (string) $stop->selector?->defaultAudio?->id, 'audio_bumper' => null, // Legacy from Drupal 'sort' => $stop->pivot->position, ]; diff --git a/app/Models/Transformers/TourTransformer.php b/app/Models/Transformers/TourTransformer.php index c666aa15..245d73c7 100644 --- a/app/Models/Transformers/TourTransformer.php +++ b/app/Models/Transformers/TourTransformer.php @@ -41,7 +41,7 @@ public function transform(TwillModelContract $tour): array 'description' => $tour->description, 'intro' => $tour->intro, 'tour_duration' => $tour->duration_in_minutes, - 'tour_audio' => $tour->selector?->apiAudios->first()?->datahub_id, + 'tour_audio' => $tour->selector?->defaultAudio?->id, 'category' => null, // Legacy from Drupal 'weight' => $tour->position, ];