Properly honor "include in freebusy"

Fixes #3354
pull/236/head
Francis Lachapelle 2017-04-27 09:02:46 -04:00
parent 663a0b60dd
commit ef5728dcaf
4 changed files with 31 additions and 29 deletions

1
NEWS
View File

@ -20,6 +20,7 @@ Bug fixes
- [core] handle properly mails using windows-1255 charset (#4124)
- [core] fixed email reminders sent multiple times (#4100)
- [core] fixed LDIF to vCard conversion for non-handled multi-value attributes (#4086)
- [core] properly honor the "include in freebusy" setting (#3354)
- [eas] set reply/forwarded flags when ReplaceMime is set (#4133)
- [eas] remove alarms over EAS if we don't want them (#4059)
- [eas] correctly set RSVP on event invitations

View File

@ -431,36 +431,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

View File

@ -309,6 +309,7 @@
to: (NSCalendarDate *) endDate
{
SOGoAppointmentFolder *calFolder;
SOGoAppointmentFolders *calFolders;
SOGoUser *user;
SOGoUserDefaults *ud;
NSArray *folders;
@ -318,9 +319,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++)
{

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
@ -317,6 +317,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;