Monotone-Parent: 54cc41b15e02fc61bfa80e7db07aeb97e541fdfc

Monotone-Revision: 3c8a49fe7ef93ec55aaeef9dd064be1de6052cfe

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2012-03-21T15:50:07
This commit is contained in:
Wolfgang Sourdeau
2012-03-21 15:50:07 +00:00
parent f4311032a0
commit 7a655ff8ce
7 changed files with 73 additions and 5 deletions

View File

@@ -1,3 +1,16 @@
2012-03-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:):
if "mail" is an array, all values are added to "c_emails".
* SoObjects/Contacts/SOGoContactSourceFolder.m
(_flattenedRecord:): if "mail" is an array, we only take the first
value of it.
* SoObjects/Contacts/SOGoContactLDIFEntry.m (-simplifiedRecord):
new record guaranteeing that all array values have been stripped
and converted to strings.
2012-03-20 Francis Lachapelle <flachapelle@inverse.ca>
* SoObjects/Mailer/SOGoMailObject+Draft.m

View File

@@ -76,6 +76,11 @@
return [[self vCard] asLDIFRecord];
}
- (NSDictionary *) simplifiedLDIFRecord
{
return [self ldifRecord];
}
- (BOOL) hasPhoto
{
return ([[self vCard] firstChildWithTag: @"photo"] != nil);

View File

@@ -95,7 +95,7 @@
[vcard setProdID: [NSString
stringWithFormat: @"-//Inverse inc./SOGo %@//EN",
SOGoVersion]];
[vcard updateFromLDIFRecord: [self ldifRecord]];
[vcard updateFromLDIFRecord: [self simplifiedLDIFRecord]];
return vcard;
}
@@ -115,6 +115,37 @@
return ldifEntry;
}
- (NSDictionary *) simplifiedLDIFRecord
{
NSMutableDictionary *newRecord;
NSArray *keys;
NSUInteger count, max;
NSString *key;
id value;
newRecord = [[self ldifRecord] mutableCopy];
[newRecord autorelease];
keys = [newRecord allKeys];
max = [keys count];
for (count = 0; count < max; count++)
{
key = [keys objectAtIndex: count];
value = [newRecord objectForKey: key];
if ([value isKindOfClass: [NSArray class]]
&& ![key isEqualToString: @"objectclass"])
{
if ([value count] > 0)
[newRecord setObject: [value objectAtIndex: 0]
forKey: key];
else
[newRecord removeObjectForKey: key];
}
}
return newRecord;
}
- (BOOL) hasPhoto
{
return NO;

View File

@@ -33,6 +33,7 @@
/* web editing */
- (void) setLDIFRecord: (NSDictionary *) newLDIFRecord;
- (NSDictionary *) ldifRecord;
- (NSDictionary *) simplifiedLDIFRecord;
- (NSException *) save;
- (NSException *) delete;

View File

@@ -213,7 +213,7 @@
- (NSDictionary *) _flattenedRecord: (NSDictionary *) oldRecord
{
NSMutableDictionary *newRecord;
NSString *data;
id data;
NSObject <SOGoSource> *recordSource;
newRecord = [NSMutableDictionary dictionaryWithCapacity: 8];
@@ -232,6 +232,13 @@
data = [oldRecord objectForKey: @"mail"];
if (!data)
data = @"";
else if ([data isKindOfClass: [NSArray class]])
{
if ([data count] > 0)
data = [data objectAtIndex: 0];
else
data = @"";
}
[newRecord setObject: data forKey: @"c_mail"];
data = [oldRecord objectForKey: @"nsaimid"];

View File

@@ -816,11 +816,12 @@
{
NSMutableDictionary *compactContacts, *returnContact;
NSDictionary *userEntry;
NSArray *newContacts;
NSArray *newContacts, *allEmails;
NSMutableArray *emails;
NSString *uid, *email, *info;
NSNumber *isGroup;
id <SOGoSource> source;
NSUInteger count, max;
compactContacts = [NSMutableDictionary dictionary];
while ((userEntry = [contacts nextObject]))
@@ -851,7 +852,17 @@
[returnContact setObject: emails forKey: @"emails"];
}
email = [userEntry objectForKey: @"mail"];
if (email && ![emails containsObject: email])
if ([email isKindOfClass: [NSArray class]])
{
allEmails = (NSArray *) email;
max = [allEmails count];
for (count = 0; count < max; count++)
{
email = [allEmails objectAtIndex: count];
[emails addObjectUniquely: email];
}
}
else if (email && ![emails containsObject: email])
[emails addObject: email];
email = [userEntry objectForKey: @"mozillasecondemail"];
if (email && ![emails containsObject: email])

View File

@@ -88,7 +88,7 @@ static Class SOGoContactGCSEntryK = Nil;
if (!ldifRecord)
{
clientLDIFRecord = [[self clientObject] ldifRecord];
clientLDIFRecord = [[self clientObject] simplifiedLDIFRecord];
ldifRecord = [clientLDIFRecord mutableCopy];
queryValue = [self queryParameterForKey: @"contactEmail"];
if ([queryValue length] > 0)