diff --git a/ChangeLog b/ChangeLog index 9f9bee2b2..edbea570a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-11-30 Wolfgang Sourdeau + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarUserAddressSet): make sure each email address is + reported only once, we also return the user principal in the list + (for iCal). + * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): declare "calendar-query-extended", "extended-mkcol", "calendarserver-principal-property-search" as additional calendar diff --git a/SoObjects/Appointments/SOGoUserFolder+Appointments.m b/SoObjects/Appointments/SOGoUserFolder+Appointments.m index a7feb2caf..1a32b73cb 100644 --- a/SoObjects/Appointments/SOGoUserFolder+Appointments.m +++ b/SoObjects/Appointments/SOGoUserFolder+Appointments.m @@ -59,21 +59,32 @@ NSArray *tag; NSMutableArray *addresses; NSEnumerator *emails; + NSMutableDictionary *doneEmails; NSString *currentEmail; SOGoUser *ownerUser; addresses = [NSMutableArray array]; + doneEmails = [NSMutableDictionary dictionary]; ownerUser = [SOGoUser userWithLogin: owner]; emails = [[ownerUser allEmails] objectEnumerator]; while ((currentEmail = [emails nextObject])) { - tag = [NSArray arrayWithObjects: @"href", XMLNS_WEBDAV, @"D", - [NSString stringWithFormat: @"mailto:%@", currentEmail], - nil]; - [addresses addObject: tag]; + if (![doneEmails objectForKey: currentEmail]) + { + tag = [NSArray arrayWithObjects: @"href", XMLNS_WEBDAV, @"D", + [NSString stringWithFormat: @"mailto:%@", currentEmail], + nil]; + [addresses addObject: tag]; + [doneEmails setObject: [NSNull null] forKey: currentEmail]; + } } + tag = [NSArray arrayWithObjects: @"href", XMLNS_WEBDAV, @"D", + [NSString stringWithFormat: @"/SOGo/dav/%@/", nameInContainer], + nil]; + [addresses addObjectUniquely: tag]; + return addresses; }