DSB-PlugIn/AddOn/Calender_Office365_User/calendar.php

102 lines
2.6 KiB
PHP

<?php
require 'OutlookCalendar.php';
$config = require 'config.php';
$email = $_GET['email'] ?? null;
if (!$email || !file_exists($config['token_storage'])) {
die("Bitte logge dich zuerst über auth.php ein.");
}
$tokens = json_decode(file_get_contents($config['token_storage']), true);
if (!isset($tokens[$email])) {
die("Kein Token für diese E-Mail gefunden.");
}
$data = $tokens[$email];
$calendar = new OutlookCalendar(
$config['client_id'],
$config['client_secret'],
$config['redirect_uri'],
$data['access_token'],
$data['refresh_token']
);
// Optional: Token auffrischen, wenn abgelaufen
if (time() > ($data['time_saved'] + $data['expires_in'] - 60)) {
$calendar->refreshAccessToken();
$tokens[$email]['access_token'] = $calendar->getAccessToken();
$tokens[$email]['refresh_token'] = $calendar->getRefreshToken();
$tokens[$email]['time_saved'] = time();
file_put_contents($config['token_storage'], json_encode($tokens, JSON_PRETTY_PRINT));
}
if (isset($_GET['update'])) {
$eventId = $_GET['eventId'] ?? null;
if (!$eventId) {
die("Bitte eventId angeben.");
}
$updateData = [
"subject" => "Geändertes Meeting via PHP",
"start" => [
"dateTime" => "2025-07-25T15:00:00",
"timeZone" => "Europe/Berlin"
],
"end" => [
"dateTime" => "2025-07-25T16:00:00",
"timeZone" => "Europe/Berlin"
]
];
$result = $calendar->updateEvent($eventId, $updateData);
header('Content-Type: application/json');
echo json_encode($result, JSON_PRETTY_PRINT);
}
// Termin löschen
if (isset($_GET['deleteEvent'])) {
$eventId = $_GET['eventId'] ?? null;
if (!$eventId) {
die("Bitte eventId angeben.");
}
$result = $calendar->deleteEvent($eventId);
header('Content-Type: application/json');
echo json_encode($result, JSON_PRETTY_PRINT);
}
// Termin erstellen
if(isset($_GET['create'])){
$event = [
"subject" => "Test-Meeting via PHP",
"start" => [
"dateTime" => "2025-06-25T10:00:00",
"timeZone" => "Europe/Berlin"
],
"end" => [
"dateTime" => "2025-06-25T11:00:00",
"timeZone" => "Europe/Berlin"
],
"body" => [
"contentType" => "HTML",
"content" => "Meeting von OutlookCalendar PHP"
]
];
$response = $calendar->createEvent($event);
echo json_encode($response, JSON_PRETTY_PRINT);
}
$events = $calendar->getEvents(); // eigene Funktion in OutlookCalendar-Klasse
header('Content-Type: application/json');
echo json_encode($events, JSON_PRETTY_PRINT);
?>