/** * @brief generates the cache the first time * @param (int) id - id of the event * @return (bool) */ public static function generate($id) { $event = OC_Calendar_Object::find($id); if ($event['repeating'] == 0) { return false; } $object = OC_VObject::parse($event['calendardata']); $start = new DateTime('01-01-' . date('Y') . ' 00:00:00', new DateTimeZone('UTC')); $start->modify('-5 years'); $end = new DateTime('31-12-' . date('Y') . ' 23:59:59', new DateTimeZone('UTC')); $end->modify('+5 years'); $object->expand($start, $end); foreach ($object->getComponents() as $vevent) { if (!$vevent instanceof Sabre\VObject\Component\VEvent) { continue; } $startenddate = OC_Calendar_Object::generateStartEndDate($vevent->DTSTART, OC_Calendar_Object::getDTEndFromVEvent($vevent), $vevent->DTSTART->getDateType() == Sabre\VObject\Property\DateTime::DATE ? true : false, 'UTC'); $stmt = OCP\DB::prepare('INSERT INTO `*PREFIX*calendar_repeat` (`eventid`,`calid`,`startdate`,`enddate`) VALUES(?,?,?,?)'); $stmt->execute(array($id, OC_Calendar_Object::getCalendarid($id), $startenddate['start'], $startenddate['end'])); } return true; }
<?php /** * Copyright (c) 2011 Bart Visscher <*****@*****.**> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('calendar'); $id = $_POST['id']; if (!array_key_exists('calendar', $_POST)) { $cal = OC_Calendar_Object::getCalendarid($id); $_POST['calendar'] = $cal; } else { $cal = $_POST['calendar']; } $access = OC_Calendar_App::getaccess($id, OC_Calendar_App::EVENT); if ($access != 'owner' && $access != 'rw') { OCP\JSON::error(array('message' => 'permission denied')); exit; } $errarr = OC_Calendar_Object::validateRequest($_POST); if ($errarr) { //show validate errors OCP\JSON::error($errarr); exit; } else { $data = OC_Calendar_App::getEventObject($id, false, false); $vcalendar = OC_VObject::parse($data['calendardata']); OC_Calendar_App::isNotModified($vcalendar->VEVENT, $_POST['lastmodified']);