? filename.patch
Index: date_api_ical.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/date/date_api_ical.inc,v
retrieving revision 1.35.4.28
diff -u -p -r1.35.4.28 date_api_ical.inc
--- date_api_ical.inc	10 May 2009 12:44:14 -0000	1.35.4.28
+++ date_api_ical.inc	3 Sep 2009 20:43:45 -0000
@@ -452,7 +452,7 @@ function date_ical_parse_rrule($field, $
  *   an array of date value arrays.
  */
 function date_ical_parse_exceptions($field, $data) {
-  $data = str_replace('EXDATE:', '', $data);
+  $data = str_replace('EXDATE;', '', $data);
   $items = array('DATA' => $data);
   $ex_dates = explode(',', $data);
   foreach ($ex_dates as $ex_date) {
@@ -677,19 +677,23 @@ function date_api_ical_build_rrule($form
   // Exceptions dates go last, on their own line.
   if (isset($form_values['EXDATE']) && is_array($form_values['EXDATE'])) {
     $ex_dates = array();
+    $timezone = array_key_exists('DTSTART', $subgroup) ? $subgroup['DTSTART']['tz'] : variable_get('date_default_timezone_name', NULL);
     foreach ($form_values['EXDATE'] as $value) {
       $ex_date = date_convert($value['datetime'], DATE_DATETIME, DATE_ICAL);
       if (!empty($ex_date)) {
-        $ex_dates[] = $ex_date;
+        $ex_dates[] = 'TZID='. $timezone .':'. $ex_date;
       }
     }
     if (!empty($ex_dates)) {
       sort($ex_dates);
-      $RRULE .= chr(13) . chr(10) .'EXDATE:'. implode(',', $ex_dates);
+      foreach ($ex_dates as $value) {
+        $RRULE .= chr(10) .'EXDATE;'. $value;
+      }
     }
   }
   elseif (!empty($form_values['EXDATE'])) {
-    $RRULE .= chr(13) . chr(10) .'EXDATE:'. $form_values['EXDATE'];
+    $timezone = array_key_exists('DTSTART', $subgroup) ? $subgroup['DTSTART']['tz'] : variable_get('date_default_timezone_name', NULL);
+    $RRULE .= chr(10) .'EXDATE;TZID='. $timezone .':'. $form_values['EXDATE'];
   }
   return $RRULE;
 }
Index: date_repeat/date_repeat.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/date/date_repeat/date_repeat.module,v
retrieving revision 1.30.4.12
diff -u -p -r1.30.4.12 date_repeat.module
--- date_repeat/date_repeat.module	12 May 2009 09:58:59 -0000	1.30.4.12
+++ date_repeat/date_repeat.module	3 Sep 2009 20:43:45 -0000
@@ -250,8 +250,8 @@ function date_repeat_split_rrule($rrule)
       $rrule = (array) date_ical_parse_rrule('RRULE:', $RRULE);
     }
     elseif (strstr($part, 'EXDATE')) {
-      $EXDATE = str_replace('EXDATE:', '', $part);
-      $exceptions = (array) date_ical_parse_exceptions('EXDATE:', $EXDATE);
+      $EXDATE = str_replace('EXDATE;', '', $part);
+      $exceptions = array_merge($exceptions, (array) date_ical_parse_exceptions('EXDATE;', $EXDATE));
       unset($exceptions['DATA']);
     }
   }
