From 8a92c80bcb4aea7518f0bbb011b75b8389bb6f48 Mon Sep 17 00:00:00 2001 From: Robb Ebright Date: Sat, 1 Apr 2017 00:56:55 -0400 Subject: [PATCH] Fixed autoplaylist repeat to fill show --- .../common/AutoPlaylistManager.php | 19 ++++++++++++-- .../application/models/ShowInstance.php | 25 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/common/AutoPlaylistManager.php b/airtime_mvc/application/common/AutoPlaylistManager.php index bb9ca14ab..2d1304165 100644 --- a/airtime_mvc/application/common/AutoPlaylistManager.php +++ b/airtime_mvc/application/common/AutoPlaylistManager.php @@ -31,8 +31,23 @@ class AutoPlaylistManager { $playlistid = $si->GetAutoPlaylistId(); Logging::info("Scheduling $playlistid"); // call the addPlaylist to show function and don't check for user permission to avoid call to non-existant user object - $si->addPlaylistToShow($playlistid, false); - while ($si->getPercentScheduled() < 100) { + $sid = $si->getShowId(); + $playlistrepeat = new Application_Model_Show($sid); + + 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) { + $full = true; + } + + } + } + else { $si->addPlaylistToShow($playlistid, false); } $si->setAutoPlaylistBuilt(true); diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index f5db2f886..bd6f8862e 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -236,14 +236,19 @@ SQL; { $ts = intval($this->_showInstance->getDbLastScheduled("U")) ? : 0; $id = $this->_showInstance->getDbId(); + $lastid = $this->getLastAudioItemId(); +// Logging::info("The last id is $lastid"); $scheduler = new Application_Model_Scheduler($checkUserPerm); $scheduler->scheduleAfter( - array(array("id" => 0, "instance" => $id, "timestamp" => $ts)), + array(array("id" => $lastid, "instance" => $id, "timestamp" => $ts)), array(array("id" => $pl_id, "type" => "playlist")) ); } + + + /** * Add a media file as the last item in the show. * @@ -649,12 +654,28 @@ SQL; return $results; } + public function getLastAudioItemId() + { + $con = Propel::getConnection(); + + $sql = "SELECT id FROM cc_schedule " + ."WHERE instance_id = :instanceId " + ."ORDER BY ends DESC " + ."LIMIT 1"; + + $query = Application_Common_Database::prepareAndExecute( $sql, + array(':instanceId' => $this->_instanceId), 'column'); + + return ($query !== false) ? $query : null; + } + + public function getLastAudioItemEnd() { $con = Propel::getConnection(); $sql = "SELECT ends FROM cc_schedule " - ."WHERE instance_id = :instanceId" + ."WHERE instance_id = :instanceId " ."ORDER BY ends DESC " ."LIMIT 1";