$access = OC_Calendar_App::getaccess($id, OC_Calendar_App::EVENT); if ($access != 'owner' && $access != 'rw') { OCP\JSON::error(array('message' => 'permission denied')); exit; } $vcalendar = OC_Calendar_App::getVCalendar($id, false, false); $vevent = $vcalendar->VEVENT; $allday = $_POST['allDay']; $delta = new DateInterval('P0D'); $delta->d = $_POST['dayDelta']; $delta->i = $_POST['minuteDelta']; OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']); $dtstart = $vevent->DTSTART; $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); $start_type = $dtstart->getDateType(); $end_type = $dtend->getDateType(); if ($allday && $start_type != Sabre_VObject_Property_DateTime::DATE) { $start_type = $end_type = Sabre_VObject_Property_DateTime::DATE; $dtend->setDateTime($dtend->getDateTime()->modify('+1 day'), $end_type); } if (!$allday && $start_type == Sabre_VObject_Property_DateTime::DATE) { $start_type = $end_type = Sabre_VObject_Property_DateTime::LOCALTZ; } $dtstart->setDateTime($dtstart->getDateTime()->add($delta), $start_type); $dtend->setDateTime($dtend->getDateTime()->add($delta), $end_type); unset($vevent->DURATION); $vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Property_DateTime::UTC); $vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Property_DateTime::UTC); $result = OC_Calendar_Object::edit($id, $vcalendar->serialize()); $lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime(); OCP\JSON::success(array('lastmodified' => (int) $lastmodified->format('U')));
/** * delete comment of task by id * @param int $taskID * @param int $commentID * @return bool * @throws \Exception */ public function deleteComment($taskID, $commentID) { $vcalendar = \OC_Calendar_App::getVCalendar($taskID); $vtodo = $vcalendar->VTODO; $commentIndex = $this->getCommentById($vtodo, $commentID); $comment = $vtodo->children[$commentIndex]; if ($comment['X-OC-USERID']->getValue() == $this->userId) { unset($vtodo->children[$commentIndex]); return \OC_Calendar_Object::edit($taskID, $vcalendar->serialize()); } else { throw new \Exception('Not allowed.'); } }
/** * @NoAdminRequired */ public function deleteComment() { $taskId = $this->params('taskID'); $commentId = $this->params('commentID'); $response = new JSONResponse(); try { $vcalendar = \OC_Calendar_App::getVCalendar($taskId); $vtodo = $vcalendar->VTODO; $commentIndex = $this->getCommentById($vtodo, $commentId); $comment = $vtodo->children[$commentIndex]; if ($comment['USERID'] == $this->userId) { unset($vtodo->children[$commentIndex]); \OC_Calendar_Object::edit($taskId, $vcalendar->serialize()); } else { throw new \Exception('Not allowed.'); } } catch (\Exception $e) { // throw new BusinessLayerException($e->getMessage()); } return $response; }
/** * edit VCalendar and set modification dates * * @param mixed $vcalendar * @param string $taskID * @return bool * @throws \Exception */ public function editVCalendar($vcalendar, $taskID) { $vtodo = $vcalendar->VTODO; $vtodo->{'LAST-MODIFIED'}->setValue(new \DateTime('now', new \DateTimeZone('UTC'))); $vtodo->DTSTAMP = new \DateTime('now', new \DateTimeZone('UTC')); return \OC_Calendar_Object::edit($taskID, $vcalendar->serialize()); }