/** *@PublicPage * @NoCSRFRequired * @UseSession */ public function index($token) { if ($token) { $linkItem = Share::getShareByToken($token, false); if (is_array($linkItem) && isset($linkItem['uid_owner'])) { $type = $linkItem['item_type']; $itemSource = CalendarApp::validateItemSource($linkItem['item_source'], CalendarApp::SHARETODOPREFIX); $shareOwner = $linkItem['uid_owner']; $calendarName = $linkItem['item_target']; $rootLinkItem = \OCP\Share::resolveReShare($linkItem); // stupid copy and paste job if (isset($linkItem['share_with'])) { // Authenticate share_with $password = $this->params('password'); if (isset($password)) { if ($linkItem['share_type'] === \OCP\Share::SHARE_TYPE_LINK) { // Check Password $newHash = ''; if (\OC::$server->getHasher()->verify($password, $linkItem['share_with'], $newHash)) { $this->session->set('public_link_authenticated', $linkItem['id']); if (!empty($newHash)) { } } else { \OCP\Util::addStyle('files_sharing', 'authenticate'); $params = array('wrongpw' => true); return new TemplateResponse('files_sharing', 'authenticate', $params, 'guest'); } } else { \OCP\Util::writeLog('share', 'Unknown share type ' . $linkItem['share_type'] . ' for share id ' . $linkItem['id'], \OCP\Util::ERROR); return false; } } else { // Check if item id is set in session if (!$this->session->exists('public_link_authenticated') || $this->session->get('public_link_authenticated') !== $linkItem['id']) { // Prompt for password \OCP\Util::addStyle('files_sharing', 'authenticate'); $params = array(); return new TemplateResponse('files_sharing', 'authenticate', $params, 'guest'); } } } \OCP\Util::addStyle(CalendarApp::$appname, '3rdparty/fontello/css/animation'); \OCP\Util::addStyle(CalendarApp::$appname, '3rdparty/fontello/css/fontello'); \OCP\Util::addStyle($this->appName, 'style'); \OCP\Util::addStyle($this->appName, 'share'); \OCP\Util::addScript($this->appName, 'share'); $data = TasksApp::getEventObject($itemSource, false, false); $l = \OC::$server->getL10N($this->appName); $object = VObject::parse($data['calendardata']); $vTodo = $object->VTODO; $id = $data['id']; $object = Object::cleanByAccessClass($id, $object); $accessclass = $vTodo->getAsString('CLASS'); $permissions = TasksApp::getPermissions($id, TasksApp::TODO, $accessclass); if ($accessclass === 'PRIVATE') { header('HTTP/1.0 404 Not Found'); $response = new TemplateResponse('core', '404', '', 'guest'); return $response; } $categories = $vTodo->getAsArray('CATEGORIES'); $summary = strtr($vTodo->getAsString('SUMMARY'), array('\\,' => ',', '\\;' => ';')); $location = strtr($vTodo->getAsString('LOCATION'), array('\\,' => ',', '\\;' => ';')); $description = strtr($vTodo->getAsString('DESCRIPTION'), array('\\,' => ',', '\\;' => ';')); $priorityOptionsArray = TasksApp::getPriorityOptionsFilterd(); //$priorityOptions=$priorityOptionsArray[(string)$vTodo->priority]; $priorityOptions = 0; $link = strtr($vTodo->getAsString('URL'), array('\\,' => ',', '\\;' => ';')); $TaskDate = ''; $TaskTime = ''; if ($vTodo->DUE) { $dateDueType = $vTodo->DUE->getValueType(); if ($dateDueType == 'DATE') { $TaskDate = $vTodo->DUE->getDateTime()->format('d.m.Y'); $TaskTime = ''; } if ($dateDueType == 'DATE-TIME') { $TaskDate = $vTodo->DUE->getDateTime()->format('d.m.Y'); $TaskTime = $vTodo->DUE->getDateTime()->format('H:i'); } } $TaskStartTime = ''; $TaskStartDate = ''; if ($vTodo->DTSTART) { $dateStartType = $vTodo->DTSTART->getValueType(); if ($dateStartType === 'DATE') { $TaskStartDate = $vTodo->DTSTART->getDateTime()->format('d.m.Y'); $TaskStartTime = ''; } if ($dateStartType === 'DATE-TIME') { $TaskStartDate = $vTodo->DTSTART->getDateTime()->format('d.m.Y'); $TaskStartTime = $vTodo->DTSTART->getDateTime()->format('H:i'); } } //PERCENT-COMPLETE $cptlStatus = (string) $this->l10n->t('needs action'); $percentComplete = 0; if ($vTodo->{'PERCENT-COMPLETE'}) { $percentComplete = $vTodo->{'PERCENT-COMPLETE'}; //$cptlStatus = (string)$this->l10n->t('in procress'); if ($percentComplete === '0') { $cptlStatus = (string) $this->l10n->t('needs action'); } if ($percentComplete > '0' && $percentComplete < '100') { $cptlStatus = (string) $this->l10n->t('in procress'); } } if ($vTodo->{'COMPLETED'}) { $cptlStatus = (string) $this->l10n->t('completed'); } $timezone = \OC::$server->getSession()->get('public_link_timezone'); $sCat = ''; if (is_array($categories) && count($categories) > 0) { $sCat = $categories; } $params = ['eventid' => $itemSource, 'permissions' => $permissions, 'priorityOptions' => $priorityOptions, 'percentComplete' => $percentComplete, 'cptlStatus' => $cptlStatus, 'TaskDate' => isset($TaskDate) ? $TaskDate : '', 'TaskTime' => isset($TaskTime) ? $TaskTime : '', 'TaskStartDate' => isset($TaskStartDate) ? $TaskStartDate : '', 'TaskStartTime' => isset($TaskStartTime) ? $TaskStartTime : '', 'title' => $summary, 'accessclass' => $accessclass, 'location' => $location, 'categories' => $sCat, 'calendar' => $data['calendarid'], 'aCalendar' => CalendarApp::getCalendar($data['calendarid'], false, false), 'calAppName' => CalendarApp::$appname, 'description' => $description, 'repeat_rules' => '', 'link' => $link, 'timezone' => $timezone, 'uidOwner' => $shareOwner, 'displayName' => \OCP\User::getDisplayName($shareOwner), 'sharingToken' => $token, 'token' => $token]; $response = new TemplateResponse($this->appName, 'publicevent', $params, 'base'); return $response; } //end isset } //end token $tmpl = new \OCP\Template('', '404', 'guest'); $tmpl->printPage(); }
/** * @NoAdminRequired */ public function editTask() { //relatedto,hiddenfield, read_worker,$_POST,mytaskcal, mytaskmode $id = $this->params('tid'); $hiddenPostField = $this->params('hiddenfield'); $myTaskCal = $this->params('mytaskcal'); $myTaskMode = $this->params('mytaskmode'); $data = TasksApp::getEventObject($id, false, false); $object = VObject::parse($data['calendardata']); $calId = Object::getCalendarid($id); $orgId = $data['org_objid']; //Search for Main Task $mainTaskId = ''; if ($data['relatedto'] !== '') { $mainTaskId = TasksApp::getEventIdbyUID($data['relatedto']); } //Search for Sub Tasks $subTaskIds = ''; if ($data['relatedto'] === '') { $subTaskIds = TasksApp::getSubTasks($data['eventuid']); } if (isset($hiddenPostField) && $hiddenPostField === 'edititTask' && $id > 0) { $cid = $this->params('read_worker'); $postRequestAll = $this->getParams(); TasksApp::updateVCalendarFromRequest($postRequestAll, $object); TasksApp::edit($id, $object->serialize(), $orgId); if ($mainTaskId === '') { $mainTaskId = $id; } if ($calId !== intval($cid)) { Object::moveToCalendar($id, intval($cid)); if ($subTaskIds !== '') { $tempIds = explode(',', $subTaskIds); foreach ($tempIds as $subIds) { Object::moveToCalendar($subIds, intval($cid)); } } } $vcalendar1 = TasksApp::getVCalendar($id, true, true); $vtodo = $vcalendar1->VTODO; $aTask = TasksApp::getEventObject($id, true, true); $aCalendar = CalendarCalendar::find($aTask['calendarid']); $user_timezone = CalendarApp::getTimezone(); $task_info = TasksApp::arrayForJSON($id, $vtodo, $user_timezone, $aCalendar, $aTask); $task_info['olduid'] = $data['eventuid']; $task_info['oldcalendarid'] = $data['calendarid']; $response = new JSONResponse(); $response->setData($task_info); return $response; } $vtodo = $object->VTODO; $object = Object::cleanByAccessClass($id, $object); $accessclass = $vtodo->getAsString('CLASS'); if (empty($accessclass)) { $accessclass = 'PUBLIC'; } $permissions = TasksApp::getPermissions($id, TasksApp::TODO, $accessclass); $link = strtr($vtodo->getAsString('URL'), array('\\,' => ',', '\\;' => ';')); $TaskDate = ''; $TaskTime = ''; if ($vtodo->DUE) { $dateDueType = $vtodo->DUE->getValueType(); if ($dateDueType === 'DATE') { $TaskDate = $vtodo->DUE->getDateTime()->format('d.m.Y'); $TaskTime = ''; } if ($dateDueType === 'DATE-TIME') { $TaskDate = $vtodo->DUE->getDateTime()->format('d.m.Y'); $TaskTime = $vtodo->DUE->getDateTime()->format('H:i'); } } $TaskStartDate = ''; $TaskStartTime = ''; if ($vtodo->DTSTART) { $dateStartType = $vtodo->DTSTART->getValueType(); if ($dateStartType === 'DATE') { $TaskStartDate = $vtodo->DTSTART->getDateTime()->format('d.m.Y'); $TaskStartTime = ''; } if ($dateStartType === 'DATE-TIME') { $TaskStartDate = $vtodo->DTSTART->getDateTime()->format('d.m.Y'); $TaskStartTime = $vtodo->DTSTART->getDateTime()->format('H:i'); } } $priority = $vtodo->getAsString('PRIORITY'); $calendarsArrayTmp = CalendarCalendar::allCalendars($this->userId, true); //Filter Importent Values $calendar_options = array(); $checkArray = array(); $checkShareArray = array(); $bShareCalId = ''; foreach ($calendarsArrayTmp as $calendar) { $isAktiv = $calendar['active']; if ($this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'calendar_' . $calendar['id']) != '') { $isAktiv = $this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'calendar_' . $calendar['id']); } if (!array_key_exists('active', $calendar)) { $isAktiv = 1; } if ((int) $isAktiv === 1 && $calendar['userid'] !== $this->userId || $mainTaskId !== '') { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $calendar['id']); if ($sharedCalendar && $sharedCalendar['permissions'] & \OCP\PERMISSION_UPDATE && $mainTaskId === '') { array_push($calendar_options, $calendar); $checkShareArray[$calendar['id']] = $sharedCalendar['permissions']; } } if ($isAktiv === 1 && $calendar['userid'] === $this->userId) { array_push($calendar_options, $calendar); $checkShareArray[$calendar['id']] = \OCP\PERMISSION_ALL; } } if (!array_key_exists($calId, $checkShareArray)) { $bShareCalId = 'hide'; } $priorityOptionsArray = TasksApp::getPriorityOptionsFilterd(); $priorityOptions = TasksApp::generateSelectFieldArray('priority', (string) $vtodo->priority, $priorityOptionsArray, false); $access_class_options = CalendarApp::getAccessClassOptions(); //NEW Reminder $reminder_options = CalendarApp::getReminderOptions(); $reminder_advanced_options = CalendarApp::getAdvancedReminderOptions(); $reminder_time_options = CalendarApp::getReminderTimeOptions(); //reminder $vtodosharees = array(); $sharedwithByVtodo = \OCP\Share::getItemShared(CalendarApp::SHARETODO, CalendarApp::SHARETODOPREFIX . $id); if (is_array($sharedwithByVtodo)) { foreach ($sharedwithByVtodo as $share) { if ($share['share_type'] == \OCP\Share::SHARE_TYPE_USER || $share['share_type'] == \OCP\Share::SHARE_TYPE_GROUP) { $vtodosharees[] = $share; } } } $percentCompleted = '0'; if ($vtodo->{'PERCENT-COMPLETE'}) { $percentCompleted = $vtodo->getAsString('PERCENT-COMPLETE'); } $aAlarm = $this->setAlarmTask($vtodo, $reminder_options); $params = ['id' => $id, 'calId' => $calId, 'orgId' => $orgId, 'permissions' => $permissions, 'priorityOptions' => $priorityOptions, 'access_class_options' => $access_class_options, 'calendar_options' => $calendar_options, 'calendar' => $calId, 'mymode' => $myTaskMode, 'mycal' => $myTaskCal, 'bShareCalId' => $bShareCalId, 'subtaskids' => $subTaskIds, 'cal_permissions' => $checkShareArray, 'accessclass' => $accessclass, 'reminder_options' => $reminder_options, 'reminder_rules' => array_key_exists('triggerRequest', $aAlarm) ? $aAlarm['triggerRequest'] : '', 'reminder' => $aAlarm['action'], 'reminder_time_options' => $reminder_time_options, 'reminder_advanced_options' => $reminder_advanced_options, 'reminder_advanced' => 'DISPLAY', 'remindertimeselect' => array_key_exists('reminder_time_select', $aAlarm) ? $aAlarm['reminder_time_select'] : '', 'remindertimeinput' => array_key_exists('reminder_time_input', $aAlarm) ? $aAlarm['reminder_time_input'] : '', 'reminderemailinput' => array_key_exists('email', $aAlarm) ? $aAlarm['email'] : '', 'reminderdate' => array_key_exists('reminderdate', $aAlarm) ? $aAlarm['reminderdate'] : '', 'remindertime' => array_key_exists('remindertime', $aAlarm) ? $aAlarm['remindertime'] : '', 'link' => $link, 'priority' => $priority, 'TaskDate' => $TaskDate, 'TaskTime' => $TaskTime, 'TaskStartDate' => $TaskStartDate, 'TaskStartTime' => $TaskStartTime, 'vtodosharees' => $vtodosharees, 'percentCompleted' => $percentCompleted, 'sharetodo' => CalendarApp::SHARETODO, 'sharetodoprefix' => CalendarApp::SHARETODOPREFIX, 'vtodo' => $vtodo]; $response = new TemplateResponse($this->appName, 'event.edit', $params, ''); return $response; }