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).

This commit is contained in:
paul 2006-11-29 05:29:39 +00:00
parent 9c3108e75b
commit 6375212ac9
1 changed files with 57 additions and 25 deletions

View File

@ -358,34 +358,57 @@ class uiScheduler extends uiCalendar {
$M = number_format(strftime('%i', $start)); $M = number_format(strftime('%i', $start));
$id = $this->Base->gb->idFromGunid($val['playlistId']); $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) { if (strftime('%Y%m%d', $start) === $thisDay) {
$items[number_format(strftime('%H', $start))]['start'][] = array( $endsToday = (strftime('%d', $start) === strftime('%d', $end)) ? TRUE : FALSE;
'id' => $id, $endsHere = strftime('%H', $start) === strftime('%H', $end) ? TRUE : FALSE;
'scheduleid'=> $val['id'], $items[$startHour]['start'][] =
'start' => substr($val['start'], strpos($val['start'], 'T')+1), array('id' => $id,
'end' => substr($val['end'], strpos($val['end'], 'T') + 1), 'scheduleid' => $val['id'],
'title' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_TITLE), 'start' => $startTime,
'creator' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_CREATOR), 'end' => $endTime,
'type' => 'Playlist', 'title' => $title,
'endstoday' => strftime('%d', $start) === strftime('%d', $end) ? TRUE : FALSE, 'creator' => $creator,
'endshere' => strftime('%H', $start) === strftime('%H', $end) ? TRUE : FALSE 'type' => 'Playlist',
); 'endstoday' => $endsToday,
'endshere' => $endsHere);
} }
// item ends today // Item ends today
if (strftime('%Y%m%d', $end) === $thisDay && strftime('%H', $start) !== strftime('%H', $end)) { if ( (strftime('%Y%m%d', $end) === $thisDay) && ($startHour !== $endHour) ) {
$items[number_format(strftime('%H', $end))]['end'][] = $startsYesterday = (strftime('%d', $start) === strftime('%d', $end)) ? FALSE : TRUE;
array(
'id' => $id, $items[$endHour]['end'][] =
'scheduleid'=> $val['id'], array('id' => $id,
'start' => substr($val['start'], strpos($val['start'], 'T')+1), 'scheduleid' => $val['id'],
'end' => substr($val['end'], strpos($val['end'], 'T') + 1), 'start' => $startTime,
'title' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_TITLE), 'end' => $endTime,
'creator' => $this->Base->getMetadataValue($id, UI_MDATA_KEY_CREATOR), 'title' => $title,
'type' => 'Playlist', 'creator' => $creator,
'startsyesterday' => strftime('%d', $start) === strftime('%d', $end) ? FALSE : TRUE, '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; return $items;
@ -932,6 +955,15 @@ class uiScheduler extends uiCalendar {
} // fn removeFromScheduleMethod } // 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) function displayScheduleMethod($from, $to)
{ {
$r = $this->spc->displayScheduleMethod($this->Base->sessid, $from, $to); $r = $this->spc->displayScheduleMethod($this->Base->sessid, $from, $to);