/**
  * @PublicPage
  * @NoCSRFRequired
  */
 public function getEventsPublic()
 {
     $token = $this->params('t');
     $pStart = $this->params('start');
     $pEnd = $this->params('end');
     $calendar_id = null;
     \OC::$server->getSession()->close();
     if (isset($token)) {
         $linkItem = \OCP\Share::getShareByToken($token, false);
         if (is_array($linkItem) && isset($linkItem['uid_owner'])) {
             $rootLinkItem = \OCP\Share::resolveReShare($linkItem);
             if (isset($rootLinkItem['uid_owner'])) {
                 \OCP\JSON::checkUserExists($rootLinkItem['uid_owner']);
                 $calendar_id = CalendarApp::validateItemSource($linkItem['item_source'], CalendarApp::SHARECALENDARPREFIX);
             }
         }
     }
     $start = new \DateTime('@' . $pStart);
     $end = new \DateTime('@' . $pEnd);
     $events = CalendarApp::getrequestedEvents($calendar_id, $start, $end);
     $output = array();
     foreach ($events as $event) {
         $eventArray = CalendarApp::generateEventOutput($event, $start, $end);
         if (is_array($eventArray)) {
             $output = array_merge($output, $eventArray);
         }
     }
     $response = new JSONResponse();
     $response->setData($output);
     return $response;
 }
Example #2
0
 /**
  * @NoAdminRequired
  */
 public function deleteSingleRepeatingEvent()
 {
     $id = $this->params('id');
     $pStart = $this->params('viewstart');
     $pEnd = $this->params('viewend');
     $choosenDate = $this->params('choosendate');
     $choosenDate = date('Ymd', $choosenDate);
     $choosenDate1 = $choosenDate;
     $data = CalendarApp::getEventObject($id, false, false);
     $vcalendar = VObject::parse($data['calendardata']);
     $vevent = $vcalendar->VEVENT;
     $vevent->setDateTime('LAST-MODIFIED', 'now');
     $vevent->setDateTime('DTSTAMP', 'now');
     $dtstart = $vevent->DTSTART;
     $start_type = (string) $dtstart->getValueType();
     if ($start_type === 'DATE') {
         $dateTime = new \DateTime($choosenDate);
         if ($dateTime instanceof \DateTime) {
             $vevent->addProperty('EXDATE', $dateTime);
         }
     } else {
         $sTimezone = CalendarApp::getTimezone();
         $dStartTime = $vevent->DTSTART;
         $sTime = $dStartTime->getDateTime()->format('H:i');
         $dateTime = new \DateTime($choosenDate . ' ' . $sTime, new \DateTimeZone($sTimezone));
         if ($dateTime instanceof \DateTime) {
             $vevent->addProperty('EXDATE', $dateTime);
         }
     }
     Repeat::update($id);
     Object::edit($id, $vcalendar->serialize());
     $editedEvent = CalendarApp::getEventObject($id, false, false);
     if (stristr($pStart, '(')) {
         $temp = explode('(', $pStart);
         $pStart = $temp[0];
     }
     if (stristr($pEnd, '(')) {
         $temp = explode('(', $pEnd);
         $pEnd = $temp[0];
     }
     $start = new \DateTime($pStart);
     $end = new \DateTime($pEnd);
     $events = CalendarApp::generateEventOutput($editedEvent, $start, $end);
     $params = ['status' => 'success', 'data' => ['id' => $id, 'events' => $events]];
     $response = new JSONResponse();
     $response->setData($params);
     return $response;
 }