/** *@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; } }
/** * @brief use to create HTML emails and send them * @param $eventid The event id * @param $location The location * @param $description The description * @param $dtstart The start date * @param $dtend The end date * */ public static function sendEmails($eventid, $summary, $dtstart, $dtend, $emails) { $user = \OCP\User::getDisplayName(); $useremail = \OCP\Util::getDefaultEmailAddress('sharing-noreply'); $eventsharees = array(); $eventShareesNames = array(); //$emails = array(); //$data = App::getEventObject($eventid, true); $data = Export::export($eventid, Export::EVENT); $tmpStartDate = strtotime($dtstart); $myFile = date('Ymd', $tmpStartDate) . '.ics'; $fh = fopen(\OCP\User::getHome($user) . '/files/' . $myFile, "x+"); fwrite($fh, $data); fclose($fh); $attach['path'] = \OCP\User::getHome($user) . '/files/' . $myFile; $attach['name'] = $myFile; //$useremail = Calendar::getUsersEmails($user); //$testEmail=explode(",",$emails); //if(count($testEmail)>1) foreach ($emails as $email) { if ($email === null) { continue; } $subject = 'Termineinladung/ Calendar Invitation'; $message = '<b>' . $user . '</b> informiert Sie über das Ereignis<b> ' . \OCP\Util::sanitizeHTML($summary) . '</b> , geplant für <b>' . date('d.m.Y', $tmpStartDate) . '.</b> Um das Ereignis zum Kalender hinzuzufügen, klicken Sie auf den Link.<br><br>'; \OC_MAIL::send($email, "User", $subject, $message, $useremail, $user, $html = 1, $altbody = '', $ccaddress = '', $ccname = '', $bcc = '', $attach); } unlink(\OCP\User::getHome($user) . '/files/' . $myFile); }