From fc65172756683b910c94d87361555e5be201c2a0 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 17 Sep 2012 10:06:18 +0000 Subject: [PATCH] Fix for bug #1689 Monotone-Parent: 7605704028eff50386f4f9c1e4e93aa47eea31c3 Monotone-Revision: ae08767667624a609d7996a164800377cb574081 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2012-09-17T10:06:18 Monotone-Branch: ca.inverse.sogo --- OpenChange/MAPIStoreAppointmentWrapper.m | 5 ++++- OpenChange/MAPIStoreTasksMessage.m | 27 ++++++++++++++++++++++++ OpenChange/iCalEvent+MAPIStore.m | 11 ++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/OpenChange/MAPIStoreAppointmentWrapper.m b/OpenChange/MAPIStoreAppointmentWrapper.m index 8e8e308d8..096d7aeed 100644 --- a/OpenChange/MAPIStoreAppointmentWrapper.m +++ b/OpenChange/MAPIStoreAppointmentWrapper.m @@ -1238,7 +1238,10 @@ static NSCharacterSet *hexCharacterSet = nil; - (int) getPidLidPrivate: (void **) data // private (bool), should depend on CLASS and permissions inMemCtx: (TALLOC_CTX *) memCtx { - return [self getNo: data inMemCtx: memCtx]; + if ([event symbolicAccessClass] == iCalAccessPublic) + return [self getNo: data inMemCtx: memCtx]; + + return [self getYes: data inMemCtx: memCtx]; } - (int) getPidTagSensitivity: (void **) data // not implemented, depends on CLASS diff --git a/OpenChange/MAPIStoreTasksMessage.m b/OpenChange/MAPIStoreTasksMessage.m index 1487e6382..f2ebd4ed2 100644 --- a/OpenChange/MAPIStoreTasksMessage.m +++ b/OpenChange/MAPIStoreTasksMessage.m @@ -102,6 +102,7 @@ return MAPISTORE_SUCCESS; } +/* FIXME: Should be combined somehow with the code in MAPIStoreAppointmentWrapper.m */ - (int) getPidTagBody: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { @@ -120,6 +121,20 @@ return rc; } +/* FIXME: Should be combined somehow with the code in MAPIStoreAppointmentWrapper.m */ +- (int) getPidLidPrivate: (void **) data // private (bool), should depend on CLASS and permissions + inMemCtx: (TALLOC_CTX *) memCtx +{ + iCalToDo *task; + + task = [sogoObject component: NO secure: YES]; + + if ([task symbolicAccessClass] == iCalAccessPublic) + return [self getNo: data inMemCtx: memCtx]; + + return [self getYes: data inMemCtx: memCtx]; +} + - (int) getPidTagImportance: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { @@ -479,6 +494,18 @@ [NSString stringWithFormat: @"%d", (int) (doubleValue * 100)]]; } + /* privacy */ + /* FIXME: this should be combined with the code found in iCalEvent+MAPIStore.m */ + value = [properties objectForKey: MAPIPropertyKey(PidLidPrivate)]; + + if (value) + { + if ([value boolValue]) + [vToDo setAccessClass: @"PRIVATE"]; + else + [vToDo setAccessClass: @"PUBLIC"]; + } + now = [NSCalendarDate date]; if ([sogoObject isNew]) { diff --git a/OpenChange/iCalEvent+MAPIStore.m b/OpenChange/iCalEvent+MAPIStore.m index cacec6ea2..84ddddd7d 100644 --- a/OpenChange/iCalEvent+MAPIStore.m +++ b/OpenChange/iCalEvent+MAPIStore.m @@ -151,6 +151,17 @@ // else // isException = NO; + /* privacy */ + value = [properties objectForKey: MAPIPropertyKey(PidLidPrivate)]; + + if (value) + { + if ([value boolValue]) + [self setAccessClass: @"PRIVATE"]; + else + [self setAccessClass: @"PUBLIC"]; + } + userTimeZone = [userContext timeZone]; /* CREATED */