From 6280e4ded620658c80b56de91a3733084ff08d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20J=2E=20Hern=C3=A1ndez=20Blasco?= Date: Fri, 4 Sep 2015 16:16:00 +0200 Subject: [PATCH] oc: Implement setReadFlag for MAPIStoreDBMessage This is an utility for testing as I don't see any added value for real scenario but according to [MS-OXCMSG] all messages can have PidTagMessageFlags. --- OpenChange/MAPIStoreDBMessage.m | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/OpenChange/MAPIStoreDBMessage.m b/OpenChange/MAPIStoreDBMessage.m index cdfe00cd8..7c208b2f8 100644 --- a/OpenChange/MAPIStoreDBMessage.m +++ b/OpenChange/MAPIStoreDBMessage.m @@ -313,4 +313,36 @@ return [sogoObject lastModified]; } +- (enum mapistore_error) setReadFlag: (uint8_t) flag +{ + /* Modify PidTagMessageFlags from SetMessageReadFlag and + SyncImportReadStateChanges ROPs */ + NSNumber *flags; + uint32_t newFlag; + + flags = [properties objectForKey: MAPIPropertyKey (PR_MESSAGE_FLAGS)]; + if (flags) + { + newFlag = [flags unsignedLongValue]; + if (flag & SUPPRESS_RECEIPT) + newFlag |= MSGFLAG_READ; + if (flag & CLEAR_RN_PENDING) + newFlag &= ~MSGFLAG_RN_PENDING; + if (flag & CLEAR_READ_FLAG) + newFlag &= ~MSGFLAG_READ; + if (flag & CLEAR_NRN_PENDING) + newFlag &= ~MSGFLAG_NRN_PENDING; + } + else + { + newFlag = MSGFLAG_READ; + if (flag & CLEAR_READ_FLAG) + newFlag = 0x0; + } + [properties setObject: [NSNumber numberWithUnsignedLong: newFlag] + forKey: MAPIPropertyKey (PR_MESSAGE_FLAGS)]; + + return MAPISTORE_SUCCESS; +} + @end