steffen: server/kolab-resource-handlers/kolab-resource-handlers/resmgr resmgr.php, 1.36, 1.37
cvs at intevation.de
cvs at intevation.de
Tue Oct 26 04:03:58 CEST 2004
Author: steffen
Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr
In directory doto:/tmp/cvs-serv17353/kolab-resource-handlers/resmgr
Modified Files:
resmgr.php
Log Message:
partially implemented recurrence handling
Index: resmgr.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/resmgr.php,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- resmgr.php 26 Oct 2004 00:33:04 -0000 1.36
+++ resmgr.php 26 Oct 2004 02:03:56 -0000 1.37
@@ -839,6 +839,7 @@
iCalDate2Kolab($itip->getAttributeDefault('DTEND', 0))
));
+ // Attendees
$attendees = $itip->getAttribute('ATTENDEE');
if( !is_a( $attendees, 'PEAR_Error' ) ) {
$attendees_params = $itip->getAttribute('ATTENDEE', true);
@@ -861,10 +862,50 @@
$kolab_node->append_child($kolab_xml->create_text_node(strtolower($attendees_params[$i]['ROLE'])));
}
}
- $kolab_node = $kolab_event->append_child($kolab_xml->create_element('end-date'));
- $kolab_node->append_child($kolab_xml->create_text_node(
- iCalDate2Kolab($itip->getAttributeDefault('DTEND', 0))
- ));
+
+ // Recurrence
+ $rrule_str = $itip->getAttribute('RRULE');
+ if( !is_a( $rrule_str, 'PEAR_Error' ) ) {
+ $rrule_list = split(';', $rrule_str);
+ $rrule = array();
+ foreach( $rrule_list as $r ) {
+ list( $k, $v ) = split( '=', $r );
+ $rrule[$k]=$v;
+ }
+ $recur_node = $kolab_event->append_child($kolab_xml->create_element('recurrence'));
+ $freq = strtolower($rrule['FREQ']);
+ $recur_node->append_child( $kolab_xml->create_attribute( 'cycle', $freq ));
+ switch( $freq ) {
+ case 'DAILY':
+ break;
+ case 'WEEKLY':
+ $days = split(',', $rrule['BYDAY']);
+ $kolab_days = array( 'MO' => 'monday',
+ 'TU' => 'tuesday',
+ 'WE' => 'wednesday',
+ 'TH' => 'thursday',
+ 'FR' => 'friday',
+ 'SA' => 'saturday',
+ 'SO' => 'sunday');
+ foreach( $days as $day ) {
+ $day_node = $recur_node->append_child( $kolab_xml->create_element( 'day'));
+ $day_node->append_child($kolab_xml->create_text_node($kolab_days[$day]));
+ }
+ case 'MONTHLY':
+ // PENDING(steffen)
+ case 'YEARLY':
+ // PENDING(steffen)
+ default:
+ // Not supported
+ }
+ $interval_node = $recur_node->append_child( $kolab_xml->create_element( 'interval' ));
+ $interval_node->append_child($kolab_xml->create_text_node($rrule['INTERVAL']));
+
+ // PENDING(steffen): Implement ranges
+ $range_node = $recur_node->append_child( $kolab_xml->create_element( 'range' ));
+ $range_node->append_child( $kolab_xml->create_attribute( 'type', 'none' ));
+ $range_node->append_child($kolab_xml->create_text_node(''));
+ }
return $kolab_xml;
@@ -935,7 +976,7 @@
if ($itip === false) {
myLog("No VEVENT found in iCalendar data, Passing through to $resource");
sendSMTP($sender, $resource, $requestText);
- shutdown(0);
+ shutdown(0,'',false);
}
// What is the request's method? i.e. should we create a new event/cancel an
@@ -978,7 +1019,7 @@
} else if( $params['action'] == RM_ACT_MANUAL ) {
myLog("Passing through $method method to $resource");
sendSMTP($sender, $resource, $requestText);
- shutdown(0);
+ shutdown(0,'',false);
}
$is_update = false;
More information about the commits
mailing list