From: Michael J. Rubinsky Date: Thu, 12 Aug 2010 01:01:22 +0000 (-0400) Subject: Have Kronolith_Event_Resource:: extend Kronolith_Event_Sql X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=ce130371a9bd6f298741434433ec03409374620c;p=horde.git Have Kronolith_Event_Resource:: extend Kronolith_Event_Sql The original idea was to prune the properties that didn't make sense for resource events (such as alarms, attendees etc...) but seeing how the UI for creating events currently still allows adding those properties, just extend the sql event object for now. --- diff --git a/kronolith/lib/Event/Resource.php b/kronolith/lib/Event/Resource.php index c12cc8bbe..acaf77e6d 100644 --- a/kronolith/lib/Event/Resource.php +++ b/kronolith/lib/Event/Resource.php @@ -12,7 +12,7 @@ * * @package Kronolith */ -class Kronolith_Event_Resource extends Kronolith_Event +class Kronolith_Event_Resource extends Kronolith_Event_Sql { /** * The type of the calender this event exists on. @@ -22,173 +22,6 @@ class Kronolith_Event_Resource extends Kronolith_Event public $calendarType = 'resource'; /** - * Imports a backend specific event object. - * - * @param array $event Backend specific event object that this object - * will represent. - */ - public function fromDriver($SQLEvent) - { - $driver = $this->getDriver(); - - $this->allday = (bool)$SQLEvent['event_allday']; - if (!$this->allday && $driver->getParam('utc')) { - $tz_local = date_default_timezone_get(); - $this->start = new Horde_Date($SQLEvent['event_start'], 'UTC'); - $this->start->setTimezone($tz_local); - $this->end = new Horde_Date($SQLEvent['event_end'], 'UTC'); - $this->end->setTimezone($tz_local); - } else { - $this->start = new Horde_Date($SQLEvent['event_start']); - $this->end = new Horde_Date($SQLEvent['event_end']); - } - - $this->durMin = ($this->end->timestamp() - $this->start->timestamp()) / 60; - - $this->title = $driver->convertFromDriver($SQLEvent['event_title']); - $this->id = $SQLEvent['event_id']; - $this->uid = $SQLEvent['event_uid']; - $this->creator = $SQLEvent['event_creator_id']; - - if (!empty($SQLEvent['event_recurtype'])) { - $this->recurrence = new Horde_Date_Recurrence($this->start); - $this->recurrence->setRecurType((int)$SQLEvent['event_recurtype']); - $this->recurrence->setRecurInterval((int)$SQLEvent['event_recurinterval']); - if (isset($SQLEvent['event_recurenddate'])) { - if ($driver->getParam('utc')) { - $recur_end = new Horde_Date($SQLEvent['event_recurenddate'], 'UTC'); - if ($recur_end->min == 0) { - /* Old recurrence end date format. */ - $recur_end = new Horde_Date($SQLEvent['event_recurenddate']); - $recur_end->hour = 23; - $recur_end->min = 59; - $recur_end->sec = 59; - } else { - $recur_end->setTimezone(date_default_timezone_get()); - } - } else { - $recur_end = new Horde_Date($SQLEvent['event_recurenddate']); - $recur_end->hour = 23; - $recur_end->min = 59; - $recur_end->sec = 59; - } - $this->recurrence->setRecurEnd($recur_end); - } - if (isset($SQLEvent['event_recurcount'])) { - $this->recurrence->setRecurCount((int)$SQLEvent['event_recurcount']); - } - if (isset($SQLEvent['event_recurdays'])) { - $this->recurrence->recurData = (int)$SQLEvent['event_recurdays']; - } - if (!empty($SQLEvent['event_exceptions'])) { - $this->recurrence->exceptions = explode(',', $SQLEvent['event_exceptions']); - } - } - - if (isset($SQLEvent['event_location'])) { - $this->location = $driver->convertFromDriver($SQLEvent['event_location']); - } - if (isset($SQLEvent['event_private'])) { - $this->private = (bool)($SQLEvent['event_private']); - } - if (isset($SQLEvent['event_status'])) { - $this->status = (int)$SQLEvent['event_status']; - } - if (isset($SQLEvent['event_attendees'])) { - $this->attendees = array_change_key_case($driver->convertFromDriver(unserialize($SQLEvent['event_attendees']))); - } - if (isset($SQLEvent['event_resources'])) { - $this->_resources = array_change_key_case($driver->convertFromDriver(unserialize($SQLEvent['event_resources']))); - } - if (isset($SQLEvent['event_description'])) { - $this->description = $driver->convertFromDriver($SQLEvent['event_description']); - } - if (isset($SQLEvent['event_alarm'])) { - $this->alarm = (int)$SQLEvent['event_alarm']; - } - if (isset($SQLEvent['event_alarm_methods'])) { - $this->methods = $driver->convertFromDriver(unserialize($SQLEvent['event_alarm_methods'])); - } - $this->initialized = true; - $this->stored = true; - } - - /** - * Prepares this event to be saved to the backend. - */ - public function toProperties() - { - $driver = $this->getDriver(); - $properties = array(); - - /* Basic fields. */ - $properties['event_creator_id'] = $driver->convertToDriver($this->creator); - $properties['event_title'] = $driver->convertToDriver($this->title); - $properties['event_description'] = $driver->convertToDriver($this->description); - $properties['event_location'] = $driver->convertToDriver($this->location); - $properties['event_private'] = (int)$this->private; - $properties['event_status'] = $this->status; - $properties['event_attendees'] = serialize($driver->convertToDriver($this->attendees)); - $properties['event_resources'] = serialize($driver->convertToDriver($this->getResources())); - $properties['event_modified'] = $_SERVER['REQUEST_TIME']; - - if ($this->isAllDay()) { - $properties['event_start'] = $this->start->strftime('%Y-%m-%d %H:%M:%S'); - $properties['event_end'] = $this->end->strftime('%Y-%m-%d %H:%M:%S'); - $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; - } - $properties['event_start'] = $start->strftime('%Y-%m-%d %H:%M:%S'); - $properties['event_end'] = $end->strftime('%Y-%m-%d %H:%M:%S'); - $properties['event_allday'] = 0; - } - - /* Alarm. */ - $properties['event_alarm'] = (int)$this->alarm; - - /* Alarm Notification Methods. */ - $properties['event_alarm_methods'] = serialize($driver->convertToDriver($this->methods)); - - /* Recurrence. */ - if (!$this->recurs()) { - $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)); - } - - $properties['event_recurtype'] = $recur; - $properties['event_recurinterval'] = $this->recurrence->getRecurInterval(); - $properties['event_recurenddate'] = $recur_end->format('Y-m-d H:i:s'); - $properties['event_recurcount'] = $this->recurrence->getRecurCount(); - - switch ($recur) { - case Horde_Date_Recurrence::RECUR_WEEKLY: - $properties['event_recurdays'] = $this->recurrence->getRecurOnDays(); - break; - } - $properties['event_exceptions'] = implode(',', $this->recurrence->getExceptions()); - } - return $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