Kalenderupdate
* Externe Teilnehmer komplette Terminbehandlung ohne Microsoft + als Teilnehmer bei Kalenderterminen
This commit is contained in:
@@ -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':
|
||||
|
||||
Reference in New Issue
Block a user