diff --git a/UI/MailPartViewers/UIxMailPartICalActions.m b/UI/MailPartViewers/UIxMailPartICalActions.m index 7a7a098c1..15596ecb1 100644 --- a/UI/MailPartViewers/UIxMailPartICalActions.m +++ b/UI/MailPartViewers/UIxMailPartICalActions.m @@ -41,6 +41,7 @@ #import #import #import +#import #import #import @@ -380,15 +381,50 @@ - (iCalPerson *) _emailParticipantWithEvent: (iCalEvent *) event { - NSString *emailFrom; - SOGoMailObject *mailObject; NGImap4EnvelopeAddress *address; + SOGoMailObject *mailObject; + NSString *emailFrom; + iCalPerson *p; mailObject = [[self clientObject] mailObject]; address = [[mailObject fromEnvelopeAddresses] objectAtIndex: 0]; emailFrom = [address baseEMail]; + p = [event findAttendeeWithEmail: emailFrom]; - return [event findAttendeeWithEmail: emailFrom]; + // We haven't found it yet, let's look in the identities + // associated to this user + if (!p) + { + SOGoUserManager *sm; + NSString *uid; + + sm = [SOGoUserManager sharedUserManager]; + uid = [sm getUIDForEmail: emailFrom]; + + if (uid) + { + NSArray *allEmails; + NSString *email; + SOGoUser *u; + int i; + + u = [SOGoUser userWithLogin: uid]; + allEmails = [u allEmails]; + for (i = 0; i < [allEmails count]; i++) + { + email = [allEmails objectAtIndex: i]; + if ([email caseInsensitiveCompare: emailFrom] == NSOrderedSame) + continue; + + p = [event findAttendeeWithEmail: email]; + + if (p) + break; + } + } + } + + return p; } - (BOOL) _updateParticipantStatusInEvent: (iCalEvent *) calendarEvent