* Mail/Calendar: fix applying a participant reply as organizer overwrote event with data send by the participant (not just his status)

This commit is contained in:
ralf 2022-09-16 11:22:26 +02:00
parent 5dcc670ac0
commit fb8f54ec02
3 changed files with 23 additions and 1 deletions

View File

@ -2198,6 +2198,25 @@ class calendar_uiforms extends calendar_ui
if ($event['ical_sender_uid'] && $this->bo->check_status_perms($event['ical_sender_uid'], $existing_event))
{
$existing_status = $existing_event['participants'][$event['ical_sender_uid']];
// check if email matches, in case we have now something like "Name <email>"
if (!isset($existing_status) && $event['ical_sender_uid'][0] === 'e')
{
foreach((array)$existing_event['participant_types']['e'] as $email => $status)
{
if (preg_match('/<(.*)>$/', $email, $matches)) $email = $matches[1];
if (strtolower($email) === strtolower($participant))
{
$existing_status = $status;
break;
}
}
}
// warn user about party-crashers (non-participants sending a reply)
if (!isset($existing_status))
{
if (!empty($event['sender_warning'])) $event['sender_warning'] .= "\n";
$event['sender_warning'] .= lang('Replying "%1" is NOT a participant of the event! Only continue if you want to add as new participant.', $participant);
}
calendar_so::split_status($existing_status, $quantity, $role);
if ($existing_status != $event['ical_sender_status'])
{
@ -2308,7 +2327,8 @@ class calendar_uiforms extends calendar_ui
$msg = [];
// do we need to update the event itself (user-status is reset to old in event_changed!)
if ($button !== 'delete' && !empty($event['old']) && self::event_changed($event, $event['old']))
if (strtolower($event['ics_method']) !== 'reply' && // do NOT apply (all) data from participants replying
$button !== 'delete' && !empty($event['old']) && self::event_changed($event, $event['old']))
{
// check if we are allowed to update the event
if($this->bo->check_perms(Acl::EDIT, $event['old']) || $event['extern_organizer'])

View File

@ -485,6 +485,7 @@ repetition calendar de Wiederholung
repetitiondetails (or empty) calendar de Details der Wiederholung (oder leer)
replacements for inserting events into documents calendar de Platzhalter für das Einfügen von Terminen in Dokumente
reply to meeting request calendar de Antwort auf Terminanfrage
replying "%1" is not a participant of the event! only continue if you want to add as new participant. calendar de Der antwortende "%1" ist kein Teilnehmer des Termins! Nur weiter machen, wenn Sie ihn als neuen Teilnehmer hinzufügen wollen.
requested calendar de Erforderlich
requested date %1 outside allowed range of %2 days: recurring events obmitted! calendar de Gewünschtes Datum %1 außerhalb des erlauben Bereiches von %2 Tagen: wiederholende Termine ausgelassen!
requested meeting is in the past! calendar de Termin, zu dem eingeladen wird, ist in der Vergangenheit!

View File

@ -485,6 +485,7 @@ repetition calendar en Repetition
repetitiondetails (or empty) calendar en Repetition details (or empty)
replacements for inserting events into documents calendar en Replacements for inserting events into documents
reply to meeting request calendar en Reply to meeting request
replying "%1" is not a participant of the event! only continue if you want to add as new participant. calendar en Replying "%1" is NOT a participant of the event! Only continue if you want to add as new participant.
requested calendar en Requested
requested date %1 outside allowed range of %2 days: recurring events obmitted! calendar en Requested date %1 outside allowed range of %2 days: recurring events obmitted!
requested meeting is in the past! calendar en Requested meeting is in the past!