From f72d82f7098a96d866931d2a08ea54a2799e7e32 Mon Sep 17 00:00:00 2001 From: "Bogomil Shopov (Kolab Systems)" Date: Sat, 18 Jun 2011 17:19:01 +0300 Subject: [PATCH] Final version of reccurence and some minor changes. --- .../calendar/drivers/kolab/kolab_calendar.php | 94 ++++++++++--------- plugins/calendar/lib/calendar_ui.php | 2 +- 2 files changed, 51 insertions(+), 45 deletions(-) diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index 7814e373..d9a78201 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -120,6 +120,7 @@ class kolab_calendar $events = array(); foreach ($this->events as $id => $event) { // TODO: filter events by search query + if (!empty($search)) { } @@ -347,6 +348,7 @@ 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 @@ -387,65 +389,69 @@ class kolab_calendar } //recurr object/array - $ra = $event['recurrence']; - - //Frequency abd interval - $object['recurrence']['cycle'] = strtolower($ra['FREQ']); - $object['recurrence']['interval'] = intval($ra['INTERVAL']); - - //Range Type - if($ra['UNTIL']){ - $object['recurrence']['range-type']='date'; - $object['recurrence']['range']=$ra['UNTIL']; - } - if($ra['COUNT']){ - $object['recurrence']['range-type']='number'; - $object['recurrence']['range']=$ra['COUNT']; - } - //weekly - - if ($ra['FREQ']=='WEEKLY'){ + if (count($event['recurrence'])>1){ - $weekdays = split(",",$ra['BYDAY']); - foreach ($weekdays as $days){ - $weekly[]=$daymap[$days]; + $ra = $event['recurrence']; + + //Frequency abd interval + $object['recurrence']['cycle'] = strtolower($ra['FREQ']); + $object['recurrence']['interval'] = intval($ra['INTERVAL']); + + //Range Type + if($ra['UNTIL']){ + $object['recurrence']['range-type']='date'; + $object['recurrence']['range']=$ra['UNTIL']; } - - $object['recurrence']['day']=$weekly; + if($ra['COUNT']){ + $object['recurrence']['range-type']='number'; + $object['recurrence']['range']=$ra['COUNT']; } - - //monthly (temporary hack to follow current Horde logic) - if ($ra['FREQ']=='MONTHLY'){ + //weekly - 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"; + if ($ra['FREQ']=='WEEKLY'){ + + $weekdays = split(",",$ra['BYDAY']); + foreach ($weekdays as $days){ + $weekly[]=$daymap[$days]; + } + + $object['recurrence']['day']=$weekly; } + //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"; + } + } //year - if ($ra['FREQ']=='YEARLY'){ - - - } + //exclusion $object['recurrence']['type']=array(split(',',$ra['UNTIL'])); + } + //whole dday event + if($event['allday']==1) + $object['_is_all_day']=1; + return $object; } diff --git a/plugins/calendar/lib/calendar_ui.php b/plugins/calendar/lib/calendar_ui.php index 0c190d58..9bf831ac 100644 --- a/plugins/calendar/lib/calendar_ui.php +++ b/plugins/calendar/lib/calendar_ui.php @@ -311,7 +311,7 @@ class calendar_ui $select->add($this->calendar->gettext('daily'), 'DAILY'); $select->add($this->calendar->gettext('weekly'), 'WEEKLY'); $select->add($this->calendar->gettext('monthly'), 'MONTHLY'); - $select->add($this->calendar->gettext('yearly'), 'YEARLY'); + // $select->add($this->calendar->gettext('yearly'), 'YEARLY'); $html = html::label('edit-frequency', $this->calendar->gettext('frequency')) . $select->show(''); break;