Kronolith_Event_Sql::fromDriver PHP Method

fromDriver() public method

Imports a backend specific event object.
public fromDriver ( $SQLEvent )
    public function fromDriver($SQLEvent)
    {
        $driver = $this->getDriver();
        if (isset($SQLEvent['event_timezone'])) {
            $this->timezone = $SQLEvent['event_timezone'];
        }
        $tz_local = date_default_timezone_get();
        $this->allday = (bool) $SQLEvent['event_allday'];
        if (!$this->allday && $driver->getParam('utc')) {
            $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']);
            if ($this->end->hour == 23 && $this->end->min == 59) {
                $this->end->hour = $this->end->min = $this->end->sec = 0;
                $this->end->mday++;
            }
        }
        $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'];
        $this->organizer = $SQLEvent['event_organizer'];
        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']) && $SQLEvent['event_recurenddate'] != '9999-12-31 23:59:59') {
                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_url'])) {
            $this->url = $SQLEvent['event_url'];
        }
        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'])) {
            $attendees = unserialize($SQLEvent['event_attendees']);
            if ($attendees) {
                if (!is_object($attendees)) {
                    $this->attendees = new Kronolith_Attendee_List();
                    foreach ($attendees as $email => $attendee) {
                        $this->attendees->add(Kronolith_Attendee::migrate($email, $driver->convertFromDriver($attendee)));
                    }
                } else {
                    $this->attendees = new Kronolith_Attendee_List(iterator_to_array($attendees));
                }
            }
        }
        if (isset($SQLEvent['event_resources'])) {
            $resources = unserialize($SQLEvent['event_resources']);
            if ($resources) {
                $this->_resources = array_change_key_case($driver->convertFromDriver($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'])) {
            $methods = unserialize($SQLEvent['event_alarm_methods']);
            if ($methods) {
                $this->methods = $driver->convertFromDriver($methods);
            }
        }
        if (isset($SQLEvent['event_baseid'])) {
            $this->baseid = $SQLEvent['event_baseid'];
        }
        if (isset($SQLEvent['event_exceptionoriginaldate'])) {
            if ($driver->getParam('utc')) {
                $this->exceptionoriginaldate = new Horde_Date($SQLEvent['event_exceptionoriginaldate'], 'UTC');
                $this->exceptionoriginaldate->setTimezone($tz_local);
            } else {
                $this->exceptionoriginaldate = new Horde_Date($SQLEvent['event_exceptionoriginaldate']);
            }
        }
        $this->initialized = true;
        $this->stored = true;
    }