/** * @NoAdminRequired */ public function touchCalendar() { $id = (int) $this->params('eventid'); $data = CalendarApp::getEventObject($id, false, false); $vcalendar = VObject::parse($data['calendardata']); $vevent = $vcalendar->VEVENT; $vevent->setDateTime('LAST-MODIFIED', 'now'); $vevent->setDateTime('DTSTAMP', 'now'); Object::edit($id, $vcalendar->serialize()); $params = ['status' => 'success']; $response = new JSONResponse($params); return $response; }
/** *@PublicPage * @NoCSRFRequired * */ public function exportEvents() { $token = $this->params('t'); $calid = null; $eventid = null; 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']); if ($linkItem['item_type'] === CalendarApp::SHARECALENDAR) { $sPrefix = CalendarApp::SHARECALENDARPREFIX; } if ($linkItem['item_type'] === CalendarApp::SHAREEVENT) { $sPrefix = CalendarApp::SHAREEVENTPREFIX; } if ($linkItem['item_type'] === CalendarApp::SHARETODO) { $sPrefix = CalendarApp::SHARETODOPREFIX; } $itemSource = CalendarApp::validateItemSource($linkItem['item_source'], $sPrefix); if ($linkItem['item_type'] === CalendarApp::SHARECALENDAR) { $calid = $itemSource; } if ($linkItem['item_type'] === CalendarApp::SHAREEVENT || $linkItem['item_type'] === CalendarApp::SHARETODO) { $eventid = $itemSource; } } } } else { if (\OCP\User::isLoggedIn()) { $calid = $this->params('calid'); $eventid = $this->params('eventid'); } } if (!is_null($calid)) { //check shared calendar also $calendar = CalendarApp::getCalendar($calid, true, true); if (!$calendar) { $params = ['status' => 'error']; $response = new JSONResponse($params); return $response; } $name = str_replace(' ', '_', $calendar['displayname']) . '.ics'; $calendarEvents = Export::export($calid, Export::CALENDAR); $response = new DataDownloadResponse($calendarEvents, $name, 'text/calendar'); return $response; } if (!is_null($eventid)) { $data = CalendarApp::getEventObject($eventid, false); if (!$data) { $params = ['status' => 'error']; $response = new JSONResponse($params); return $response; } $name = str_replace(' ', '_', $data['summary']) . '.ics'; $singleEvent = Export::export($eventid, Export::EVENT); $response = new DataDownloadResponse($singleEvent, $name, 'text/calendar'); return $response; } }
/** * @NoAdminRequired */ public function sendEmailEventIcs() { $eventId = $this->params('eventId'); $pEmails = $this->params('emails'); $emails = array_map('trim', explode(",", $pEmails)); $event = CalendarApp::getEventObject($eventId); if ($event === false || $event === null) { $errarr['status'] = 'error'; $response = new JSONResponse($errarr); return $response; } $summary = $event['summary']; $dtstart = $event['startdate']; $dtend = $event['enddate']; CalendarApp::sendEmails($eventId, $summary, $dtstart, $dtend, $emails); $errarr['status'] = 'success'; $response = new JSONResponse($errarr); return $response; }
private function getPublicEvent($itemSource, $shareOwner, $token) { $itemSource = CalendarApp::validateItemSource($itemSource, CalendarApp::SHAREEVENTPREFIX); $data = CalendarApp::getEventObject($itemSource, false, false); $object = VObject::parse($data['calendardata']); $vevent = $object->VEVENT; $object = Object::cleanByAccessClass($itemSource, $object); $accessclass = $vevent->getAsString('CLASS'); if ($accessclass == 'PRIVATE') { header('HTTP/1.0 404 Not Found'); $response = new TemplateResponse('core', '404', '', 'guest'); return $response; } $permissions = CalendarApp::getPermissions($itemSource, CalendarApp::EVENT, $accessclass); $dtstart = $vevent->DTSTART; $dtend = Object::getDTEndFromVEvent($vevent); $dtstartType = $vevent->DTSTART->getValueType(); if ($dtstartType == 'DATE') { $startdate = $dtstart->getDateTime()->format('d-m-Y'); $starttime = ''; $enddate = $dtend->getDateTime()->modify('-1 day')->format('d-m-Y'); $endtime = ''; $choosenDate = $choosenDate + 3600 * 24; $allday = true; } if ($dtstartType == 'DATE-TIME') { $startdate = $dtstart->getDateTime()->format('d-m-Y'); $starttime = $dtstart->getDateTime()->format('H:i'); $enddate = $dtend->getDateTime()->format('d-m-Y'); $endtime = $dtend->getDateTime()->format('H:i'); $allday = false; } $summary = strtr($vevent->getAsString('SUMMARY'), array('\\,' => ',', '\\;' => ';')); $location = strtr($vevent->getAsString('LOCATION'), array('\\,' => ',', '\\;' => ';')); $categories = $vevent->getAsArray('CATEGORIES'); $description = strtr($vevent->getAsString('DESCRIPTION'), array('\\,' => ',', '\\;' => ';')); $link = strtr($vevent->getAsString('URL'), array('\\,' => ',', '\\;' => ';')); $last_modified = $vevent->__get('LAST-MODIFIED'); if ($last_modified) { $lastmodified = $last_modified->getDateTime()->format('U'); } else { $lastmodified = 0; } $repeatInfo = array(); $repeat['repeat'] = ''; if ($data['repeating'] == 1) { $rrule = explode(';', $vevent->getAsString('RRULE')); $rrulearr = array(); $repeat['repeat_rules'] = ''; foreach ($rrule as $rule) { list($attr, $val) = explode('=', $rule); if ($attr != 'COUNT' && $attr !== 'UNTIL') { if ($repeat['repeat_rules'] === '') { $repeat['repeat_rules'] = $attr . '=' . $val; } else { $repeat['repeat_rules'] .= ';' . $attr . '=' . $val; } } if ($attr === 'COUNT' || $attr !== 'UNTIL') { $rrulearr[$attr] = $val; } } if (array_key_exists('COUNT', $rrulearr)) { $repeat['end'] = 'count'; $repeat['count'] = $rrulearr['COUNT']; } elseif (array_key_exists('UNTIL', $rrulearr)) { $repeat['end'] = 'date'; $endbydate_day = substr($rrulearr['UNTIL'], 6, 2); $endbydate_month = substr($rrulearr['UNTIL'], 4, 2); $endbydate_year = substr($rrulearr['UNTIL'], 0, 4); $repeat['date'] = $endbydate_day . '-' . $endbydate_month . '-' . $endbydate_year; } else { $repeat['end'] = 'never'; } $repeat_end_options = CalendarApp::getEndOptions(); if ($repeat['end'] === 'count') { $repeatInfo['end'] = $this->l10n->t('after') . ' ' . $repeat['count'] . ' ' . $this->l10n->t('Events'); } if ($repeat['end'] === 'date') { $repeatInfo['end'] = $repeat['date']; } if ($repeat['end'] === 'never') { $repeatInfo['end'] = $repeat_end_options[$repeat['end']]; } } else { $repeat['repeat'] = 'doesnotrepeat'; } $calendar_options[0]['id'] = $data['calendarid']; $access_class_options = CalendarApp::getAccessClassOptions(); $aOExdate = ''; if ($vevent->EXDATE) { $timezone = CalendarApp::getTimezone(); foreach ($vevent->EXDATE as $param) { $param = new \DateTime($param); $aOExdate[$param->format('U')] = $param->format('d-m-Y'); } } $timezone = \OC::$server->getSession()->get('public_link_timezone'); $sCat = ''; if (is_array($categories) && count($categories) > 0) { $sCat = $categories; } $params = ['eventid' => $itemSource, 'appname' => $this->appName, 'permissions' => $permissions, 'lastmodified' => $lastmodified, 'exDate' => $aOExdate, 'sharingToken' => $token, 'token' => $token, 'calendar_options' => $calendar_options, 'access_class_options' => $access_class_options, 'title' => $summary, 'accessclass' => $accessclass, 'location' => $location, 'calendar' => $data['calendarid'], 'timezone' => $timezone, 'uidOwner' => $shareOwner, 'displayName' => \OCP\User::getDisplayName($shareOwner), 'allday' => $allday, 'startdate' => $startdate, 'starttime' => $starttime, 'enddate' => $enddate, 'endtime' => $endtime, 'description' => $description, 'link' => $link, 'repeat_rules' => isset($repeat['repeat_rules']) ? $repeat['repeat_rules'] : '', 'repeat' => $repeat['repeat'], 'repeatInfo' => $repeat['repeat'] != 'doesnotrepeat' ? $repeatInfo : '', 'categories' => $sCat]; $response = new TemplateResponse($this->appName, 'publicevent', $params, 'base'); return $response; }
/** * @NoAdminRequired */ public function deleteTask() { $id = $this->params('id'); $task = CalendarApp::getEventObject($id); //Search for Sub Tasks $subTaskIds = ''; if ($task['relatedto'] === '') { $subTaskIds = TasksApp::getSubTasks($task['eventuid']); if ($subTaskIds !== '') { $tempIds = explode(',', $subTaskIds); foreach ($tempIds as $subIds) { Object::delete($subIds); } } } Object::delete($id); $params = ['id' => $id]; $response = new JSONResponse(); $response->setData($params); return $response; }