Codestyle matters!

Fix saving of recurrence exclusions
This commit is contained in:
Thomas Bruederli 2011-06-29 15:36:39 +02:00
parent 76c451059d
commit 507712e533

View file

@ -207,7 +207,6 @@ class kolab_calendar
// resolve recurring events (maybe move to _fetch_events() for general use?)
if ($event['recurrence']) {
$recurrence = new Horde_Date_Recurrence($event['start']);
$recurrence->fromRRule20(calendar::to_rrule($event['recurrence']));
@ -216,6 +215,7 @@ class kolab_calendar
$duration = $event['end'] - $event['start'];
$next = new Horde_Date($event['start']);
$i = 1;
while ($next = $recurrence->nextActiveRecurrence(array('year' => $next->year, 'month' => $next->month, 'mday' => $next->mday + 1, 'hour' => $next->hour, 'min' => $next->min, 'sec' => $next->sec))) {
$rec_start = $next->timestamp();
$rec_end = $rec_start + $duration;
@ -223,6 +223,7 @@ class kolab_calendar
// add to output if in range
if ($rec_start <= $end && $rec_end >= $start) {
$rec_event = $event;
$rec_event['id'] .= '-' . $i++;
$rec_event['recurrence_id'] = $event['id'];
$rec_event['start'] = $rec_start;
$rec_event['end'] = $rec_end;
@ -252,12 +253,17 @@ class kolab_calendar
//generate new event from RC input
$object = $this->_from_rcube_event($event);
//generate new UID
$object['uid'] = $this->storage->generateUID();
$saved = $this->storage->save($object);
if (PEAR::isError($saved)) {
raise_error(array(
'code' => 600, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => "Error saving event object to Kolab server:" . $saved->getMessage()),
true, false);
$saved = false;
}
return $saved;
}
@ -278,7 +284,7 @@ class kolab_calendar
raise_error(array(
'code' => 600, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => "Error saving contact object to Kolab server:" . $saved->getMessage()),
'message' => "Error saving event object to Kolab server:" . $saved->getMessage()),
true, false);
}
else {
@ -294,17 +300,15 @@ class kolab_calendar
* @see Driver:remove_event()
* @return boolean True on success, False on error
*/
public function delete_event($event)
{
$deleted = false;
$deleteme = $this->storage->delete($event['id']);
if (PEAR::isError($deleteme)) {
raise_error(array(
'code' => 600, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => "Error saving contact object to Kolab server:" . $deleteme->getMessage()),
'message' => "Error deleting event object from Kolab server:" . $deleteme->getMessage()),
true, false);
}
else {
@ -390,7 +394,7 @@ class kolab_calendar
if ($recurrence['exclusion']) {
foreach ((array)$recurrence['exclusion'] as $excl)
$rrule['EXDATE'][] = strtotime($excl);
$rrule['EXDATE'][] = strtotime($excl) - $this->cal->timezone * 3600 - date('Z'); // shift to user's timezone
}
}
@ -425,7 +429,6 @@ class kolab_calendar
$priority_map = $this->priority_map;
$daymap = array('MO'=>'monday','TU'=>'tuesday','WE'=>'wednesday','TH'=>'thursday','FR'=>'friday','SA'=>'saturday','SU'=>'sunday');
$object = array(
// kolab => roundcube
'summary' => $event['title'],
@ -436,37 +439,28 @@ class kolab_calendar
'end-date' => $event['end'],
'sensitivity' =>$this->sensitivity_map[$event['sensitivity']],
'show-time-as' => $event['free_busy'],
'priority' => isset($priority_map[$event['priority']]) ? $priority_map[$event['priority']] : 1
'priority' => isset($priority_map[$event['priority']]) ? $priority_map[$event['priority']] : 1,
);
//handle alarms
if ($event['alarms']) {
//get the value
$alarmbase = explode(":", $event['alarms']);
//get number only
$avalue = preg_replace('/[^0-9]/', '', $alarmbase[0]);
if(preg_match("/H/",$alarmbase[0]))
{
if (preg_match("/H/",$alarmbase[0])) {
$object['alarm'] = $avalue*60;
}else if (preg_match("/D/",$alarmbase[0]))
{
} else if (preg_match("/D/",$alarmbase[0])) {
$object['alarm'] = $avalue*24*60;
}else
{
//minutes
} else {
$object['alarm'] = $avalue;
}
}
//recurr object/array
if (count($event['recurrence']) > 1) {
$ra = $event['recurrence'];
//Frequency abd interval
@ -482,10 +476,9 @@ class kolab_calendar
$object['recurrence']['range-type'] = 'number';
$object['recurrence']['range'] = $ra['COUNT'];
}
//weekly
if ($ra['FREQ']=='WEEKLY') {
$weekdays = split(",", $ra['BYDAY']);
foreach ($weekdays as $days) {
$weekly[] = $daymap[$days];
@ -496,33 +489,23 @@ class kolab_calendar
//monthly (temporary hack to follow current Horde logic)
if ($ra['FREQ']=='MONTHLY') {
if ($ra['BYDAY'] == 'NaN') {
$object['recurrence']['daynumber']=1;
$object['recurrence']['day'] = array(date('L', $event['start']));
$object['recurrence']['cycle'] = 'monthly';
$object['recurrence']['type'] = 'weekday';
}
else {
$object['recurrence']['daynumber'] = date('j', $event['start']);
$object['recurrence']['cycle'] = 'monthly';
$object['recurrence']['type']="daynumber";
$object['recurrence']['type'] = 'daynumber';
}
}
}
//year
//exclusion
$object['recurrence']['type']=array(split(',',$ra['UNTIL']));
//year ???
//exclusions
$object['recurrence']['exclusion'] = (array)$ra['EXDATE'];
}
// whole day event
@ -533,10 +516,8 @@ class kolab_calendar
$object['_is_all_day'] = 1;
}
return $object;
}
}