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