playlistRepo->requireForStation($id, $request->getStation()); $exportFileName = 'playlist_' . $record->getShortName() . '.' . $format; $exportLines = []; switch (strtolower($format)) { case 'm3u': $contentType = 'application/x-mpegURL'; foreach ($record->getMediaItems() as $mediaItem) { $exportLines[] = $mediaItem->getMedia()->getPath(); } break; case 'pls': $contentType = 'audio/x-scpls'; $exportLines[] = '[playlist]'; $i = 0; foreach ($record->getMediaItems() as $mediaItem) { $i++; $media = $mediaItem->getMedia(); $exportLines[] = 'File' . $i . '=' . $media->getPath(); $exportLines[] = 'Title' . $i . '=' . $media->getArtist() . ' - ' . $media->getTitle(); $exportLines[] = 'Length' . $i . '=' . $media->getLength(); $exportLines[] = ''; } $exportLines[] = 'NumberOfEntries=' . $i; $exportLines[] = 'Version=2'; break; default: throw new InvalidArgumentException('Invalid format specified.'); } $response->getBody()->write(implode("\n", $exportLines)); return $response->withHeader('Content-Type', $contentType) ->withHeader('Content-Disposition', 'attachment; filename=' . $exportFileName); } }