Monotone-Parent: 22be47412187379c5790339050a32efb324de72f

Monotone-Revision: 0876527d52dfa5e4ddfcb4dee4220d4d6bd27eec

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-12-01T22:28:12
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2011-12-01 22:28:12 +00:00
parent 2c0553cdad
commit 4641b917c7
4 changed files with 26 additions and 5 deletions

View File

@ -1,5 +1,14 @@
2011-12-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/MAPIStoreFolder.m
(-openMessage:withMID:forWriting:inMemCtx:): takes a new
"forWriting:" parameter and make use of subscriberCanModifyMessage
and subscriberCanReadMessage to return a proper error code, if
needed.
* OpenChange/MAPIStoreSOGo.m (sogo_folder_open_message): added the
"write_access" parameter.
* OpenChange/MAPIStoreTasksMessage.m:
invoke component:secure: with the secure parameter set to "YES" in
all accessors that requires the iCalTask object.

View File

@ -111,9 +111,9 @@
withMID: (uint64_t) mid
isAssociated: (BOOL) isAssociated;
- (int) openMessage: (MAPIStoreMessage **) messagePtr
withMID: (uint64_t) mid
forWriting: (BOOL) readWrite
inMemCtx: (TALLOC_CTX *) memCtx;
- (int) deleteMessageWithMID: (uint64_t) mid
andFlags: (uint8_t) flags;

View File

@ -403,6 +403,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe
- (int) openMessage: (MAPIStoreMessage **) messagePtr
withMID: (uint64_t) mid
forWriting: (BOOL) readWrite
inMemCtx: (TALLOC_CTX *) memCtx;
{
NSString *messageURL;
@ -417,8 +418,15 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe
message = [self lookupMessageByURL: messageURL];
if (message)
{
*messagePtr = message;
rc = MAPISTORE_SUCCESS;
if ([[context activeUser] isEqual: [context ownerUser]]
|| (readWrite && [message subscriberCanModifyMessage])
|| (!readWrite && [message subscriberCanReadMessage]))
{
*messagePtr = message;
rc = MAPISTORE_SUCCESS;
}
else
rc = MAPISTORE_ERR_DENIED;
}
}
@ -580,6 +588,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe
memCtx = talloc_zero (NULL, TALLOC_CTX);
rc = [sourceFolder openMessage: &sourceMsg
withMID: srcMid
forWriting: NO
inMemCtx: memCtx];
if (rc != MAPISTORE_SUCCESS)
goto end;

View File

@ -359,7 +359,7 @@ sogo_folder_get_child_count(void *folder_object, uint8_t table_type, uint32_t *c
static int
sogo_folder_open_message(void *folder_object,
TALLOC_CTX *mem_ctx,
uint64_t mid,
uint64_t mid, bool write_access,
void **message_object)
{
struct MAPIStoreTallocWrapper *wrapper;
@ -375,7 +375,10 @@ sogo_folder_open_message(void *folder_object,
wrapper = folder_object;
folder = wrapper->MAPIStoreSOGoObject;
pool = [NSAutoreleasePool new];
rc = [folder openMessage: &message withMID: mid inMemCtx: mem_ctx];
rc = [folder openMessage: &message
withMID: mid
forWriting: write_access
inMemCtx: mem_ctx];
if (rc == MAPISTORE_SUCCESS)
*message_object = [message tallocWrapper: mem_ctx];
[pool release];