diff --git a/src/Controller/Api/Admin/RelaysController.php b/src/Controller/Api/Admin/RelaysController.php index 6a60d5fc2..9ae224a8d 100644 --- a/src/Controller/Api/Admin/RelaysController.php +++ b/src/Controller/Api/Admin/RelaysController.php @@ -159,7 +159,7 @@ class RelaysController $remote->setRelay($relay); $remote->setType(Adapters::REMOTE_AZURARELAY); $remote->setDisplayName($mount->getDisplayName() . ' (' . $relay->getName() . ')'); - $remote->setIsVisibleOnPublicPages($relay->isIsVisibleOnPublicPages()); + $remote->setIsVisibleOnPublicPages($relay->getIsVisibleOnPublicPages()); $remote->setAutodjBitrate($mount->getAutodjBitrate()); $remote->setAutodjFormat($mount->getAutodjFormat()); $remote->setUrl($relay->getBaseUrl()); diff --git a/src/Controller/Api/Admin/StationsController.php b/src/Controller/Api/Admin/StationsController.php index e0c0a0bf0..a2097993d 100644 --- a/src/Controller/Api/Admin/StationsController.php +++ b/src/Controller/Api/Admin/StationsController.php @@ -175,6 +175,7 @@ class StationsController extends AbstractAdminApiCrudController if (!empty($data[$idKey])) { $data[$locationKey] = $data[$idKey]; } + unset($data[$idKey]); } return parent::fromArray($data, $record, $context); diff --git a/src/Controller/Api/Frontend/Dashboard/ChartsAction.php b/src/Controller/Api/Frontend/Dashboard/ChartsAction.php index cfc6af896..08e3f14fa 100644 --- a/src/Controller/Api/Frontend/Dashboard/ChartsAction.php +++ b/src/Controller/Api/Frontend/Dashboard/ChartsAction.php @@ -38,7 +38,7 @@ class ChartsAction $em->getRepository(Entity\Station::class)->findAll(), static function ($station) use ($acl) { /** @var Entity\Station $station */ - return $station->isEnabled() && + return $station->getIsEnabled() && $acl->isAllowed(Acl::STATION_VIEW, $station->getId()); } ); diff --git a/src/Controller/Api/Frontend/Dashboard/StationsAction.php b/src/Controller/Api/Frontend/Dashboard/StationsAction.php index dbace4a59..431172676 100644 --- a/src/Controller/Api/Frontend/Dashboard/StationsAction.php +++ b/src/Controller/Api/Frontend/Dashboard/StationsAction.php @@ -28,7 +28,7 @@ class StationsAction $em->getRepository(Entity\Station::class)->findAll(), static function ($station) use ($acl) { /** @var Entity\Station $station */ - return $station->isEnabled() && + return $station->getIsEnabled() && $acl->isAllowed(Acl::STATION_VIEW, $station->getId()); } ); diff --git a/src/Controller/Api/Stations/Webhooks/ToggleAction.php b/src/Controller/Api/Stations/Webhooks/ToggleAction.php index 756e336c7..3582d9047 100644 --- a/src/Controller/Api/Stations/Webhooks/ToggleAction.php +++ b/src/Controller/Api/Stations/Webhooks/ToggleAction.php @@ -15,7 +15,8 @@ class ToggleAction extends AbstractWebhooksAction { $record = $this->requireRecord($request->getStation(), $id); - $newValue = $record->toggleEnabled(); + $newValue = !$record->getIsEnabled(); + $record->setIsEnabled($newValue); $this->em->persist($record); $this->em->flush(); diff --git a/src/Controller/Frontend/PublicPages/PlaylistAction.php b/src/Controller/Frontend/PublicPages/PlaylistAction.php index a3fe2ad18..ac936944b 100644 --- a/src/Controller/Frontend/PublicPages/PlaylistAction.php +++ b/src/Controller/Frontend/PublicPages/PlaylistAction.php @@ -24,7 +24,7 @@ class PlaylistAction $fa = $request->getStationFrontend(); foreach ($station->getMounts() as $mount) { /** @var Entity\StationMount $mount */ - if (!$mount->isVisibleOnPublicPages()) { + if (!$mount->getIsVisibleOnPublicPages()) { continue; } @@ -41,7 +41,7 @@ class PlaylistAction $adapter = $remote_proxy->getAdapter(); $remote = $remote_proxy->getRemote(); - if (!$remote->isVisibleOnPublicPages()) { + if (!$remote->getIsVisibleOnPublicPages()) { continue; } diff --git a/src/Controller/Stations/ProfileController.php b/src/Controller/Stations/ProfileController.php index 16a49bdfe..011f2b1e2 100644 --- a/src/Controller/Stations/ProfileController.php +++ b/src/Controller/Stations/ProfileController.php @@ -29,7 +29,7 @@ class ProfileController $station = $request->getStation(); $view = $request->getView(); - if (!$station->isEnabled()) { + if (!$station->getIsEnabled()) { return $view->renderToResponse($response, 'stations/profile/disabled'); } diff --git a/src/Entity/ApiGenerator/StationApiGenerator.php b/src/Entity/ApiGenerator/StationApiGenerator.php index cc7b82236..0dc7296b8 100644 --- a/src/Entity/ApiGenerator/StationApiGenerator.php +++ b/src/Entity/ApiGenerator/StationApiGenerator.php @@ -52,7 +52,7 @@ class StationApiGenerator $mounts = []; if ($fa->supportsMounts() && $station->getMounts()->count() > 0) { foreach ($station->getMounts() as $mount) { - if ($showAllMounts || $mount->isVisibleOnPublicPages()) { + if ($showAllMounts || $mount->getIsVisibleOnPublicPages()) { $mounts[] = $mount->api($fa, $baseUri); } } @@ -62,7 +62,7 @@ class StationApiGenerator $remotes = []; foreach ($remoteAdapters as $ra_proxy) { $remote = $ra_proxy->getRemote(); - if ($showAllMounts || $remote->isVisibleOnPublicPages()) { + if ($showAllMounts || $remote->getIsVisibleOnPublicPages()) { $remotes[] = $remote->api($ra_proxy->getAdapter()); } } diff --git a/src/Entity/Relay.php b/src/Entity/Relay.php index 769191c8f..f6c65c3b8 100644 --- a/src/Entity/Relay.php +++ b/src/Entity/Relay.php @@ -78,7 +78,7 @@ class Relay implements IdentifiableEntityInterface $this->name = $this->truncateNullableString($name, 100); } - public function isIsVisibleOnPublicPages(): bool + public function getIsVisibleOnPublicPages(): bool { return $this->is_visible_on_public_pages; } diff --git a/src/Entity/Repository/StationPlaylistMediaRepository.php b/src/Entity/Repository/StationPlaylistMediaRepository.php index 64da88a53..edda6b5dc 100644 --- a/src/Entity/Repository/StationPlaylistMediaRepository.php +++ b/src/Entity/Repository/StationPlaylistMediaRepository.php @@ -286,11 +286,7 @@ class StationPlaylistMediaRepository extends Repository ->getQuery() ->getSingleScalarResult(); - if ($notQueuedMediaCount === 0) { - return true; - } - - return false; + return $notQueuedMediaCount === 0; } public function isQueueEmpty(Entity\StationPlaylist $playlist): bool @@ -312,11 +308,7 @@ class StationPlaylistMediaRepository extends Repository ->getQuery() ->getSingleScalarResult(); - if ($notQueuedMediaCount === $totalMediaCount) { - return true; - } - - return false; + return $notQueuedMediaCount === $totalMediaCount; } protected function getCountPlaylistMediaBaseQuery(Entity\StationPlaylist $playlist): QueryBuilder diff --git a/src/Entity/Repository/StationQueueRepository.php b/src/Entity/Repository/StationQueueRepository.php index 6adfb53ec..abb759f9c 100644 --- a/src/Entity/Repository/StationQueueRepository.php +++ b/src/Entity/Repository/StationQueueRepository.php @@ -42,7 +42,7 @@ class StationQueueRepository extends Repository public function newRecordSentToAutoDj(Entity\StationQueue $queueRow): void { - $queueRow->sentToAutoDj(); + $queueRow->setSentToAutodj(); $this->em->persist($queueRow); $this->em->flush(); } diff --git a/src/Entity/SongHistory.php b/src/Entity/SongHistory.php index fa69c3c1f..9f5428d97 100644 --- a/src/Entity/SongHistory.php +++ b/src/Entity/SongHistory.php @@ -267,7 +267,7 @@ class SongHistory implements SongInterface, IdentifiableEntityInterface public function showInApis(): bool { if ($this->playlist instanceof StationPlaylist) { - return !$this->playlist->isJingle(); + return !$this->playlist->getIsJingle(); } return true; } diff --git a/src/Entity/Station.php b/src/Entity/Station.php index 79acd3862..b396d60d8 100644 --- a/src/Entity/Station.php +++ b/src/Entity/Station.php @@ -771,7 +771,7 @@ class Station implements Stringable, IdentifiableEntityInterface public function getEnablePublicPage(): bool { - return $this->enable_public_page && $this->isEnabled(); + return $this->enable_public_page && $this->getIsEnabled(); } public function setEnablePublicPage(bool $enable_public_page): void @@ -799,7 +799,7 @@ class Station implements Stringable, IdentifiableEntityInterface $this->enable_on_demand_download = $enable_on_demand_download; } - public function isEnabled(): bool + public function getIsEnabled(): bool { return $this->is_enabled; } diff --git a/src/Entity/StationMount.php b/src/Entity/StationMount.php index 322a50961..8ed0f6c03 100644 --- a/src/Entity/StationMount.php +++ b/src/Entity/StationMount.php @@ -159,7 +159,7 @@ class StationMount implements $this->display_name = $this->truncateNullableString($display_name); } - public function isVisibleOnPublicPages(): bool + public function getIsVisibleOnPublicPages(): bool { return $this->is_visible_on_public_pages; } diff --git a/src/Entity/StationPlaylist.php b/src/Entity/StationPlaylist.php index 9cdc69ce6..624022aff 100644 --- a/src/Entity/StationPlaylist.php +++ b/src/Entity/StationPlaylist.php @@ -287,7 +287,7 @@ class StationPlaylist implements $this->is_enabled = $is_enabled; } - public function isJingle(): bool + public function getIsJingle(): bool { return $this->is_jingle; } diff --git a/src/Entity/StationQueue.php b/src/Entity/StationQueue.php index 3f2ea37cb..455c5118e 100644 --- a/src/Entity/StationQueue.php +++ b/src/Entity/StationQueue.php @@ -136,15 +136,17 @@ class StationQueue implements SongInterface, IdentifiableEntityInterface $this->duration = $duration; } - public function isSentToAutoDj(): bool + public function getSentToAutodj(): bool { return $this->sent_to_autodj; } - public function sentToAutoDj(): void + public function setSentToAutodj(bool $newValue = true): void { - $this->setTimestampCued(time()); - $this->sent_to_autodj = true; + if ($newValue) { + $this->setTimestampCued(time()); + } + $this->sent_to_autodj = $newValue; } /** @@ -166,7 +168,7 @@ class StationQueue implements SongInterface, IdentifiableEntityInterface public function showInApis(): bool { if ($this->playlist instanceof StationPlaylist) { - return !$this->playlist->isJingle(); + return !$this->playlist->getIsJingle(); } return true; } diff --git a/src/Entity/StationRemote.php b/src/Entity/StationRemote.php index 5ca56b3e7..18035532c 100644 --- a/src/Entity/StationRemote.php +++ b/src/Entity/StationRemote.php @@ -120,7 +120,7 @@ class StationRemote implements $this->relay = $relay; } - public function isVisibleOnPublicPages(): bool + public function getIsVisibleOnPublicPages(): bool { return $this->is_visible_on_public_pages; } diff --git a/src/Entity/StationStreamer.php b/src/Entity/StationStreamer.php index 9c8e9a93c..187bcd420 100644 --- a/src/Entity/StationStreamer.php +++ b/src/Entity/StationStreamer.php @@ -154,7 +154,7 @@ class StationStreamer implements $this->comments = $comments; } - public function isActive(): bool + public function getIsActive(): bool { return $this->is_active; } diff --git a/src/Entity/StationWebhook.php b/src/Entity/StationWebhook.php index 192773519..0452b4ce7 100644 --- a/src/Entity/StationWebhook.php +++ b/src/Entity/StationWebhook.php @@ -128,17 +128,11 @@ class StationWebhook implements return $this->type; } - public function isEnabled(): bool + public function getIsEnabled(): bool { return $this->is_enabled; } - public function toggleEnabled(): bool - { - $this->is_enabled = !$this->is_enabled; - return $this->is_enabled; - } - public function setIsEnabled(bool $is_enabled): void { $this->is_enabled = $is_enabled; diff --git a/src/Normalizer/DoctrineEntityNormalizer.php b/src/Normalizer/DoctrineEntityNormalizer.php index 4c62510fb..b062899ff 100644 --- a/src/Normalizer/DoctrineEntityNormalizer.php +++ b/src/Normalizer/DoctrineEntityNormalizer.php @@ -1,7 +1,5 @@ getMethodName($key, 'set'); - if (!method_exists($entity, $method_name)) { - return null; + return; } - $method = new ReflectionMethod(get_class($entity), $method_name); - $firstParam = $method->getParameters()[0]; - - $value = $this->castValue($firstParam, $value); - return $entity->$method_name($value); - } - - protected function castValue(ReflectionParameter $firstParam, mixed $value): mixed - { - if (!$firstParam->hasType()) { - return $value; - } - - $firstParamTypeObj = $firstParam->getType(); - - if ( - !($firstParamTypeObj instanceof ReflectionNamedType) - || !$firstParamTypeObj->isBuiltin() - ) { - return $value; - } - - switch ($firstParamTypeObj->getName()) { - case 'string': - if ($value === null) { - if (!$firstParam->allowsNull()) { - return ''; - } - } else { - return (string)$value; - } - break; - - case 'int': - if ($value === null) { - if (!$firstParam->allowsNull()) { - return 0; - } - } else { - return (int)$value; - } - break; - - case 'float': - if ($value === null) { - if (!$firstParam->allowsNull()) { - return 0.0; - } - } else { - return (float)$value; - } - break; - - case 'bool': - if ($value === null) { - if (!$firstParam->allowsNull()) { - return false; - } - } else { - return (bool)$value; - } - break; - } - - return $value; + $entity->$method_name($value); } protected function isEntity(mixed $class): bool @@ -445,11 +369,7 @@ class DoctrineEntityNormalizer extends AbstractNormalizer implements NormalizerA : get_class($class); } - if (!is_string($class)) { - return false; - } - - if (!class_exists($class)) { + if (!is_string($class) || !class_exists($class)) { return false; } diff --git a/src/Radio/AbstractAdapter.php b/src/Radio/AbstractAdapter.php index d12ea6fa1..f6e6e3c45 100644 --- a/src/Radio/AbstractAdapter.php +++ b/src/Radio/AbstractAdapter.php @@ -121,7 +121,7 @@ abstract class AbstractAdapter */ public function hasCommand(Entity\Station $station): bool { - if ($this->environment->isTesting() || !$station->isEnabled()) { + if ($this->environment->isTesting() || !$station->getIsEnabled()) { return false; } diff --git a/src/Radio/AutoDJ/Annotations.php b/src/Radio/AutoDJ/Annotations.php index de648e22c..32f76df08 100644 --- a/src/Radio/AutoDJ/Annotations.php +++ b/src/Radio/AutoDJ/Annotations.php @@ -64,7 +64,7 @@ class Annotations implements EventSubscriberInterface $playlist = $event->getPlaylist(); if ($playlist instanceof Entity\StationPlaylist) { // Handle "Jingle mode" by sending the same metadata as the previous song. - if ($playlist->isJingle()) { + if ($playlist->getIsJingle()) { $event->addAnnotations([ 'jingle_mode' => 'true', ]); @@ -73,8 +73,8 @@ class Annotations implements EventSubscriberInterface if ($np instanceof Entity\Api\NowPlaying\NowPlaying) { $event->addAnnotations( [ - 'title' => $np->now_playing?->song?->title, - 'artist' => $np->now_playing?->song?->artist, + 'title' => $np->now_playing?->song?->title, + 'artist' => $np->now_playing?->song?->artist, 'playlist_id' => null, 'media_id' => null, ] diff --git a/src/Radio/Backend/Liquidsoap/ConfigWriter.php b/src/Radio/Backend/Liquidsoap/ConfigWriter.php index 3a1594484..93511c109 100644 --- a/src/Radio/Backend/Liquidsoap/ConfigWriter.php +++ b/src/Radio/Backend/Liquidsoap/ConfigWriter.php @@ -304,7 +304,7 @@ class ConfigWriter implements EventSubscriberInterface $playlistConfigLines[] = $playlistVarName . ' = cue_cut(id="cue_' . self::cleanUpString($playlistVarName) . '", ' . $playlistVarName . ')'; - if ($playlist->isJingle()) { + if ($playlist->getIsJingle()) { $playlistConfigLines[] = $playlistVarName . ' = drop_metadata(' . $playlistVarName . ')'; } @@ -569,7 +569,7 @@ class ConfigWriter implements EventSubscriberInterface $mediaFilePath = $mediaBaseDir . $mediaFile->getPath(); $mediaAnnotations = $this->liquidsoap->annotateMedia($mediaFile); - if ($playlist->isJingle()) { + if ($playlist->getIsJingle()) { $mediaAnnotations['is_jingle_mode'] = 'true'; unset($mediaAnnotations['media_id']); } else { diff --git a/src/Radio/Configuration.php b/src/Radio/Configuration.php index 95b21b966..e4305b7ec 100644 --- a/src/Radio/Configuration.php +++ b/src/Radio/Configuration.php @@ -86,7 +86,7 @@ class Configuration $supervisorConfig = []; $supervisorConfigFile = $this->getSupervisorConfigFile($station); - if (!$station->isEnabled()) { + if (!$station->getIsEnabled()) { @unlink($supervisorConfigFile); $this->reloadSupervisorForStation($station); return; diff --git a/src/Radio/Frontend/Icecast.php b/src/Radio/Frontend/Icecast.php index 209bdf2d0..a67b0b42d 100644 --- a/src/Radio/Frontend/Icecast.php +++ b/src/Radio/Frontend/Icecast.php @@ -179,7 +179,7 @@ class Icecast extends AbstractFrontend $mount['genre'] = $station->getGenre(); } - if (!$mount_row->isVisibleOnPublicPages()) { + if (!$mount_row->getIsVisibleOnPublicPages()) { $mount['hidden'] = 1; } diff --git a/src/Sync/Task/CheckRequests.php b/src/Sync/Task/CheckRequests.php index 7b8519626..7b90dd8c4 100644 --- a/src/Sync/Task/CheckRequests.php +++ b/src/Sync/Task/CheckRequests.php @@ -66,7 +66,7 @@ class CheckRequests extends AbstractTask // Log the item in SongHistory. $sq = Entity\StationQueue::fromRequest($request); $sq->setTimestampCued(time()); - $sq->sentToAutodj(); + $sq->setSentToAutodj(); $this->em->persist($sq); $this->em->flush(); diff --git a/src/Sync/Task/NowPlayingTask.php b/src/Sync/Task/NowPlayingTask.php index facb7370b..ad104af9a 100644 --- a/src/Sync/Task/NowPlayingTask.php +++ b/src/Sync/Task/NowPlayingTask.php @@ -82,7 +82,7 @@ class NowPlayingTask extends AbstractTask implements EventSubscriberInterface $nowplaying = []; foreach ($this->iterateStations() as $station) { - if (!$station->isEnabled()) { + if (!$station->getIsEnabled()) { continue; } @@ -220,7 +220,7 @@ class NowPlayingTask extends AbstractTask implements EventSubscriberInterface } } - $sq->sentToAutodj(); + $sq->setSentToAutodj(); $this->em->persist($sq); $this->em->flush(); diff --git a/src/Webhook/Dispatcher.php b/src/Webhook/Dispatcher.php index 36b52002b..55c552fea 100644 --- a/src/Webhook/Dispatcher.php +++ b/src/Webhook/Dispatcher.php @@ -57,7 +57,7 @@ class Dispatcher /** @var Entity\StationWebhook[] $enabledWebhooks */ $enabledWebhooks = $station->getWebhooks()->filter( function (Entity\StationWebhook $webhook) { - return $webhook->isEnabled(); + return $webhook->getIsEnabled(); } ); diff --git a/tests/functional/Api_Admin_StationsCest.php b/tests/functional/Api_Admin_StationsCest.php index d57606f16..845195573 100644 --- a/tests/functional/Api_Admin_StationsCest.php +++ b/tests/functional/Api_Admin_StationsCest.php @@ -14,11 +14,11 @@ class Api_Admin_StationsCest extends CestAbstract $I, '/api/admin/stations', [ - 'name' => 'Test Station', + 'name' => 'Test Station', 'short_name' => 'test_station', ], [ - 'name' => 'Modified Station', + 'name' => 'Modified Station', 'frontend_type' => \App\Radio\Adapters::FRONTEND_SHOUTCAST, ] );