diff --git a/ChangeLog b/ChangeLog index 9ca6a3a72..0ccf8e5de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-04-12 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoGCSFolder.m (-componentSQLFilter): new + overridable method that enables passing filters for + toOneRelationshipKeys from subclasses. + * SoObjects/Appointments/SOGoAppointmentFolder.m (-davCalendarComponentSet): componentSet is now an ivar. Include VTODO only with showCalendarTasks returns YES. diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index c2d568c41..7e99e2bc7 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -499,6 +499,18 @@ static NSNumber *sharedYes = nil; return filter; } +- (NSString *) componentSQLFilter +{ + NSString *filter; + + if ([self showCalendarTasks]) + filter = nil; + else + filter = @"c_component != 'vtodo'"; + + return filter; +} + - (BOOL) _checkIfWeCanRememberRecords: (NSArray *) fields { return ([fields containsObject: @"c_name"] diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index 5ee38847c..6a2bde8d5 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -617,19 +617,42 @@ static NSArray *childRecordFields = nil; return filter; } +- (NSString *) componentSQLFilter +{ + return nil; +} + - (NSArray *) toOneRelationshipKeys { NSArray *records, *names; - NSString *sqlFilter; - EOQualifier *qualifier; + NSString *sqlFilter, *compFilter; + EOQualifier *aclQualifier, *componentQualifier, *qualifier; sqlFilter = [self aclSQLListingFilter]; if (sqlFilter) { if ([sqlFilter length] > 0) - qualifier = [EOQualifier qualifierWithQualifierFormat: sqlFilter]; + aclQualifier = [EOQualifier qualifierWithQualifierFormat: sqlFilter]; else - qualifier = nil; + aclQualifier = nil; + + compFilter = [self componentSQLFilter]; + if ([compFilter length] > 0) + { + componentQualifier + = [EOQualifier qualifierWithQualifierFormat: compFilter]; + if (aclQualifier) + { + qualifier = [[EOAndQualifier alloc] initWithQualifiers: + aclQualifier, + componentQualifier]; + [qualifier autorelease]; + } + else + qualifier = componentQualifier; + } + else + qualifier = aclQualifier; records = [[self ocsFolder] fetchFields: childRecordFields matchingQualifier: qualifier];