steffen: server/kolab-resource-handlers/kolab-resource-handlers/freebusy freebusy.class.php, 1.12, 1.13

cvs at intevation.de cvs at intevation.de
Wed Oct 27 16:51:21 CEST 2004


Author: steffen

Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy
In directory doto:/tmp/cvs-serv25872/kolab-resource-handlers/freebusy

Modified Files:
	freebusy.class.php 
Log Message:
more recurrence improvements

Index: freebusy.class.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy/freebusy.class.php,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- freebusy.class.php	27 Oct 2004 14:32:02 -0000	1.12
+++ freebusy.class.php	27 Oct 2004 14:51:18 -0000	1.13
@@ -176,12 +176,13 @@
 	    }	    
 	  }
 	case 'monthly':
-	  // TODO
+	  // Weekly recurrence, every 'interval' weeks
 	  $interval = (int)$rec['interval'];
 	  if( !$interval ) $interval = 1;
 	  $count = 0;
 	  for( $t = $initial_start; $t < $endstamp; $t = strtotime( "+$interval months", $t) ) {
 	    if( $rec['type'] == 'daynumber') {
+	      // On numbered days
 	      foreach( $rec['daynumber'] as $dayno ) {
 		$tmp = strtotime( "+$dayno days", $t);
 		if( $tmp < $endstamp ) {
@@ -193,6 +194,7 @@
 	      }
 	      $count++;
 	    } else if( $rec['type'] == 'weekday' ) {
+	      // On named weekdays
 	      for( $i = 0; $i < count($rec['daynumber']); $i++ ) {
 		$dayno = $rec['daynumber'][$i];
 		$wday  = $rec['day'][$i];
@@ -213,7 +215,54 @@
 	    }
 	  }
 	case 'yearly':
-	  // TODO
+	  $interval = (int)$rec['interval'];
+	  if( !$interval ) $interval = 1;
+	  $count = 0;
+	  for( $t = $initial_start; $t < $endstamp; $t = strtotime( "+$interval years", $t) ) {
+	    if( $rec['type'] == 'yearday') {
+	      foreach( $rec['daynumber'] as $dayno ) {
+		$tmp = strtotime( "+$dayno days", $t);
+		if( $tmp < $endstamp ) {
+		  myLog("Adding recurrence $tmp -> ".($tmp+$duration), RM_LOG_DEBUG );
+		  $vFb->addBusyPeriod('BUSY', $tmp, null, $duration, $extra);	      
+		} else {
+		  break;
+		}
+	      }
+	      $count++;
+	    } else if( $rec['type'] == 'monthday' ) {
+	      for( $i = 0; $i < count($rec['daynumber']); $i++ ) {
+		$dayno = $rec['daynumber'][$i];
+		$month = $rec['month'][$i];
+		$tmp = strtotime( "+$dayno $month", $t);
+		if( $tmp < $endstamp ) {
+		  myLog("Adding recurrence $tmp -> ".($tmp+$duration), RM_LOG_DEBUG );
+		  $vFb->addBusyPeriod('BUSY', $tmp, null, $duration, $extra);	      
+		} else {
+		  break;
+		}
+	      }
+	      $count++;	      
+	    } else if( $rec['type'] == 'weekday' ) {
+	      for( $i = 0; $i < count($rec['daynumber']); $i++ ) {
+		$dayno = $rec['daynumber'][$i];
+		$wday  = $rec['day'][$i];
+		$tmp = strtotime( "+$dayno $wday", $t);
+		if( $tmp < $endstamp ) {
+		  myLog("Adding recurrence $tmp -> ".($tmp+$duration), RM_LOG_DEBUG );
+		  $vFb->addBusyPeriod('BUSY', $tmp, null, $duration, $extra);	      
+		} else {
+		  break;
+		}
+	      }
+	      $count++;
+	    } 
+	    if( $rangetype == 'number' && $count > $range ) {
+	      break;
+	    } else if( $rangetype == 'date' && $t > strtotime( '+1 day',$range ) ) {
+	      break;
+	    }
+	  }
 	}
       } else {
 	// Normal event





More information about the commits mailing list