diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index cfa0b8dbb..9ff8db637 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -709,7 +709,7 @@ static NSArray *childRecordFields = nil; { NSArray *records, *names; NSString *sqlFilter, *compFilter; - EOQualifier *aclQualifier, *componentQualifier, *qualifier; + EOQualifier *aclQualifier, *componentQualifier, *qualifier, *vlistExclusionQualifier; sqlFilter = [self aclSQLListingFilter]; if (sqlFilter) @@ -738,8 +738,18 @@ static NSArray *childRecordFields = nil; else qualifier = aclQualifier; + // For Thunderbird, disable contact list + if ([[context request] isThunderbird]) { + vlistExclusionQualifier = [EOQualifier qualifierWithQualifierFormat: @"c_component != 'vlist'"]; + qualifier = [[[EOAndQualifier alloc] initWithQualifiers: + vlistExclusionQualifier, + qualifier, + nil] autorelease]; + } + records = [[self ocsFolder] fetchFields: childRecordFields matchingQualifier: qualifier]; + if (![records isNotNull]) { [self errorWithFormat: @"(%s): fetch failed!", __PRETTY_FUNCTION__]; @@ -1176,9 +1186,19 @@ static NSArray *childRecordFields = nil; { GCSFolder *folder; EOFetchSpecification *fetchSpec; + EOQualifier *vlistExclusionQualifier; folder = [self ocsFolder]; + // For Thunderbird, disable contact list + if ([[context request] isThunderbird]) { + vlistExclusionQualifier = [EOQualifier qualifierWithQualifierFormat: @"c_component != 'vlist'"]; + qualifier = [[[EOAndQualifier alloc] initWithQualifiers: + vlistExclusionQualifier, + qualifier, + nil] autorelease]; + } + if (qualifier) fetchSpec = [EOFetchSpecification fetchSpecificationWithEntityName: [folder folderName] diff --git a/SoObjects/SOGo/WORequest+SOGo.m b/SoObjects/SOGo/WORequest+SOGo.m index 9285250f3..164c87c16 100644 --- a/SoObjects/SOGo/WORequest+SOGo.m +++ b/SoObjects/SOGo/WORequest+SOGo.m @@ -260,4 +260,9 @@ return b; } +- (BOOL) isThunderbird +{ + return ([[self headerForKey:@"user-agent"] rangeOfString: @"Thunderbird"].location != NSNotFound); +} + @end