oc-calendar: Improve check for appointment updates

The UID was being used to check if  the changes in an appointment had been made by
its organiser. In this case, the UID is the user name, without taking the domain into account.
The `owner` variable, however, is a full email address, so the comparison was never successful. This
caused the update notification mail not to be sent.
This commit is contained in:
Juan Vallés 2015-05-28 14:47:07 +02:00
parent afed233131
commit 1ec53a063c

View file

@ -2106,32 +2106,23 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
// //
if ([[newEvent attendees] count] || [[oldEvent attendees] count]) if ([[newEvent attendees] count] || [[oldEvent attendees] count])
{ {
NSString *uid; BOOL userIsOrganizer;
// newEvent might be nil here, if we're deleting a RECURRENCE-ID with attendees // newEvent might be nil here, if we're deleting a RECURRENCE-ID with attendees
// If that's the case, we use the oldEvent for now just to obtain the organizer // If that's the case, we use the oldEvent to obtain the organizer
// and we'll swap it back to nil once we're done. if (newEvent)
if (!newEvent) userIsOrganizer = [newEvent userIsOrganizer: ownerUser];
newEvent = oldEvent; else
userIsOrganizer = [oldEvent userIsOrganizer: ownerUser];
// We fetch the organizer's uid. Sometimes, the recurrence-id will
// have it, sometimes not. If it doesn't, we fetch it from the master event.
uid = [[newEvent organizer] uid];
if (!uid && !recurrenceId)
uid = [[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid];
// With Thunderbird 10, if you create a recurring event with an exception // With Thunderbird 10, if you create a recurring event with an exception
// occurence, and invite someone, the PUT will have the organizer in the // occurence, and invite someone, the PUT will have the organizer in the
// recurrence-id and not in the master event. We must fix this, otherwise // recurrence-id and not in the master event. We must fix this, otherwise
// SOGo will break. // SOGo will break.
if (!recurrenceId && ![[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid]) if (!recurrenceId && ![[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid])
[[[[newEvent parent] events] objectAtIndex: 0] setOrganizer: [newEvent organizer]]; [[[[newEvent parent] events] objectAtIndex: 0] setOrganizer: [newEvent organizer]];
if (newEvent == oldEvent) if (userIsOrganizer)
newEvent = nil;
if (uid && [uid caseInsensitiveCompare: owner] == NSOrderedSame)
{ {
// A RECCURENCE-ID was removed // A RECCURENCE-ID was removed
if (!newEvent && oldEvent) if (!newEvent && oldEvent)