Merge commit '23c7c603028edfaa006bdb24e0dbfbb2cdde5cc8' into feature/meilisearch

This commit is contained in:
Buster Neece 2023-01-27 03:00:44 -06:00
commit 97c8b32d66
No known key found for this signature in database
GPG Key ID: F1D2E64A0005E80E
3 changed files with 35 additions and 9 deletions

View File

@ -53,7 +53,23 @@ return static function (App\Event\BuildStationMenu $e) {
'profile' => [
'label' => __('Profile'),
'icon' => 'image',
'url' => $router->fromHere('stations:profile:index'),
'items' => [
[
'label' => __('View Profile'),
'url' => $router->fromHere('stations:profile:index'),
],
[
'label' => __('Edit Profile'),
'url' => $router->fromHere('stations:profile:edit'),
'permission' => StationPermissions::Profile,
],
[
'label' => __('Branding'),
'class' => 'text-muted',
'url' => $router->fromhere('stations:branding'),
'permission' => StationPermissions::Profile,
],
],
],
'public' => [
'label' => __('Public Page'),

View File

@ -254,7 +254,8 @@ final class Queue
return $playlist->getIsEnabled() &&
$this->scheduler->isPlaylistScheduledToPlayNow(
$playlist,
$expectedPlayTime
$expectedPlayTime,
true
);
}

View File

@ -104,7 +104,8 @@ final class Scheduler
public function isPlaylistScheduledToPlayNow(
Entity\StationPlaylist $playlist,
CarbonInterface $now
CarbonInterface $now,
bool $excludeSpecialRules = false
): bool {
$scheduleItems = $playlist->getScheduleItems();
@ -113,7 +114,7 @@ final class Scheduler
return true;
}
$scheduleItem = $this->getActiveScheduleFromCollection($scheduleItems, $now);
$scheduleItem = $this->getActiveScheduleFromCollection($scheduleItems, $now, $excludeSpecialRules);
return null !== $scheduleItem;
}
@ -199,13 +200,14 @@ final class Scheduler
*/
private function getActiveScheduleFromCollection(
Collection $scheduleItems,
CarbonInterface $now
CarbonInterface $now,
bool $excludeSpecialRules = false
): ?Entity\StationSchedule {
if ($scheduleItems->count() > 0) {
foreach ($scheduleItems as $scheduleItem) {
$scheduleName = (string)$scheduleItem;
if ($this->shouldSchedulePlayNow($scheduleItem, $now)) {
if ($this->shouldSchedulePlayNow($scheduleItem, $now, $excludeSpecialRules)) {
$this->logger->debug(
sprintf(
'%s - Should Play Now',
@ -228,7 +230,8 @@ final class Scheduler
public function shouldSchedulePlayNow(
Entity\StationSchedule $schedule,
CarbonInterface $now
CarbonInterface $now,
bool $excludeSpecialRules = false
): bool {
$startTime = Entity\StationSchedule::getDateTime($schedule->getStartTime(), $now);
$endTime = Entity\StationSchedule::getDateTime($schedule->getEndTime(), $now);
@ -277,7 +280,7 @@ final class Scheduler
}
foreach ($comparePeriods as $dateRange) {
if ($this->shouldPlayInSchedulePeriod($schedule, $dateRange, $now)) {
if ($this->shouldPlayInSchedulePeriod($schedule, $dateRange, $now, $excludeSpecialRules)) {
return true;
}
}
@ -288,7 +291,8 @@ final class Scheduler
private function shouldPlayInSchedulePeriod(
Entity\StationSchedule $schedule,
DateRange $dateRange,
CarbonInterface $now
CarbonInterface $now,
bool $excludeSpecialRules = false
): bool {
if (!$dateRange->contains($now)) {
return false;
@ -306,6 +310,11 @@ final class Scheduler
return true;
}
// Skip the remaining checks if we're doing a "still scheduled to play" Queue check.
if ($excludeSpecialRules) {
return true;
}
// Handle "Play Single Track" advanced setting.
if (
$playlist->backendPlaySingleTrack()