Kalenderupdate

* Externe Teilnehmer komplette Terminbehandlung ohne Microsoft + als Teilnehmer bei Kalenderterminen
This commit is contained in:
Daniel Spitzer
2025-10-06 22:37:41 +02:00
parent 404dd219e2
commit 2e39bc0ff5
3 changed files with 701 additions and 105 deletions

View File

@@ -81,11 +81,8 @@ class CalendarModel
public static function convertToSummertime($timestamp)
{
// Create a DateTime object from the Unix timestamp
$date = new DateTime();
$date->setTimestamp($timestamp);
// Set the timezone to Europe/Berlin
$date->setTimezone(new DateTimeZone('Europe/Berlin'));
if ($date->format('I') == 1) {
$cest = 7200;
@@ -93,7 +90,6 @@ class CalendarModel
$cest = 3600;
}
$unixtimestamp = $date->getTimestamp() + $cest;
// Format the date and time
return date('Y-m-d H:i:s', $unixtimestamp);
}
@@ -111,7 +107,6 @@ class CalendarModel
'\u00e9' => 'é',
'\u00e0' => 'à',
'\u00f3' => 'ó',
// Weitere Unicode-Zuordnungen können hier hinzugefügt werden
];
foreach ($unicode_map as $unicode => $char) {
@@ -682,6 +677,10 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$busy = ($r->busy);
$users = ($r->users);
$attendees = ($r->attendees);
$attendeesOriginal = $attendees;
if (is_string($attendees)) {
$attendees = json_decode($attendees, true);
}
$privateflag = ($r->privateflag);
foreach ($users as $key => $value) {
$user_id = $value;
@@ -816,26 +815,339 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$db->insert("cal_events_attachments", $data);
$db->delete("tmp_cal_events_attachments", "id = '" . $tmpid . "'");
}
}
$currentBg = $db->select("cal_events", "background", "id = '" . $id . "' LIMIT 1");
if ($db->num_rows($currentBg)) {
$bgData = $db->fetch_array($currentBg);
if ($bgData['background']=='EBF1E2')
{
$pupdateArray['background'] = "EBF1E3";
} else
{
$pupdateArray['background'] = "EBF1E2";
}
$db->update("cal_events", $pupdateArray , "id = '" . $id . "'");
}
$updateArray['attachments'] = $attachments;
$updateArray['end_time'] = $originalend;
}
if ($attendees)
$updateArray['attendees'] = $attendees;
$updateArray['attendees'] = $attendeesOriginal;
$json_data = json_encode($updateArray);
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $microsoft_id;
$data['data'] = $json_data;
$data['type'] = 'u';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
if (!empty($microsoft_id) && !empty($microsoft_user_id)) {
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $microsoft_id;
$data['data'] = $json_data;
$data['type'] = 'u';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
$db->insert("TheTool_CalendarQueue", $data);
}
$resMain = $db->select("cal_events", 'linked_event_uid,is_organizer', "id = '" . $id . "' LIMIT 1");
if ($db->num_rows($resMain)) {
$mainEvent = $db->fetch_object($resMain);
if ($mainEvent->is_organizer == 1 && !empty($mainEvent->linked_event_uid)) {
$sqlLinked = "SELECT ce.id, ce.calendar_id, cc.ms_user_id microsoft_id
FROM cal_events ce
LEFT JOIN cal_calendars cc ON ce.calendar_id = cc.id
WHERE ce.linked_event_uid = '" . $mainEvent->linked_event_uid . "'
AND ce.id != '" . $id . "'
AND ce.is_organizer = 0";
$resLinked = $db->query($sqlLinked);
while ($linkedEvent = $db->fetch_object($resLinked)) {
if (empty($linkedEvent->microsoft_id)) {
$linkedUpdateArray = array();
if (isset($updateArray['start_time']))
$linkedUpdateArray['start_time'] = $updateArray['start_time'];
if (isset($updateArray['end_time']))
$linkedUpdateArray['end_time'] = $updateArray['end_time'];
if (isset($updateArray['name']))
$linkedUpdateArray['name'] = $updateArray['name'];
if (isset($updateArray['description']))
$linkedUpdateArray['description'] = $updateArray['description'];
if (isset($updateArray['location']))
$linkedUpdateArray['location'] = $updateArray['location'];
if (isset($updateArray['all_day_event']))
$linkedUpdateArray['all_day_event'] = $updateArray['all_day_event'];
if (isset($updateArray['private']))
$linkedUpdateArray['private'] = $updateArray['private'];
if (isset($updateArray['reminder']))
$linkedUpdateArray['reminder'] = $updateArray['reminder'];
if (isset($updateArray['busy']))
$linkedUpdateArray['busy'] = 2;
if (isset($updateArray['event_type']))
$linkedUpdateArray['event_type'] = $updateArray['event_type'];
if (isset($updateArray['categories']))
$linkedUpdateArray['categories'] = $updateArray['categories'];
if (isset($updateArray['customer']))
$linkedUpdateArray['customer'] = $updateArray['customer'];
if (isset($updateArray['customer_info']))
$linkedUpdateArray['customer_info'] = $updateArray['customer_info'];
if (isset($updateArray['customer_info_send']))
$linkedUpdateArray['customer_info_send'] = $updateArray['customer_info_send'];
if (isset($updateArray['customer_info_reminder']))
$linkedUpdateArray['customer_info_reminder'] = $updateArray['customer_info_reminder'];
if ($attendees) {
$attendeesForLinkedEvent = array();
$attendeesForLinkedEvent['required'] = array();
$organizerCalendar = self::search(array("go_calendar_id" => $user_id));
if ($organizerCalendar && count($organizerCalendar) > 0) {
$orgName = '';
$orgEmail = '';
if ($organizerCalendar[0]->user_id) {
$orgName = $organizerCalendar[0]->user->name;
$orgEmail = $organizerCalendar[0]->user->email;
} elseif ($organizerCalendar[0]->calendar_name) {
$orgName = $organizerCalendar[0]->calendar_name;
$orgEmail = $organizerCalendar[0]->calendar_email ?: '';
}
$attendeesForLinkedEvent['required'][] = array(
'name' => $orgName,
'email' => $orgEmail,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
foreach ($attendees as $att) {
if (is_numeric($att) && intval($att) != $linkedEvent->calendar_id) {
$attCal = self::search(array("go_calendar_id" => intval($att)));
if ($attCal && count($attCal) > 0) {
$attName = '';
$attEmail = '';
if ($attCal[0]->user_id) {
$attName = $attCal[0]->user->name;
$attEmail = $attCal[0]->user->email;
} elseif ($attCal[0]->calendar_name) {
$attName = $attCal[0]->calendar_name;
$attEmail = $attCal[0]->calendar_email ?: '';
}
$attendeesForLinkedEvent['required'][] = array(
'name' => $attName,
'email' => $attEmail,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
} elseif (!is_numeric($att)) {
$attendeesForLinkedEvent['required'][] = array(
'name' => $att,
'email' => $att,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
}
$linkedUpdateArray['attendees'] = json_encode($attendeesForLinkedEvent);
}
$linkedUpdateArray['mtime'] = time();
$linkedUpdateArray['mname'] = $me->name;
if (!empty($linkedUpdateArray)) {
usleep(200000);
$db->update("cal_events", $linkedUpdateArray, "id = '" . $linkedEvent->id . "'");
}
}
}
if ($attendees) {
$currentAttendeeCalendarIds = array();
$sqlLinkedForAttendees = "SELECT ce.id, ce.calendar_id, cc.ms_user_id microsoft_id
FROM cal_events ce
LEFT JOIN cal_calendars cc ON ce.calendar_id = cc.id
WHERE ce.linked_event_uid = '" . $mainEvent->linked_event_uid . "'
AND ce.id != '" . $id . "'
AND ce.is_organizer = 0";
$resCurrentAttendeesQuery = $db->query($sqlLinkedForAttendees);
while ($currAtt = $db->fetch_object($resCurrentAttendeesQuery)) {
if (empty($currAtt->microsoft_id)) {
$currentAttendeeCalendarIds[] = $currAtt->calendar_id;
}
}
foreach ($attendees as $newAttendee) {
$newAttendeeCalId = null;
if (is_numeric($newAttendee) && !filter_var($newAttendee, FILTER_VALIDATE_EMAIL)) {
$newAttendeeCalId = intval($newAttendee);
} else {
$dbCheckEmail = FronkDB::singleton();
$resCheckEmail = $dbCheckEmail->query("SELECT go_calendar_id FROM Calendar WHERE calendar_email = '" . $newAttendee . "' LIMIT 1");
if ($dbCheckEmail->num_rows($resCheckEmail)) {
$emailCalData = $dbCheckEmail->fetch_object($resCheckEmail);
$newAttendeeCalId = intval($emailCalData->go_calendar_id);
}
}
if ($newAttendeeCalId) {
if (!in_array($newAttendeeCalId, $currentAttendeeCalendarIds)) {
$newAttCal = self::search(array("go_calendar_id" => $newAttendeeCalId));
if (count($newAttCal) > 0) {
$resCheckNewAttMs = $db->select("cal_calendars", "ms_user_id", "id = '" . $newAttendeeCalId . "' LIMIT 1");
$hasMsId = false;
if ($db->num_rows($resCheckNewAttMs)) {
$newAttMsData = $db->fetch_object($resCheckNewAttMs);
$hasMsId = !empty($newAttMsData->ms_user_id);
}
}
if ($newAttCal && count($newAttCal) > 0 && !$hasMsId) {
$organizerCalendar = self::search(array("go_calendar_id" => $user_id));
$organizerName = '';
$organizerEmail = '';
if ($organizerCalendar && count($organizerCalendar) > 0) {
if ($organizerCalendar[0]->user_id) {
$organizerName = $organizerCalendar[0]->user->name;
$organizerEmail = $organizerCalendar[0]->user->email;
} elseif ($organizerCalendar[0]->calendar_name) {
$organizerName = $organizerCalendar[0]->calendar_name;
$organizerEmail = $organizerCalendar[0]->calendar_email ?: '';
}
}
$newOrganizerJson = json_encode(array(
'name' => $organizerName,
'email' => $organizerEmail
));
$newAttendeesForEvent = array();
$newAttendeesForEvent['required'] = array();
$newAttendeesForEvent['required'][] = array(
'name' => $organizerName,
'email' => $organizerEmail,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
foreach ($attendees as $otherAtt) {
if ($otherAtt != $newAttendee) {
if (is_numeric($otherAtt) && !filter_var($otherAtt, FILTER_VALIDATE_EMAIL)) {
$otherCal = self::search(array("go_calendar_id" => intval($otherAtt)));
if ($otherCal && count($otherCal) > 0) {
$otherName = '';
$otherEmail = '';
if ($otherCal[0]->user_id) {
$otherName = $otherCal[0]->user->name;
$otherEmail = $otherCal[0]->user->email;
} elseif ($otherCal[0]->calendar_name) {
$otherName = $otherCal[0]->calendar_name;
$otherEmail = $otherCal[0]->calendar_email ?: '';
}
$newAttendeesForEvent['required'][] = array(
'name' => $otherName,
'email' => $otherEmail,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
} else {
$newAttendeesForEvent['required'][] = array(
'name' => $otherAtt,
'email' => $otherAtt,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
}
}
$newAttendeesJson = json_encode($newAttendeesForEvent);
$newAttendeeDataarray = array(
"start_time" => $updateArray['start_time'],
'end_time' => $updateArray['end_time'],
'name' => $updateArray['name'],
'description' => $updateArray['description'] ?? '',
'location' => $updateArray['location'] ?? '',
'calendar_id' => $newAttendeeCalId,
'uuid' => "a5eb79b3-fca7-5378-a09e-" . rand(100000000000, 999999999999),
'user_id' => 1,
'timezone' => 'Europe/Amsterdam',
'all_day_event' => $updateArray['all_day_event'] ?? 0,
'repeat_end_time' => 0,
'reminder' => $updateArray['reminder'] ?? NULL,
'ctime' => time(),
'cname' => $me->name,
'mtime' => time(),
'mname' => $me->name,
'busy' => 2,
'status' => 'CONFIRMED',
'resource_event_id' => 0,
'private' => $updateArray['private'] ?? 0,
'rrule' => '',
'background' => 'EBF1E2',
'files_folder_id' => 0,
'read_only' => 0,
'categories' => $updateArray['categories'] ?? NULL,
'exception_for_event_id' => 0,
'recurrence_id' => 0,
'is_organizer' => 0,
'organizer' => $newOrganizerJson,
'attendees' => $newAttendeesJson,
'linked_event_uid' => $mainEvent->linked_event_uid,
'event_type' => $updateArray['event_type'] ?? 1,
'customer' => $updateArray['customer'] ?? NULL,
'customer_info' => $updateArray['customer_info'] ?? NULL,
'customer_info_send' => $updateArray['customer_info_send'] ?? NULL,
'customer_info_reminder' => $updateArray['customer_info_reminder'] ?? 0
);
usleep(200000);
$db->insert("cal_events", $newAttendeeDataarray);
}
}
}
}
$newAttendeeCalendarIds = array();
foreach ($attendees as $att) {
if (is_numeric($att)) {
$newAttendeeCalendarIds[] = intval($att);
} else {
$dbCheck = FronkDB::singleton();
$resEmailCheck = $dbCheck->query("SELECT go_calendar_id FROM Calendar WHERE calendar_email = '" . $att . "' LIMIT 1");
if ($dbCheck->num_rows($resEmailCheck)) {
$emailData = $dbCheck->fetch_object($resEmailCheck);
$resCheckMs = $db->select("cal_calendars", "ms_user_id", "id = '" . $emailData->go_calendar_id . "' LIMIT 1");
if ($db->num_rows($resCheckMs)) {
$msData = $db->fetch_object($resCheckMs);
$emailHasMsId = !empty($msData->ms_user_id);
if (!$emailHasMsId) {
$newAttendeeCalendarIds[] = intval($emailData->go_calendar_id);
}
} else {
}
}
}
}
error_log("DEBUG: newAttendeeCalendarIds nach Email-Check: " . print_r($newAttendeeCalendarIds, true));
foreach ($currentAttendeeCalendarIds as $oldCalId) {
if (!in_array($oldCalId, $newAttendeeCalendarIds)) {
$db->delete("cal_events", "linked_event_uid = '" . $mainEvent->linked_event_uid . "' AND calendar_id = '" . $oldCalId . "' AND is_organizer = 0");
} else {
}
}
}
}
}
}
public static function updateCalendarEventState($r, $me)
@@ -875,18 +1187,35 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$db->update("cal_events", $updateArray, "id = '" . $id . "'");
$json_data = json_encode($updateArray);
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $microsoft_id;
$data['data'] = $json_data;
$data['type'] = $process;
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
if (!empty($microsoft_id) && !empty($microsoft_user_id)) {
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $microsoft_id;
$data['data'] = $json_data;
$data['type'] = $process;
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
$db->insert("TheTool_CalendarQueue", $data);
}
if ($eventAction == "decline") {
$resCheckDecline = $db->select("cal_events", "linked_event_uid, calendar_id", "id = '" . $id . "' LIMIT 1");
if ($db->num_rows($resCheckDecline)) {
$declineEvent = $db->fetch_object($resCheckDecline);
$resCheckDeclineMs = $db->select("cal_calendars", "ms_user_id", "id = '" . $declineEvent->calendar_id . "' LIMIT 1");
if ($db->num_rows($resCheckDeclineMs)) {
$declineMsData = $db->fetch_object($resCheckDeclineMs);
$declineHasMsId = !empty($declineMsData->ms_user_id);
if (!$declineHasMsId && !empty($declineEvent->linked_event_uid)) {
error_log("DEBUG: Teilnehmer ohne MS-ID lehnt ab - Lösche Event ID: " . $id);
$db->delete("cal_events", "id = '" . $id . "' AND linked_event_uid = '" . $declineEvent->linked_event_uid . "' AND is_organizer = 0");
}
}
}
}
}
public static function insertCalendarEvent($r, $me, $rrules = "")
@@ -963,6 +1292,9 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$db->insert("cal_events", $dataarray);
$event_id = $dataarray['uuid'];
$shared_linked_uid = 'LINKED-' . strtoupper(uniqid()) . '-' . time();
$db->update("cal_events", array('linked_event_uid' => $shared_linked_uid), "uuid = '" . $event_id . "'");
if ($newkey) {
$res = $db->select("tmp_cal_events_attachments", "id,name,contentType,content,size,create_timestamp,edit_timestamp", "1=1 AND newkey='" . $newkey . "' ORDER BY id");
if ($db->num_rows($res)) {
@@ -986,17 +1318,149 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$dataarray['end_time'] = $originalend;
$json_data = json_encode($dataarray);
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['event_id'] = $event_id;
$data['data'] = $json_data;
$data['type'] = 'c';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
if (!empty($microsoft_user_id)) {
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['event_id'] = $event_id;
$data['data'] = $json_data;
$data['type'] = 'c';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
}
if ($attendees) {
$organizerCalendar = self::search(array("go_calendar_id" => $user_id));
$organizerName = '';
$organizerEmail = '';
if ($organizerCalendar && count($organizerCalendar) > 0) {
if ($organizerCalendar[0]->user_id) {
$organizerName = $organizerCalendar[0]->user->name;
$organizerEmail = $organizerCalendar[0]->user->email;
} elseif ($organizerCalendar[0]->calendar_name) {
$organizerName = $organizerCalendar[0]->calendar_name;
$organizerEmail = $organizerCalendar[0]->calendar_email ?: '';
}
}
$organizerJson = json_encode(array(
'name' => $organizerName,
'email' => $organizerEmail
));
foreach ($attendees as $attendeeValue) {
if (is_numeric($attendeeValue) && !filter_var($attendeeValue, FILTER_VALIDATE_EMAIL)) {
$attendeeCalendarId = intval($attendeeValue);
$attendeeCalendar = self::search(array("go_calendar_id" => $attendeeCalendarId));
if ($attendeeCalendar && count($attendeeCalendar) > 0) {
$resCheckAttMs = $db->select("cal_calendars", "ms_user_id", "id = '" . $attendeeCalendarId . "' LIMIT 1");
$attendeeHasMicrosoftId = false;
if ($db->num_rows($resCheckAttMs)) {
$attMsData = $db->fetch_object($resCheckAttMs);
$attendeeHasMicrosoftId = !empty($attMsData->ms_user_id);
}
if (!$attendeeHasMicrosoftId) {
$attendeeName = '';
$attendeeEmail = '';
if ($attendeeCalendar[0]->user_id) {
$attendeeName = $attendeeCalendar[0]->user->name;
$attendeeEmail = $attendeeCalendar[0]->user->email;
} elseif ($attendeeCalendar[0]->calendar_name) {
$attendeeName = $attendeeCalendar[0]->calendar_name;
$attendeeEmail = $attendeeCalendar[0]->calendar_email ?: '';
}
$attendeesForEvent = array();
$attendeesForEvent['required'] = array();
$attendeesForEvent['required'][] = array(
'name' => $organizerName,
'email' => $organizerEmail,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
foreach ($attendees as $otherAttendee) {
if ($otherAttendee != $attendeeValue) {
if (is_numeric($otherAttendee) && !filter_var($otherAttendee, FILTER_VALIDATE_EMAIL)) {
$otherCalendar = self::search(array("go_calendar_id" => intval($otherAttendee)));
if ($otherCalendar && count($otherCalendar) > 0) {
$otherName = '';
$otherEmail = '';
if ($otherCalendar[0]->user_id) {
$otherName = $otherCalendar[0]->user->name;
$otherEmail = $otherCalendar[0]->user->email;
} elseif ($otherCalendar[0]->calendar_name) {
$otherName = $otherCalendar[0]->calendar_name;
$otherEmail = $otherCalendar[0]->calendar_email ?: '';
}
$attendeesForEvent['required'][] = array(
'name' => $otherName,
'email' => $otherEmail,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
} else {
$attendeesForEvent['required'][] = array(
'name' => $otherAttendee,
'email' => $otherAttendee,
'response' => 'none',
'time' => '0001-01-01 00:00:00.000000'
);
}
}
}
$attendeesJson = json_encode($attendeesForEvent);
$attendeeDataarray = array(
"start_time" => $start,
'end_time' => $end,
'name' => $title,
'description' => $description,
'location' => $location,
'calendar_id' => $attendeeCalendarId,
'uuid' => "a5eb79b3-fca7-5378-a09e-" . rand(100000000000, 999999999999),
'user_id' => 1,
'timezone' => 'Europe/Amsterdam',
'all_day_event' => $allday,
'repeat_end_time' => 0,
'reminder' => $reminder,
'ctime' => time(),
'cname' => $me->name,
'mtime' => time(),
'mname' => $me->name,
'busy' => 2,
'status' => 'CONFIRMED',
'resource_event_id' => 0,
'private' => $privateflag,
'rrule' => '',
'background' => 'EBF1E2',
'files_folder_id' => 0,
'read_only' => 0,
'categories' => $categories,
'exception_for_event_id' => 0,
'recurrence_id' => 0,
'is_organizer' => 0,
'organizer' => $organizerJson,
'attendees' => $attendeesJson,
'linked_event_uid' => $shared_linked_uid,
'event_type' => $type,
'customer' => $customer,
'customer_info' => $customer_info,
'customer_info_send' => $customer_info_send,
'customer_info_reminder' => $customer_info_reminder_check
);
$db->insert("cal_events", $attendeeDataarray);
}
}
}
}
}
if ($r->delete_old_entry) {
CalendarModel::deleteCalendarOldEvent($r->delete_old_entry);
die();
@@ -1046,16 +1510,18 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
if ($db->num_rows($res)) {
$result = $db->fetch_object($res);
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $result->microsoft_id;
$data['type'] = 'd';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
if (!empty($result->microsoft_id) && !empty($microsoft_user_id)) {
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $result->microsoft_id;
$data['type'] = 'd';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
}
}
$db->delete("cal_events", "id = '" . $id . "'");
die();
@@ -1077,16 +1543,18 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$resultcal = $db->fetch_object($rescal);
$microsoft_user_id = $resultcal->ms_user_id;
}
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $resultical->microsoft_id;
$data['type'] = 'd';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
if (!empty($microsoft_user_id)) {
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $resultical->microsoft_id;
$data['type'] = 'd';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
}
$db->delete("cal_events", "id = '" . $resical->id . "'");
}
}
@@ -1142,17 +1610,20 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$updateArray['canceld'] = 1;
$db->update("cal_events", $updateArray, "id = '" . $id . "'");
$json_data = json_encode($updateArray);
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $microsoft_id;
$data['data'] = $json_data;
$data['type'] = 'u';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
if (!empty($microsoft_id) && !empty($microsoft_user_id)) {
$data = [];
$data['ms_user_id'] = $microsoft_user_id;
$data['ms_event_id'] = $microsoft_id;
$data['data'] = $json_data;
$data['type'] = 'u';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
}
$res = $db->select("cal_events", 'id,microsoft_id,name,microsoft_ical_uid,start_time,end_time,calendar_id', "id != '" . $id . "' AND microsoft_ical_uid = '" . $result->microsoft_ical_uid . "' ");
while ($row = $db->fetch_object($res)) {
$updateArray = [];
@@ -1173,17 +1644,19 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$rescal = $db->select("cal_calendars", "id,ms_user_id", "id = '" . $row->calendar_id . "' LIMIT 1");
$resultcal = $db->fetch_object($rescal);
$data = [];
$data['ms_user_id'] = $resultcal->ms_user_id;
$data['ms_event_id'] = $row->microsoft_id;
$data['data'] = $json_data;
$data['type'] = 'u';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
if (!empty($row->microsoft_id) && !empty($resultcal->ms_user_id)) {
$data = [];
$data['ms_user_id'] = $resultcal->ms_user_id;
$data['ms_event_id'] = $row->microsoft_id;
$data['data'] = $json_data;
$data['type'] = 'u';
$data['status'] = 'p';
$data['edit'] = time();
$data['create'] = time();
$data['edit_by'] = 89;
$data['create_by'] = 89;
$db->insert("TheTool_CalendarQueue", $data);
}
}
}
@@ -1234,12 +1707,10 @@ WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourda
$data['rrule_frequency'] = 'DAILY';
}
// Falls benötigt, kann der Start-Datum-Wert übernommen werden.
if (!empty($graph['range']['startDate'])) {
$data['startDate'] = $graph['range']['startDate'];
}
// Wiederherstellen des Endbereichs
if (!empty($graph['range']['type'])) {
switch ($graph['range']['type']) {
case 'endDate':