From 7f609d32192783b708de3501be739c7976b6a0b3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 10 May 2007 19:01:09 +0000 Subject: [PATCH] Monotone-Parent: e29f563ab0cd9f47da56070fa528af4b9c253e7a Monotone-Revision: 7c72afa296dc94afa8d710aab09110f090d96946 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-05-10T19:01:09 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 +++ UI/Contacts/UIxContactFoldersView.m | 81 +++++++++-------------------- 2 files changed, 32 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index f8bf5b79a..d0592e30d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2007-05-10 Wolfgang Sourdeau + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -contactSearchAction]): simplified method to use the facilities + provided by the LDAPUserManager. No longer takes care of the + "ldap-only" url parameter since all requests are handled by the + usermanager now. + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults -primaryFetchProfile]): check that the value returned is not null before interpreting it. diff --git a/UI/Contacts/UIxContactFoldersView.m b/UI/Contacts/UIxContactFoldersView.m index de17b892a..400eb6df2 100644 --- a/UI/Contacts/UIxContactFoldersView.m +++ b/UI/Contacts/UIxContactFoldersView.m @@ -116,30 +116,6 @@ } } -- (NSDictionary *) _searchResults: (NSString *) contact - ldapFoldersOnly: (BOOL) ldapOnly -{ - NSMutableDictionary *results; - SOGoContactFolders *topFolder; - NSEnumerator *sogoContactFolders; - id currentFolder; - - results = [NSMutableDictionary dictionary]; - topFolder = [self clientObject]; - sogoContactFolders = [[topFolder contactFolders] objectEnumerator]; - currentFolder = [sogoContactFolders nextObject]; - while (currentFolder) - { - if (!ldapOnly || [currentFolder isKindOfClass: [SOGoContactLDAPFolder class]]) - [self _fillResults: results inFolder: currentFolder - withSearchOn: contact]; - currentFolder = [sogoContactFolders nextObject]; - } - [topFolder release]; - - return results; -} - - (NSString *) _emailForResult: (NSDictionary *) result { NSMutableString *email; @@ -158,33 +134,30 @@ return email; } -- (WOResponse *) _responseForResults: (NSDictionary *) results +- (WOResponse *) _responseForResults: (NSArray *) results { WOResponse *response; - NSEnumerator *uids; - NSString *responseString, *uid, *cn, *mail; - NSDictionary *result; + NSEnumerator *contacts; + NSString *responseString; + NSDictionary *contact; response = [context response]; - if ([results count]) + if ([results count] > 0) { - uids = [[results allKeys] objectEnumerator]; - uid = [uids nextObject]; - while (uid) + contacts = [results objectEnumerator]; + contact = [contacts nextObject]; + while (contact) { - result = [results objectForKey: uid]; - cn = [result objectForKey: @"displayName"]; - if (![cn length]) - cn = [result objectForKey: @"cn"]; - mail = [result objectForKey: @"mail"]; responseString = [NSString stringWithFormat: @"%@:%@:%@", - uid, cn, mail]; + [contact objectForKey: @"c_uid"], + [contact objectForKey: @"cn"], + [contact objectForKey: @"c_email"]]; [response setStatus: 200]; [response setHeader: @"text/plain; charset=iso-8859-1" forKey: @"Content-Type"]; [response appendContentString: responseString]; - uid = [uids nextObject]; + contact = [contacts nextObject]; } } else @@ -197,14 +170,15 @@ { NSString *contact; id result; - BOOL ldapFoldersOnly; - + LDAPUserManager *um; + contact = [self queryParameterForKey: @"search"]; - ldapFoldersOnly = [[self queryParameterForKey: @"ldap-only"] boolValue]; if ([contact length] > 0) - result - = [self _responseForResults: [self _searchResults: contact - ldapFoldersOnly: ldapFoldersOnly]]; + { + um = [LDAPUserManager sharedUserManager]; + result + = [self _responseForResults: [um fetchContactsMatching: contact]]; + } else result = [NSException exceptionWithHTTPStatus: 400 reason: @"missing 'search' parameter"]; @@ -328,16 +302,13 @@ while (contact) { uid = [contact objectForKey: @"c_uid"]; - if ([uid length] > 0) - { - folders = [self _foldersForUID: uid ofType: folderType]; - foldersString - = [self _foldersStringForFolders: [folders objectEnumerator]]; - [responseString appendFormat: @"%@:%@:%@%@\n", uid, - [contact objectForKey: @"cn"], - [contact objectForKey: @"c_email"], - foldersString]; - } + folders = [self _foldersForUID: uid ofType: folderType]; + foldersString + = [self _foldersStringForFolders: [folders objectEnumerator]]; + [responseString appendFormat: @"%@:%@:%@%@\n", uid, + [contact objectForKey: @"cn"], + [contact objectForKey: @"c_email"], + foldersString]; contact = [contacts nextObject]; } [response appendContentString: responseString];