From f9a5da2ba3ef719cc53d4d6439b54ebde4d210bd Mon Sep 17 00:00:00 2001 From: Robbt Date: Sun, 20 Jan 2019 19:20:13 -0500 Subject: [PATCH] intro playlist scaffolding in place but needs refinement to get working --- .../common/AutoPlaylistManager.php | 14 ++++++++++++- .../controllers/PreferenceController.php | 2 ++ .../application/forms/GeneralPreferences.php | 4 ++-- airtime_mvc/application/models/Preference.php | 20 +++++++++++++++++++ .../application/models/ShowInstance.php | 17 +++++++++++++++- 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/common/AutoPlaylistManager.php b/airtime_mvc/application/common/AutoPlaylistManager.php index 2d1304165..f71a2566e 100644 --- a/airtime_mvc/application/common/AutoPlaylistManager.php +++ b/airtime_mvc/application/common/AutoPlaylistManager.php @@ -33,12 +33,18 @@ class AutoPlaylistManager { // call the addPlaylist to show function and don't check for user permission to avoid call to non-existant user object $sid = $si->getShowId(); $playlistrepeat = new Application_Model_Show($sid); + $introplaylistid = Application_Model_Preference::GetIntroPlaylist(); + Logging::info("intro"); + Logging::info($introplaylistid); + Logging::info($playlistid); + Logging::info("outro"); + $outroplaylistid = Application_Model_Preference::GetOutroPlaylist(); + Logging::info($outroplaylistid); if ($playlistrepeat->getAutoPlaylistRepeat()) { $full = false; while(!$full) { $si = new Application_Model_ShowInstance($autoplaylist->getDbId()); - $si->addPlaylistToShow($playlistid, false); $ps = $si->getPercentScheduled(); //Logging::info("The total percent scheduled is % $ps"); if ($ps > 100) { @@ -49,6 +55,12 @@ class AutoPlaylistManager { } else { $si->addPlaylistToShow($playlistid, false); + if ($introplaylistid != null) { + $si->addPlaylistToShowStart($introplaylistid, false); + } + if ($outroplaylistid != null) { + $si->addPlaylistToShow($outroplaylistid, false); + } } $si->setAutoPlaylistBuilt(true); diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 0fe76262e..5c1baf132 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -47,6 +47,8 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetDefaultFadeOut($values["stationDefaultFadeOut"]); Application_Model_Preference::SetPodcastAlbumOverride($values["podcastAlbumOverride"]); Application_Model_Preference::SetPodcastAutoSmartblock($values["podcastAutoSmartblock"]); + Application_Model_Preference::SetIntroPlaylist($values["introPlaylistSelect"]); + Application_Model_Preference::SetOutroPlaylist($values["outroPlaylistSelect"]); Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]); Application_Model_Preference::SetAllowedCorsUrls($values["allowedCorsUrls"]); Application_Model_Preference::SetDefaultLocale($values["locale"]); diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index 986bc3eb4..ac18b8e4c 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -105,13 +105,13 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm $introPlaylistSelect = new Zend_Form_Element_Select("introPlaylistSelect"); $introPlaylistSelect->setLabel(_("Intro Autoloading Playlist")); $introPlaylistSelect->setMultiOptions(Application_Model_Library::getPlaylistNames(true)); - $introPlaylistSelect->setValue(null); + $introPlaylistSelect->setValue(Application_Model_Preference::GetIntroPlaylist()); $this->addElement($introPlaylistSelect); $outroPlaylistSelect = new Zend_Form_Element_Select("outroPlaylistSelect"); $outroPlaylistSelect->setLabel(_("Outro Autoloading Playlist")); $outroPlaylistSelect->setMultiOptions(Application_Model_Library::getPlaylistNames(true)); - $outroPlaylistSelect->setValue(null); + $outroPlaylistSelect->setValue(Application_Model_Preference::GetOutroPlaylist()); $this->addElement($outroPlaylistSelect); diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 368d3e52a..14dae59c4 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -387,6 +387,26 @@ class Application_Model_Preference return $val === '1' ? true : false; } + public static function GetIntroPlaylist() + { + return self::getValue("intro_playlist"); + } + + public static function GetOutroPlaylist() + { + return self::getValue("outro_playlist"); + } + + + public static function SetIntroPlaylist($playlist) + { + self::setValue("intro_playlist", $playlist); + } + + public static function SetOutroPlaylist($playlist) + { + self::setValue("outro_playlist", $playlist); + } public static function SetPhone($phone) { diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index 511a83d8a..a2a873df2 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -244,7 +244,22 @@ SQL; ); } - + /** + * Add a playlist as the first item of the current show. + * + * @param int $plId + * Playlist ID. + */ + public function addPlaylistToShowStart($pl_id, $checkUserPerm = true) + { + $ts = intval($this->_showInstance->getDbLastScheduled("U")) ? : 0; + $id = $this->_showInstance->getDbId(); + $scheduler = new Application_Model_Scheduler($checkUserPerm); + $scheduler->scheduleAfter( + array(array("id" => 0, "instance" => $id, "timestamp" => $ts)), + array(array("id" => $pl_id, "type" => "playlist")) + ); + } /**