public $calendarType = 'resource';
/**
+ * @var array
+ */
+ private $_properties = array();
+
+ /**
* Imports a backend specific event object.
*
* @param array $event Backend specific event object that this object
}
/**
+ * Prepares this event to be saved to the backend.
+ */
+ public function toDriver()
+ {
+ $driver = $this->getDriver();
+
+ /* Basic fields. */
+ $this->_properties['event_creator_id'] = $driver->convertToDriver($this->creator);
+ $this->_properties['event_title'] = $driver->convertToDriver($this->title);
+ $this->_properties['event_description'] = $driver->convertToDriver($this->description);
+ $this->_properties['event_location'] = $driver->convertToDriver($this->location);
+ $this->_properties['event_private'] = (int)$this->private;
+ $this->_properties['event_status'] = $this->status;
+ $this->_properties['event_attendees'] = serialize($driver->convertToDriver($this->attendees));
+ $this->_properties['event_resources'] = serialize($driver->convertToDriver($this->getResources()));
+ $this->_properties['event_modified'] = $_SERVER['REQUEST_TIME'];
+
+ if ($this->isAllDay()) {
+ $this->_properties['event_start'] = $this->start->strftime('%Y-%m-%d %H:%M:%S');
+ $this->_properties['event_end'] = $this->end->strftime('%Y-%m-%d %H:%M:%S');
+ $this->_properties['event_allday'] = 1;
+ } else {
+ if ($driver->getParam('utc')) {
+ $start = clone $this->start;
+ $end = clone $this->end;
+ $start->setTimezone('UTC');
+ $end->setTimezone('UTC');
+ } else {
+ $start = $this->start;
+ $end = $this->end;
+ }
+ $this->_properties['event_start'] = $start->strftime('%Y-%m-%d %H:%M:%S');
+ $this->_properties['event_end'] = $end->strftime('%Y-%m-%d %H:%M:%S');
+ $this->_properties['event_allday'] = 0;
+ }
+
+ /* Alarm. */
+ $this->_properties['event_alarm'] = (int)$this->alarm;
+
+ /* Alarm Notification Methods. */
+ $this->_properties['event_alarm_methods'] = serialize($driver->convertToDriver($this->methods));
+
+ /* Recurrence. */
+ if (!$this->recurs()) {
+ $this->_properties['event_recurtype'] = 0;
+ } else {
+ $recur = $this->recurrence->getRecurType();
+ if ($this->recurrence->hasRecurEnd()) {
+ if ($driver->getParam('utc')) {
+ $recur_end = clone $this->recurrence->recurEnd;
+ $recur_end->setTimezone('UTC');
+ } else {
+ $recur_end = $this->recurrence->recurEnd;
+ }
+ } else {
+ $recur_end = new Horde_Date(array('year' => 9999, 'month' => 12, 'mday' => 31, 'hour' => 23, 'min' => 59, 'sec' => 59));
+ }
+
+ $this->_properties['event_recurtype'] = $recur;
+ $this->_properties['event_recurinterval'] = $this->recurrence->getRecurInterval();
+ $this->_properties['event_recurenddate'] = $recur_end->format('Y-m-d H:i:s');
+ $this->_properties['event_recurcount'] = $this->recurrence->getRecurCount();
+
+ switch ($recur) {
+ case Horde_Date_Recurrence::RECUR_WEEKLY:
+ $this->_properties['event_recurdays'] = $this->recurrence->getRecurOnDays();
+ break;
+ }
+ $this->_properties['event_exceptions'] = implode(',', $this->recurrence->getExceptions());
+ }
+ }
+
+ public function getProperties()
+ {
+ return $this->_properties;
+ }
+
+ /**
* Returns a reference to a driver that's valid for this event.
*
* @return Kronolith_Driver A driver that this event can use to save