diff --git a/ChangeLog b/ChangeLog index bdf6c4779..c7ade139a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-08-08 Wolfgang Sourdeau + * OpenChange/MAPIStoreCalendarMessage.m (-save): generate a + "nameInContainer" for the new object iif it is not set yet. If + set, we generate a new UID from it instead. + * OpenChange/MAPIStoreMessage.m (-saveMessage): make sure that the PidTagChangeKey and PidTagChangeNumber props are no longer set in the properties dict after the save occurred. diff --git a/OpenChange/MAPIStoreCalendarMessage.m b/OpenChange/MAPIStoreCalendarMessage.m index fddadedf9..7900135f1 100644 --- a/OpenChange/MAPIStoreCalendarMessage.m +++ b/OpenChange/MAPIStoreCalendarMessage.m @@ -445,10 +445,11 @@ { // iCalCalendar *vCalendar; // NSCalendarDate *now; - NSString *uid; + NSString *uid, *nameInContainer; // iCalEvent *newEvent; // iCalPerson *userPerson; SOGoUser *activeUser; + NSRange rangeOfDot; if (isNew) { @@ -463,10 +464,27 @@ [self _fixupAppointmentObjectWithUID: uid]; } else - uid = [SOGoObject globallyUniqueObjectId]; + { + /* We create a UID from the nameInContainer, or the reverse if the + latter is already set... */ + nameInContainer = [sogoObject nameInContainer]; + if (nameInContainer) + { + rangeOfDot = [nameInContainer rangeOfString: @"." + options: NSBackwardsSearch]; + if (rangeOfDot.location == NSNotFound) + uid = nameInContainer; + else + uid = [nameInContainer substringToIndex: rangeOfDot.location]; + } + else + { + uid = [SOGoObject globallyUniqueObjectId]; + nameInContainer = [NSString stringWithFormat: @"%@.ics", uid]; + [sogoObject setNameInContainer: nameInContainer]; + } + } [masterEvent setUid: uid]; - [sogoObject setNameInContainer: - [NSString stringWithFormat: @"%@.ics", uid]]; } // [self logWithFormat: @"-save, event props:"];