parent
e940152bce
commit
4d884c3849
@ -1,99 +1,26 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> |
||||
* Copyright (c) 2011, 2012 Georg Ehrke <ownclouddev at georgswebsite dot de> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
require_once ('../../../lib/base.php'); |
||||
require_once('when/When.php'); |
||||
require_once(OC::$THIRDPARTYROOT . 'when/When.php'); |
||||
|
||||
OC_JSON::checkLoggedIn(); |
||||
OC_JSON::checkAppEnabled('calendar'); |
||||
|
||||
if(version_compare(PHP_VERSION, '5.3.0', '>=')){ |
||||
$start = DateTime::createFromFormat('U', $_GET['start']); |
||||
$end = DateTime::createFromFormat('U', $_GET['end']); |
||||
}else{ |
||||
$start = new DateTime('@' . $_GET['start']); |
||||
$end = new DateTime('@' . $_GET['end']); |
||||
} |
||||
$start = (version_compare(PHP_VERSION, '5.3.0', '>='))?DateTime::createFromFormat('U', $_GET['start']):new DateTime('@' . $_GET['start']); |
||||
$end = (version_compare(PHP_VERSION, '5.3.0', '>='))?DateTime::createFromFormat('U', $_GET['end']):new DateTime('@' . $_GET['end']); |
||||
|
||||
if($_GET['calendar_id'] == 'shared_rw' || $_GET['calendar_id'] == 'shared_r'){ |
||||
$calendars = OC_Calendar_Share::allSharedwithuser(OC_USER::getUser(), OC_Calendar_Share::CALENDAR, 1, ($_GET['calendar_id'] == 'shared_rw')?'rw':'r'); |
||||
$events = array(); |
||||
foreach($calendars as $calendar){ |
||||
$calendarevents = OC_Calendar_Object::allInPeriod($calendar['calendarid'], $start, $end); |
||||
$events = array_merge($events, $calendarevents); |
||||
} |
||||
}else{ |
||||
$calendar_id = $_GET['calendar_id']; |
||||
if (is_numeric($calendar_id)) { |
||||
$calendar = OC_Calendar_App::getCalendar($calendar_id); |
||||
OC_Response::enableCaching(0); |
||||
OC_Response::setETagHeader($calendar['ctag']); |
||||
$events = OC_Calendar_Object::allInPeriod($calendar_id, $start, $end); |
||||
} else { |
||||
$events = array(); |
||||
OC_Hook::emit('OC_Calendar', 'getEvents', array('calendar_id' => $calendar_id, 'events' => &$events)); |
||||
} |
||||
} |
||||
$events = OC_Calendar_App::getrequestedEvents($_GET['calendar_id'], $start, $end); |
||||
|
||||
$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get()); |
||||
$return = array(); |
||||
$output = array(); |
||||
foreach($events as $event){ |
||||
if (isset($event['calendardata'])) { |
||||
$object = OC_VObject::parse($event['calendardata']); |
||||
$vevent = $object->VEVENT; |
||||
} else { |
||||
$vevent = $event['vevent']; |
||||
} |
||||
|
||||
$return_event = OC_Calendar_App::prepareForOutput($event, $vevent); |
||||
|
||||
$dtstart = $vevent->DTSTART; |
||||
$start_dt = $dtstart->getDateTime(); |
||||
$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); |
||||
$end_dt = $dtend->getDateTime(); |
||||
if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE){ |
||||
$return_event['allDay'] = true; |
||||
}else{ |
||||
$return_event['allDay'] = false; |
||||
$start_dt->setTimezone(new DateTimeZone($user_timezone)); |
||||
$end_dt->setTimezone(new DateTimeZone($user_timezone)); |
||||
} |
||||
if($event['repeating'] == 1){ |
||||
$duration = (double) $end_dt->format('U') - (double) $start_dt->format('U'); |
||||
$r = new When(); |
||||
$r->recur($start_dt)->rrule((string) $vevent->RRULE); |
||||
while($result = $r->next()){ |
||||
if($result < $start){ |
||||
continue; |
||||
} |
||||
if($result > $end){ |
||||
break; |
||||
} |
||||
if($return_event['allDay'] == true){ |
||||
$return_event['start'] = $result->format('Y-m-d'); |
||||
$return_event['end'] = date('Y-m-d', $result->format('U') + --$duration); |
||||
}else{ |
||||
$return_event['start'] = $result->format('Y-m-d H:i:s'); |
||||
$return_event['end'] = date('Y-m-d H:i:s', $result->format('U') + $duration); |
||||
} |
||||
$return[] = $return_event; |
||||
} |
||||
}else{ |
||||
if($return_event['allDay'] == true){ |
||||
$return_event['start'] = $start_dt->format('Y-m-d'); |
||||
$end_dt->modify('-1 sec'); |
||||
$return_event['end'] = $end_dt->format('Y-m-d'); |
||||
}else{ |
||||
$return_event['start'] = $start_dt->format('Y-m-d H:i:s'); |
||||
$return_event['end'] = $end_dt->format('Y-m-d H:i:s'); |
||||
} |
||||
$return[] = $return_event; |
||||
} |
||||
$output[] = OC_Calendar_App::generateEventOutput($event, $start, $end); |
||||
} |
||||
OC_JSON::encodedPrint($return); |
||||
?> |
||||
|
||||
OC_JSON::encodedPrint($output); |
||||
?> |
Loading…
Reference in new issue