From 4940c2ba488777039e54f3ad7e0d0cdb3dc9d62c Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 8 Aug 2012 19:10:28 +0000 Subject: [PATCH] Monotone-Parent: ae2f3622e019b557af4f9dd642911dec3afe7ba1 Monotone-Revision: 86fd1ace33a761145516f77910d46684fbe4f423 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-08-08T19:10:28 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ OpenChange/MAPIStoreCalendarMessage.m | 26 ++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) 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:"];