/** * As defined in Sabre_CalDAV_Backend_Abstract * * Returns all calendar objects for the given calendar id. * We don't return all calendar data here. * * @param string $calendarId The id of the calendar to retrieve. Corresponds to the id of the user it belongs to. * * @return array CalendarObject data as specified by SabreDAV. */ public function getCalendarObjects($calendarId) { $db = Phprojekt::getInstance()->getDb(); $calendar = new Calendar2_Models_Calendar2(); $where = $db->quoteInto('u.user_id = ?', $calendarId); $join = 'JOIN calendar2_user_relation AS u ON calendar2.id = u.calendar2_id'; $events = $calendar->fetchAll($where, 'uri', null, null, null, $join); if (empty($events)) { return array(); } $ret = array(); $currentUri = $events[0]->uri; $group = array(array_shift($events)); while (!empty($events)) { $e = array_shift($events); if ($e->uri === $currentUri) { $group[] = $e; } else { $ret[] = $this->getCalendarObjectsGroup($calendarId, $group); $currentUri = $e->uri; $group = array($e); } } $ret[] = $this->getCalendarObjectsGroup($calendarId, $group); return $ret; }
private function _regenerateSearch() { $step = 100; $start = 0; $max = $this->_db->select()->from('calendar2', 'MAX(id)')->query()->fetchColumn(); $model = new Calendar2_Models_Calendar2(); $search = new Phprojekt_Search(); while ($start <= $max) { if ($this->_debug) { Phprojekt::getInstance()->getLog()->debug($start . ' - ' . ($start + $step)); } $events = $model->fetchAll("id >= {$start} AND id < " . ($start + $step)); $start += $step; foreach ($events as $e) { $search->indexObjectItem($e); } } }