Fix recurrence UNTIL calculation

This commit is contained in:
Jörg Lehrke 2009-12-04 15:38:23 +00:00
parent 8a9392c681
commit 8f0bd9a5dc

View File

@ -229,8 +229,17 @@ class calendar_ical extends calendar_boupdate
} }
elseif ($event['recur_enddate']) elseif ($event['recur_enddate'])
{ {
$recur_enddate = (int)$event['recur_enddate']; $time = new egw_time($event['start'],egw_time::$server_timezone);
$recur_enddate += 24 * 60 * 60 - 1; if (!isset(self::$tz_cache[$event['tzid']]))
{
self::$tz_cache[$event['tzid']] = calendar_timezones::DateTimeZone($event['tzid']);
}
// all calculations in the event's timezone
$time->setTimezone(self::$tz_cache[$event['tzid']]);
$time->setTime(0, 0, 0);
$delta = $event['end'] - (int)$time->format('U');
// Adjust recur_enddate to end time
$event['recur_enddate'] += $delta;
} }
if ($this->log) error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()\n".array2string($event)."\n",3,$this->logfile); if ($this->log) error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()\n".array2string($event)."\n",3,$this->logfile);
@ -1514,6 +1523,7 @@ class calendar_ical extends calendar_boupdate
catch(Exception $e) catch(Exception $e)
{ {
error_log(__METHOD__."() unknown TZID='{$attributes['params']['TZID']}', defaulting to user timezone '".egw_time::$user_timezone->getName()."'!"); error_log(__METHOD__."() unknown TZID='{$attributes['params']['TZID']}', defaulting to user timezone '".egw_time::$user_timezone->getName()."'!");
$tz = egw_time::$user_timezone;
$event['tzid'] = egw_time::$user_timezone->getName(); // default to user timezone $event['tzid'] = egw_time::$user_timezone->getName(); // default to user timezone
} }
} }
@ -1635,7 +1645,10 @@ class calendar_ical extends calendar_boupdate
if (!empty($vcardData['recur_count'])) if (!empty($vcardData['recur_count']))
{ {
$vcardData['recur_enddate'] = mktime(0,0,0, $vcardData['recur_enddate'] = mktime(
date('H', $vcardData['end']),
date('i', $vcardData['end']),
date('s', $vcardData['end']),
date('m', $vcardData['start']), date('m', $vcardData['start']),
date('d', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)*7), date('d', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)*7),
date('Y', $vcardData['start'])); date('Y', $vcardData['start']));
@ -1674,7 +1687,10 @@ class calendar_ical extends calendar_boupdate
if (!empty($vcardData['recur_count'])) if (!empty($vcardData['recur_count']))
{ {
$vcardData['recur_enddate'] = mktime(0,0,0, $vcardData['recur_enddate'] = mktime(
date('H', $vcardData['end']),
date('i', $vcardData['end']),
date('s', $vcardData['end']),
date('m', $vcardData['start']), date('m', $vcardData['start']),
date('d', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)), date('d', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)),
date('Y', $vcardData['start'])); date('Y', $vcardData['start']));
@ -1729,7 +1745,10 @@ class calendar_ical extends calendar_boupdate
if (!empty($vcardData['recur_count'])) if (!empty($vcardData['recur_count']))
{ {
$vcardData['recur_enddate'] = mktime(0,0,0, $vcardData['recur_enddate'] = mktime(
date('H', $vcardData['end']),
date('i', $vcardData['end']),
date('s', $vcardData['end']),
date('m', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)), date('m', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)),
date('d', $vcardData['start']), date('d', $vcardData['start']),
date('Y', $vcardData['start'])); date('Y', $vcardData['start']));
@ -1767,7 +1786,10 @@ class calendar_ical extends calendar_boupdate
if (!empty($vcardData['recur_count'])) if (!empty($vcardData['recur_count']))
{ {
$vcardData['recur_enddate'] = mktime(0,0,0, $vcardData['recur_enddate'] = mktime(
date('H', $vcardData['end']),
date('i', $vcardData['end']),
date('s', $vcardData['end']),
date('m', $vcardData['start']), date('m', $vcardData['start']),
date('d', $vcardData['start']), date('d', $vcardData['start']),
date('Y', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1))); date('Y', $vcardData['start']) + ($vcardData['recur_interval']*($vcardData['recur_count']-1)));