diff --git a/ChangeLog b/ChangeLog index 9ef94919c..6ebfc2314 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-08-21 Wolfgang Sourdeau + * OpenChange/MAPIStoreFolder.m (-getPidTagAccessLevel) + (-getPidTagRights, -getPidTagAccessControlListData): fixed + methods. + * OpenChange/MAPIStoreMessage.m (-getPidTagDeleteAfterSubmit:inMemCtx:): moved from MAPIStoreMailMessage. diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 50b357236..8cb57b5ac 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -25,6 +25,7 @@ #import #import #import +#import #import #import #import @@ -46,6 +47,7 @@ #import "MAPIStoreSamDBUtils.h" #import "MAPIStoreTypes.h" #import "MAPIStoreUserContext.h" +#import "NSData+MAPIStore.h" #import "NSDate+MAPIStore.h" #import "NSString+MAPIStore.h" #import "NSObject+MAPIStore.h" @@ -1315,7 +1317,51 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (int) getPidTagAccessLevel: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - *data = MAPILongValue (memCtx, 0x01); + SOGoUser *ownerUser; + BOOL userIsOwner; + + ownerUser = [[self userContext] sogoUser]; + + userIsOwner = [[context activeUser] isEqual: ownerUser]; + + *data = MAPILongValue (memCtx, (userIsOwner) ? 0x01 : 0x00); + + return MAPISTORE_SUCCESS; +} + +- (int) getPidTagRights: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + uint32_t rights = 0; + SOGoUser *ownerUser; + BOOL userIsOwner; + + ownerUser = [[self userContext] sogoUser]; + + userIsOwner = [[context activeUser] isEqual: ownerUser]; + if (userIsOwner || [self subscriberCanReadMessages]) + rights |= RightsReadItems; + if (userIsOwner || [self subscriberCanCreateMessages]) + rights |= RightsCreateItems; + if (userIsOwner || [self subscriberCanModifyMessages]) + rights |= RightsEditOwn | RightsEditAll; + if (userIsOwner || [self subscriberCanDeleteMessages]) + rights |= RightsDeleteOwn | RightsDeleteAll; + if ((userIsOwner || [self subscriberCanCreateSubFolders]) + && [self supportsSubFolders]) + rights |= RightsCreateSubfolders; + if (userIsOwner) + rights |= RightsFolderOwner | RightsFolderContact; + + *data = MAPILongValue (memCtx, rights); + + return MAPISTORE_SUCCESS; +} + +- (int) getPidTagAccessControlListData: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + *data = [[NSData data] asBinaryInMemCtx: memCtx]; return MAPISTORE_SUCCESS; }