Fix exporting to iCalendar.
authorJan Schneider <jan@horde.org>
Fri, 29 Jan 2010 14:58:02 +0000 (15:58 +0100)
committerJan Schneider <jan@horde.org>
Fri, 29 Jan 2010 15:13:07 +0000 (16:13 +0100)
kronolith/data.php

index 6c8f012..ae0a399 100644 (file)
@@ -152,21 +152,23 @@ case 'export':
     case Horde_Data::EXPORT_ICALENDAR:
         $iCal = new Horde_iCalendar();
 
-        $calNames = array();
+        $calIds = array();
         foreach ($events as $cal => $calevents) {
-            if ($kronolith_driver->calendar != $cal) {
-                $kronolith_driver->open($cal);
+            foreach ($calevents as $dayevents) {
+                foreach ($dayevents as $event) {
+                    $calIds[$event->calendar] = true;
+                    if (is_a($event, 'PEAR_Error')) {
+                        continue;
+                    }
+                    $iCal->addComponent($event->toiCalendar($iCal));
+                }
             }
+        }
 
-            $share = &$kronolith_shares->getShare($cal);
+        $calNames = array();
+        foreach (array_keys($calIds) as $calId) {
+            $share = $kronolith_shares->getShare($calId);
             $calNames[] = $share->get('name');
-            foreach ($calevents as $id) {
-                $event = &$kronolith_driver->getEvent($id);
-                if (is_a($event, 'PEAR_Error')) {
-                    continue;
-                }
-                $iCal->addComponent($event->toiCalendar($iCal));
-            }
         }
 
         $iCal->setAttribute('X-WR-CALNAME', Horde_String::convertCharset(implode(', ', $calNames), Horde_Nls::getCharset(), 'utf-8'));