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 */