Quick fix for DST differences in recurring event instances; re-write of the entire date/time handling is required
This commit is contained in:
parent
ac30e75d9c
commit
2a6e61282d
1 changed files with 4 additions and 1 deletions
|
@ -449,13 +449,16 @@ class kolab_calendar
|
||||||
$duration = $event['end'] - $event['start'];
|
$duration = $event['end'] - $event['start'];
|
||||||
$tz_offset = $event['allday'] ? $this->cal->timezone * 3600 - date('Z') : 0;
|
$tz_offset = $event['allday'] ? $this->cal->timezone * 3600 - date('Z') : 0;
|
||||||
$next = new Horde_Date($event['start'] + $tz_offset); # shift all-day times to server timezone because computation operates in local TZ
|
$next = new Horde_Date($event['start'] + $tz_offset); # shift all-day times to server timezone because computation operates in local TZ
|
||||||
|
$dst_start = $next->format('I');
|
||||||
|
$hour = $next->hour;
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($next = $recurrence->nextActiveRecurrence(array('year' => $next->year, 'month' => $next->month, 'mday' => $next->mday + 1, 'hour' => $next->hour, 'min' => $next->min, 'sec' => $next->sec))) {
|
while ($next = $recurrence->nextActiveRecurrence(array('year' => $next->year, 'month' => $next->month, 'mday' => $next->mday + 1, 'hour' => $next->hour, 'min' => $next->min, 'sec' => $next->sec))) {
|
||||||
if ($event['allday']) {
|
if ($event['allday']) {
|
||||||
$next->hour = $hour; # fix time for all-day events
|
$next->hour = $hour; # fix time for all-day events
|
||||||
$next->min = 0;
|
$next->min = 0;
|
||||||
}
|
}
|
||||||
$rec_start = $next->timestamp() - $tz_offset;
|
$dst_diff = ($dst_start - $next->format('I')) * 3600; # consider difference in daylight saving between base event and recurring instance
|
||||||
|
$rec_start = $next->timestamp() - $tz_offset - $dst_diff;
|
||||||
$rec_end = $rec_start + $duration;
|
$rec_end = $rec_start + $duration;
|
||||||
$rec_id = $event['id'] . '-' . ++$i;
|
$rec_id = $event['id'] . '-' . ++$i;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue