Properly honor "include in freebusy"

Fixes #3354
This commit is contained in:
Francis Lachapelle
2017-04-27 09:02:46 -04:00
parent 2705b5956a
commit 3f698447b9
4 changed files with 31 additions and 29 deletions
+16 -25
View File
@@ -445,36 +445,27 @@ static Class iCalEventK = nil;
- (BOOL) includeInFreeBusy
{
NSNumber *excludeFromFreeBusy;
NSString *userLogin;
NSString *userLogin, *ownerInContext;
BOOL is_owner;
userLogin = [[context activeUser] login];
is_owner = [userLogin isEqualToString: self->owner];
// Check if the owner (not the active user) has excluded the calendar from her/his free busy data.
excludeFromFreeBusy
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
forUser: [context activeUser]];
ownerInContext = [[self container] ownerInContext: context];
is_owner = [userLogin isEqualToString: ownerInContext];
if ([self isSubscription])
{
// If the user has not yet set an include/not include fb information let's EXCLUDE it.
if (!excludeFromFreeBusy)
return NO;
else
return ![excludeFromFreeBusy boolValue];
}
else if (is_owner)
{
// We are the owner but we haven't included/excluded freebusy info, let's INCLUDE it.
if (!excludeFromFreeBusy)
return YES;
else
return ![excludeFromFreeBusy boolValue];
}
if (is_owner)
excludeFromFreeBusy
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
forUser: [context activeUser]];
else
excludeFromFreeBusy
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
forUser: [SOGoUser userWithLogin: ownerInContext]];
// It's not a subscribtion and we aren't the owner. Let's INCLUDE the freebusy info.
return YES;
// We haven't included/excluded freebusy info, let's INCLUDE it.
if (!excludeFromFreeBusy)
return YES;
return ![excludeFromFreeBusy boolValue];
}
- (void) setIncludeInFreeBusy: (BOOL) newInclude
+7 -3
View File
@@ -317,6 +317,7 @@
to: (NSCalendarDate *) endDate
{
SOGoAppointmentFolder *calFolder;
SOGoAppointmentFolders *calFolders;
SOGoUser *user;
SOGoUserDefaults *ud;
NSArray *folders;
@@ -326,9 +327,12 @@
infos = [NSMutableArray array];
folders = [[container lookupName: @"Calendar"
inContext: context
acquire: NO] subFolders];
calFolders = [container lookupName: @"Calendar"
inContext: context
acquire: NO];
[calFolders appendSubscribedSources];
folders = [calFolders subFolders];
max = [folders count];
for (count = 0; count < max; count++)
{
+7 -1
View File
@@ -1,6 +1,6 @@
/* SOGoParentFolder.m - this file is part of SOGo
*
* Copyright (C) 2006-2015 Inverse inc.
* Copyright (C) 2006-2017 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -323,6 +323,12 @@ static SoSecurityManager *sm = nil;
int i;
BOOL dirty;
if (!subscribedSubFolders)
subscribedSubFolders = [NSMutableDictionary new];
if (!subFolderClass)
subFolderClass = [[self class] subFolderClass];
error = nil; /* we ignore non-DB errors at this time... */
dirty = NO;