From 6375212ac97765d0f9ca381dfbf646530a1152da Mon Sep 17 00:00:00 2001 From: paul <paul@cfc7b370-4200-0410-a6e3-cb6bdb053afe> Date: Wed, 29 Nov 2006 05:29:39 +0000 Subject: [PATCH] Fix for bug #2050 - a playlist spanning multiple hours is not properly plotted on the DAY VIEW. This was supposed to be part of the previous commit (changeset:2668). --- .../modules/htmlUI/var/ui_scheduler.class.php | 82 +++++++++++++------ 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/campcaster/src/modules/htmlUI/var/ui_scheduler.class.php b/campcaster/src/modules/htmlUI/var/ui_scheduler.class.php index f7ecccea6..94e1b788b 100644 --- a/campcaster/src/modules/htmlUI/var/ui_scheduler.class.php +++ b/campcaster/src/modules/htmlUI/var/ui_scheduler.class.php @@ -358,34 +358,57 @@ class uiScheduler extends uiCalendar { $M = number_format(strftime('%i', $start)); $id = $this->Base->gb->idFromGunid($val['playlistId']); - // item starts today + + $startHour = (int)strftime('%H', $start); + $endHour = (int)strftime('%H', $end); + $startTime = substr($val['start'], strpos($val['start'], 'T')+1); + $endTime = substr($val['end'], strpos($val['end'], 'T') + 1); + $title = $this->Base->getMetadataValue($id, UI_MDATA_KEY_TITLE); + $creator = $this->Base->getMetadataValue($id, UI_MDATA_KEY_CREATOR); + + // Item starts today if (strftime('%Y%m%d', $start) === $thisDay) { - $items[number_format(strftime('%H', $start))]['start'][] = array( - 'id' => $id, - 'scheduleid'=> $val['id'], - 'start' => substr($val['start'], strpos($val['start'], 'T')+1), - 'end' => substr($val['end'], strpos($val['end'], 'T') + 1), - 'title' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_TITLE), - 'creator' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_CREATOR), - 'type' => 'Playlist', - 'endstoday' => strftime('%d', $start) === strftime('%d', $end) ? TRUE : FALSE, - 'endshere' => strftime('%H', $start) === strftime('%H', $end) ? TRUE : FALSE - ); + $endsToday = (strftime('%d', $start) === strftime('%d', $end)) ? TRUE : FALSE; + $endsHere = strftime('%H', $start) === strftime('%H', $end) ? TRUE : FALSE; + $items[$startHour]['start'][] = + array('id' => $id, + 'scheduleid' => $val['id'], + 'start' => $startTime, + 'end' => $endTime, + 'title' => $title, + 'creator' => $creator, + 'type' => 'Playlist', + 'endstoday' => $endsToday, + 'endshere' => $endsHere); } - // item ends today - if (strftime('%Y%m%d', $end) === $thisDay && strftime('%H', $start) !== strftime('%H', $end)) { - $items[number_format(strftime('%H', $end))]['end'][] = - array( - 'id' => $id, - 'scheduleid'=> $val['id'], - 'start' => substr($val['start'], strpos($val['start'], 'T')+1), - 'end' => substr($val['end'], strpos($val['end'], 'T') + 1), - 'title' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_TITLE), - 'creator' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_CREATOR), - 'type' => 'Playlist', - 'startsyesterday' => strftime('%d', $start) === strftime('%d', $end) ? FALSE : TRUE, - ); + // Item ends today + if ( (strftime('%Y%m%d', $end) === $thisDay) && ($startHour !== $endHour) ) { + $startsYesterday = (strftime('%d', $start) === strftime('%d', $end)) ? FALSE : TRUE; + + $items[$endHour]['end'][] = + array('id' => $id, + 'scheduleid' => $val['id'], + 'start' => $startTime, + 'end' => $endTime, + 'title' => $title, + 'creator' => $creator, + 'type' => 'Playlist', + 'startsyesterday' => $startsYesterday); + } + + // If the item spans more than one hour + if ( ($endHour - $startHour) > 1) { + for ($i = $startHour + 1; $i < $endHour; $i++) { + $items[$i]['span'][] = + array('id' => $id, + 'scheduleid' => $val['id'], + 'start' => $startTime, + 'end' => $endTime, + 'title' => $title, + 'creator' => $creator, + 'type' => 'Playlist'); + } } } return $items; @@ -932,6 +955,15 @@ class uiScheduler extends uiCalendar { } // fn removeFromScheduleMethod + /** + * Get the scheduled items between the $from and $to dates. + * + * @param string $from + * In the format YYYMMDDTHH:MM:SS + * @param string $to + * In the format YYYMMDDTHH:MM:SS + * @return array|false + */ function displayScheduleMethod($from, $to) { $r = $this->spc->displayScheduleMethod($this->Base->sessid, $from, $to);