From 2353f02d9a3d7ba3465ca918b71b34ffd0747d3f Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Fri, 16 Sep 2011 00:08:15 +0200 Subject: [PATCH] Fixes for Calendar app --- apps/calendar/ajax/editevent.php | 10 ++++++++++ apps/calendar/ajax/editeventform.php | 15 ++++++++++++++- apps/calendar/lib/object.php | 12 ++++++++++++ apps/calendar/templates/part.getcal.php | 6 +++++- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/apps/calendar/ajax/editevent.php b/apps/calendar/ajax/editevent.php index 54a9897b95..d8dae7a324 100644 --- a/apps/calendar/ajax/editevent.php +++ b/apps/calendar/ajax/editevent.php @@ -29,15 +29,25 @@ if($errarr){ exit; }else{ $id = $_POST['id']; + $cal = $_POST['calendar']; $data = OC_Calendar_Object::find($id); if (!$data) { echo json_encode(array("error"=>"true")); exit; } + $calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']); + if($calendar['userid'] != OC_User::getUser()){ + echo json_encode(array("error"=>"true")); + exit; + } $vcalendar = Sabre_VObject_Reader::read($data['calendardata']); OC_Calendar_Object::updateVCalendarFromRequest($_POST, $vcalendar); $result = OC_Calendar_Object::edit($id, $vcalendar->serialize()); + if ($data['calendarid'] != $cal) { + $calendar = OC_Calendar_Calendar::findCalendar($request['calendar']); + OC_Calendar_Object::moveToCalendar($id, $cal); + } echo json_encode(array("success"=>"true")); } ?> diff --git a/apps/calendar/ajax/editeventform.php b/apps/calendar/ajax/editeventform.php index 132bb4ae74..3b8a30f70f 100644 --- a/apps/calendar/ajax/editeventform.php +++ b/apps/calendar/ajax/editeventform.php @@ -26,6 +26,11 @@ $repeat_options = OC_Calendar_Object::getRepeatOptions($l10n); $id = $_GET['id']; $data = OC_Calendar_Object::find($id); +$calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']); +if($calendar['userid'] != OC_User::getUser()){ + echo $l10n->t('Wrong calendar'); + exit; +} $object = Sabre_VObject_Reader::read($data['calendardata']); $vevent = $object->VEVENT; $dtstart = $vevent->DTSTART; @@ -38,11 +43,19 @@ switch($dtstart->getDateType()) { $endtime = $dtend->getDateTime()->format('H:i'); $allday = false; break; + case Sabre_VObject_Element_DateTime::DATE: + $startdate = $dtstart->getDateTime()->format('d-m-Y'); + $starttime = ''; + $dtend->getDateTime()->modify('-1 day'); + $enddate = $dtend->getDateTime()->format('d-m-Y'); + $endtime = ''; + $allday = true; + break; } $summary = isset($vevent->SUMMARY) ? $vevent->SUMMARY->value : ''; $location = isset($vevent->LOCATION) ? $vevent->LOCATION->value : ''; -$category = isset($vevent->CATEGORY) ? $vevent->CATEGORY->value : ''; +$category = isset($vevent->CATEGORIES) ? $vevent->CATEGORIES->value : ''; $repeat = isset($vevent->CATEGORY) ? $vevent->CATEGORY->value : ''; $description = isset($vevent->DESCRIPTION) ? $vevent->DESCRIPTION->value : ''; diff --git a/apps/calendar/lib/object.php b/apps/calendar/lib/object.php index ab29307ce1..52fa391f1f 100644 --- a/apps/calendar/lib/object.php +++ b/apps/calendar/lib/object.php @@ -180,6 +180,15 @@ class OC_Calendar_Object{ return true; } + public static function moveToCalendar($id, $calendarid){ + $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_objects SET calendarid=? WHERE id = ?' ); + $result = $stmt->execute(array($calendarid,$id)); + + OC_Calendar_Calendar::touchCalendar($id); + + return true; + } + /** * @brief Creates a UID * @return string @@ -415,6 +424,9 @@ class OC_Calendar_Object{ $created->setDateTime($now, Sabre_VObject_Element_DateTime::UTC); $vevent->add($created); + $uid = self::createUID(); + $vevent->add('UID',$uid); + return self::updateVCalendarFromRequest($request, $vcalendar); } diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php index 69cd09dafe..aaa43c4950 100644 --- a/apps/calendar/templates/part.getcal.php +++ b/apps/calendar/templates/part.getcal.php @@ -13,7 +13,11 @@ * MA 02111-1307 USA * *************************************************/ $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1); -$events = OC_Calendar_Object::all($calendars[0]['id']); +$events = array(); +foreach($calendars as $calendar) { + $tmp = OC_Calendar_Object::all($calendar['id']); + $events = array_merge($events, $tmp); +} $select_year = $_GET["year"]; $return_events = array(); $user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London");