Implement getEvent().
authorJan Schneider <jan@horde.org>
Fri, 13 Mar 2009 16:19:26 +0000 (17:19 +0100)
committerJan Schneider <jan@horde.org>
Mon, 16 Mar 2009 15:44:25 +0000 (16:44 +0100)
kronolith/lib/Driver/Holidays.php
kronolith/lib/Event/Holidays.php

index ed3b51c..8152cdd 100644 (file)
@@ -78,6 +78,28 @@ class Kronolith_Driver_Holidays extends Kronolith_Driver
         return $results;
     }
 
+    public function getEvent($eventId = null)
+    {
+        list($id, $date) = explode('-', $eventId, 2);
+        $year = substr($date, 0, 4);
+
+        $dh = Date_Holidays::factory($this->_calendar, $year, $this->_params['language']);
+        if (Date_Holidays::isError($dh)) {
+            Horde::logMessage(sprintf('Factory was unable to produce driver object for driver %s in year %s with locale %s',
+                                      $this->_calendar, $year, $this->_params['language']),
+                              __FILE__, __LINE__, PEAR_LOG_ERR);
+            return false;
+        }
+        $dh->addTranslation($this->_params['language']);
+
+        $event = $dh->getHoliday($id);
+        if (is_a($event, 'PEAR_Error')) {
+            return $event;
+        }
+
+        return new Kronolith_Event_Holidays($this, $event);
+    }
+
     private function _getEvents($dh, $startDate, $endDate)
     {
         $events = array();
@@ -96,8 +118,7 @@ class Kronolith_Driver_Holidays extends Kronolith_Driver
             }
 
             foreach ($holidays as $holiday) {
-                $event = new Kronolith_Event_Holidays($this);
-                $event->fromDriver($holiday);
+                $event = new Kronolith_Event_Holidays($this, $holiday);
                 $events[] = $event;
             }
         }
index 97fe409..f384c88 100644 (file)
@@ -36,11 +36,10 @@ class Kronolith_Event_Holidays extends Kronolith_Event
         $this->stored = true;
         $this->initialized = true;
         $this->setTitle(String::convertCharset($dhEvent->getTitle(), 'UTF-8'));
-        $this->setId($dhEvent->getInternalName());
-
         $this->start = new Horde_Date($dhEvent->_date->getTime());
         $this->end = new Horde_Date($this->start);
         $this->end->mday++;
+        $this->setId($dhEvent->getInternalName() . '-' . $this->start->dateString());
     }
 
     /**