From 01ec7ce7979194e0075e49b3fa321704a36c919b Mon Sep 17 00:00:00 2001 From: Robb Ebright Date: Tue, 28 Nov 2017 15:12:27 -0500 Subject: [PATCH 1/3] inital attempt to add autoplaylist icon to calendar --- airtime_mvc/application/models/Show.php | 8 ++++ .../application/models/ShowInstance.php | 24 +++++++++++ .../schedule/full-calendar-functions.js | 40 +++++++++++++++---- 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index d36949953..45100eb66 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -1023,6 +1023,8 @@ SQL; $content_count = Application_Model_ShowInstance::getContentCount( $p_start, $p_end); $isFull = Application_Model_ShowInstance::getIsFull($p_start, $p_end); + $hasAutoPlaylist = Application_Model_ShowInstance::getShowHasAutoplaylist($p_start, $p_end); + $displayTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); $utcTimezone = new DateTimeZone("UTC"); @@ -1055,6 +1057,7 @@ SQL; $startsDT->setTimezone($displayTimezone); $endsDT->setTimezone($displayTimezone); + xdebug_break(); $options["show_empty"] = (array_key_exists($show['instance_id'], $content_count)) ? 0 : 1; @@ -1064,6 +1067,11 @@ SQL; } else { $options["show_partial_filled"] = true; } + if (array_key_exists($show['instance_id'], $hasAutoPlaylist)) { + $options["show_has_auto_playlist"] = !$hasAutoPlaylist[$show['instance_id']]; + } else { + $options["show_has_auto_playlist"] = true; + } $event = array(); diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index bd6f8862e..313c2b059 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -238,6 +238,7 @@ SQL; $id = $this->_showInstance->getDbId(); $lastid = $this->getLastAudioItemId(); // Logging::info("The last id is $lastid"); + xdebug_break(); $scheduler = new Application_Model_Scheduler($checkUserPerm); $scheduler->scheduleAfter( @@ -290,7 +291,9 @@ SQL; } private function checkToDeleteShow($showId) + { + xdebug_break(); //UTC DateTime object $showsPopUntil = Application_Model_Preference::GetShowsPopulatedUntil(); @@ -556,6 +559,27 @@ SQL; return $isFilled; } + public static function getShowHasAutoplaylist($p_start, $p_end) + { + $sql = << :p_start::TIMESTAMP +AND starts < :p_end::TIMESTAMP +SQL; + $res = Application_Common_Database::prepareAndExecute($sql, array( + ':p_start' => $p_start->format("Y-m-d G:i:s"), + ':p_end' => $p_end->format("Y-m-d G:i:s")) + , 'all'); + $hasAutoplaylist = array(); + foreach ($res as $r) { + $hasAutoplaylist[$r['id']] = $r['has_autoplaylist']; + } + + return $hasAutoplaylist; + } + public function showEmpty() { $sql = <<'); - } else { + // in theory a linked show shouldn't have an automatic playlist so adding this here + } else if (event.show_has_auto_playlist === true) { + $(element) + .find(".fc-event-time") + .before(''); + } + else { $(element) .find(".fc-event-time") .before(''); @@ -224,7 +230,11 @@ function eventRender(event, element, view) { $(element) .find(".fc-event-time") .before(''); - } else { + } else if (event.show_has_auto_playlist === true) { + $(element) + .find(".fc-event-time") + .before(''); + } else { $(element) .find(".fc-event-time") .before(''); @@ -234,26 +244,38 @@ function eventRender(event, element, view) { $(element) .find(".fc-event-time") .before(''); + } else if (event.show_has_auto_playlist === true) { + $(element) + .find(".fc-event-time") + .before(''); } } } else if (view.name === 'month') { if (event.show_empty === 1) { if (event.linked) { - $(element) + $(element) .find(".fc-event-title") .after(''); + } else if (event.show_has_auto_playlist === true) { + $(element) + .find(".fc-event-title") + .after(''); } else { - $(element) + $(element) .find(".fc-event-title") .after(''); } } else if (event.show_partial_filled === true) { if (event.linked) { $(element) - .find(".fc-event-title") - .after(''); + .find(".fc-event-title") + .after(''); + } else if (event.show_has_auto_playlist === true) { + $(element) + .find(".fc-event-title") + .after(''); } else { - $(element) + $(element) .find(".fc-event-title") .after(''); } @@ -262,6 +284,10 @@ function eventRender(event, element, view) { $(element) .find(".fc-event-title") .after(''); + } else if (event.show_has_auto_playlist === true) { + $(element) + .find(".fc-event-title") + .after(''); } } } From a294d663834605f685ae55cfa176d716515f0c76 Mon Sep 17 00:00:00 2001 From: Robb Ebright Date: Wed, 29 Nov 2017 07:10:25 -0500 Subject: [PATCH 2/3] adding autoplaylist icon --- .../css/images/icon_alert_cal_autoplaylist.png | Bin 0 -> 568 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 airtime_mvc/public/css/images/icon_alert_cal_autoplaylist.png diff --git a/airtime_mvc/public/css/images/icon_alert_cal_autoplaylist.png b/airtime_mvc/public/css/images/icon_alert_cal_autoplaylist.png new file mode 100644 index 0000000000000000000000000000000000000000..44e56e0d3aa6b0c2a712fef3c58779231b66c053 GIT binary patch literal 568 zcmV-80>}M{P)2rnYWKB31(`idyJUj^IVy0shDcK*@)ezry*~>!qGC6Q#ACadJhG6YpoxxWh zx9(#dPQO29oOmwR7i-F#NWO7f-hwcNHGVlIq@^KZfDY1>guPIub7nP~3g@rHuLq)1 zsl;@l$A5**)KaVPsOdJY@jq%RKK<-!_U408l8)W&jQ<8WH_j_5SJbQk0000 Date: Sun, 17 Dec 2017 10:47:38 -0500 Subject: [PATCH 3/3] Removed debug code and rewrote SQL as ORM query and readded icon image file --- airtime_mvc/application/models/Show.php | 1 - .../application/models/ShowInstance.php | 35 ++++++++---------- .../images/icon_alert_cal_autoplaylist.png | Bin 568 -> 571 bytes 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 45100eb66..692a6b387 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -1057,7 +1057,6 @@ SQL; $startsDT->setTimezone($displayTimezone); $endsDT->setTimezone($displayTimezone); - xdebug_break(); $options["show_empty"] = (array_key_exists($show['instance_id'], $content_count)) ? 0 : 1; diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index 313c2b059..c219637fa 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -237,9 +237,6 @@ SQL; $ts = intval($this->_showInstance->getDbLastScheduled("U")) ? : 0; $id = $this->_showInstance->getDbId(); $lastid = $this->getLastAudioItemId(); -// Logging::info("The last id is $lastid"); - xdebug_break(); - $scheduler = new Application_Model_Scheduler($checkUserPerm); $scheduler->scheduleAfter( array(array("id" => $lastid, "instance" => $id, "timestamp" => $ts)), @@ -293,7 +290,6 @@ SQL; private function checkToDeleteShow($showId) { - xdebug_break(); //UTC DateTime object $showsPopUntil = Application_Model_Preference::GetShowsPopulatedUntil(); @@ -561,23 +557,22 @@ SQL; public static function getShowHasAutoplaylist($p_start, $p_end) { - $sql = << :p_start::TIMESTAMP -AND starts < :p_end::TIMESTAMP -SQL; - $res = Application_Common_Database::prepareAndExecute($sql, array( - ':p_start' => $p_start->format("Y-m-d G:i:s"), - ':p_end' => $p_end->format("Y-m-d G:i:s")) - , 'all'); - $hasAutoplaylist = array(); - foreach ($res as $r) { - $hasAutoplaylist[$r['id']] = $r['has_autoplaylist']; + $con = Propel::getConnection(CcShowInstancesPeer::DATABASE_NAME); + $con->beginTransaction(); + try { + // query the show instances to find whether a show instance has an autoplaylist + $showInstances = CcShowInstancesQuery::create() + ->filterByDbEnds($p_end->format(DEFAULT_TIMESTAMP_FORMAT), Criteria::LESS_THAN) + ->filterByDbStarts($p_start->format(DEFAULT_TIMESTAMP_FORMAT), Criteria::GREATER_THAN) + ->leftJoinCcShow() + ->find($con); + return $showInstances; + } + catch (Exception $e) { + $con->rollback(); + Logging::info("Couldn't query show instances for calendar to find which had autoplaylists"); + Logging::info($e->getMessage()); } - - return $hasAutoplaylist; } public function showEmpty() diff --git a/airtime_mvc/public/css/images/icon_alert_cal_autoplaylist.png b/airtime_mvc/public/css/images/icon_alert_cal_autoplaylist.png index 44e56e0d3aa6b0c2a712fef3c58779231b66c053..5398cb9c5ab1558dfb092ac27ab89a4827199b5f 100644 GIT binary patch delta 500 zcmVRsB00GHKL_t(2&sEDmXcJKY$MN5Lmy373e@U+u zktU*;>QFE)I#jWgDqS30)Tu%jp^Hl=@eg&$;4J9k;OdeNl29@zl?pD=!T+F5rD}U= z{#@^Jxp#N(xx|3q^~;A~(8`-Tw9;7B59<@BT0!%I7kODt)_>el#eU1;a3g2r_aDza zH;V6Wk!vq5AOGC`_$}r!1Q+0; zfTU6YK(NWscz?J9-s3p=BoCSH-2rQ3X{9y!Qb!nF9$%*}l zmJ)Okr-BqMLQxO}BRc3%6$PDK#90LY04HZR2gL@2iim9p)XC@)B%8JlrcKo(rfu%> zad)}9*TsrH^ADaMkKiBjuTIN$qkZK2yT+ZNA7nF!QeXBTw|@$giR|a4i^UM2R4Pdw z;L_`}qSbGl+pxbq8SHww&BZ1F+mkkOMm=VRq@oGi>%5(ParEwhek9MloXhNZ+aLBW)*d&B=L|A)N&0IZk*i40 zCIIjwFK-&=ihtG{_AV$C0G)CVLWoTpjOEkFq=xgUPvk`aC>2rnYWKB31(`idyJUj^ zIVy0shDcK*@)ezry*~>!qGC6Q#ACadJhG6YpoxxWhw`%TV9ZtVLW}J8~*B5KboJhWL zTi${&g*ARTC8VVxVt@|Pl!U!drE_LAnhNKy#IFaUQmMprp~ruP&D2t>@TloFuJJ!= nDn9+}YWC)XQId|`?Tr5hI5*BKDOc3200000NkvXXu0mjfc53TM