diff --git a/ChangeLog b/ChangeLog index aa69a75d0..f364fab97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-09-27 Wolfgang Sourdeau + * OpenChange/MAPIStoreFSMessage.m (-getPrChangeKey:inMemCtx:): + first return the value stored in the plist, if present. Otherwise + fallback to the method making use of objectVersion. + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): added the "target_change_keys" parameter. diff --git a/OpenChange/MAPIStoreFSMessage.m b/OpenChange/MAPIStoreFSMessage.m index 4a915d926..b3273350f 100644 --- a/OpenChange/MAPIStoreFSMessage.m +++ b/OpenChange/MAPIStoreFSMessage.m @@ -25,10 +25,12 @@ #import #import #import +#import #import "MAPIStoreContext.h" #import "MAPIStorePropertySelectors.h" #import "MAPIStoreTypes.h" +#import "NSData+MAPIStore.h" #import "NSObject+MAPIStore.h" #import "NSString+MAPIStore.h" #import "SOGoMAPIFSMessage.h" @@ -127,6 +129,24 @@ Class NSNumberK; return MAPISTORE_SUCCESS; } +- (int) getPrChangeKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +{ + NSData *changeKey; + int rc; + + changeKey = [[sogoObject properties] + objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; + if (changeKey) + { + *data = [changeKey asBinaryInMemCtx: memCtx]; + rc = MAPISTORE_SUCCESS; + } + else + rc = [super getPrChangeKey: data inMemCtx: memCtx]; + + return rc; +} + - (int) getAvailableProperties: (struct SPropTagArray **) propertiesP inMemCtx: (TALLOC_CTX *) memCtx { @@ -206,6 +226,9 @@ Class NSNumberK; newVersion = exchange_globcnt ([[self context] getNewChangeNumber] >> 16); [newProperties setObject: [NSNumber numberWithUnsignedLongLong: newVersion] forKey: @"version"]; + + [self logWithFormat: @"%d props in dict", [newProperties count]]; + [sogoObject appendProperties: newProperties]; [sogoObject save]; [self resetNewProperties];