diff --git a/ChangeLog b/ChangeLog index 5179e5f8b..db56264e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-03-06 Wolfgang Sourdeau + + * SoObjects/Contacts/NGVCard+SOGo.m + (-_setupEmailFieldsInLDIFRecord:): simplified code and fixed a bug + where the home mail would be taken for both first and second email + fields when no work mail was present. + 2012-03-02 Jean Raby * Scripts/sogo-backup.sh: new script to automate backups. diff --git a/SoObjects/Contacts/NGVCard+SOGo.m b/SoObjects/Contacts/NGVCard+SOGo.m index da86be3fa..250dc7e1a 100644 --- a/SoObjects/Contacts/NGVCard+SOGo.m +++ b/SoObjects/Contacts/NGVCard+SOGo.m @@ -351,40 +351,38 @@ convention: - (void) _setupEmailFieldsInLDIFRecord: (NSMutableDictionary *) ldifRecord { NSArray *elements; - NSString *workMail, *homeMail, *potential; - unsigned int max; + NSString *workMail, *homeMail, *mail, *secondEmail; + NSUInteger max; elements = [self childrenWithTag: @"email"]; - max = [elements count]; - workMail = [self _simpleValueForType: @"work" - inArray: elements excluding: nil]; - homeMail = [self _simpleValueForType: @"home" - inArray: elements excluding: nil]; + max = [elements count]; if (max > 0) { - potential = [[elements objectAtIndex: 0] flattenedValuesForKey: @""]; - if (!workMail) - { - if (homeMail && homeMail == potential) - { - if (max > 1) - workMail = [[elements objectAtIndex: 1] flattenedValuesForKey: @""]; - } - else - workMail = potential; - } - if (!homeMail && max > 1) - { - if (workMail && workMail == potential) - homeMail = [[elements objectAtIndex: 1] flattenedValuesForKey: @""]; - else - homeMail = potential; - } - } + workMail = [self _simpleValueForType: @"work" + inArray: elements excluding: nil]; + homeMail = [self _simpleValueForType: @"home" + inArray: elements excluding: nil]; - [self _setValue: @"mail" to: workMail inLDIFRecord: ldifRecord]; - [self _setValue: @"mozillasecondemail" to: homeMail inLDIFRecord: ldifRecord]; + mail = workMail; + if (mail) + secondEmail = homeMail; + else + { + secondEmail = nil; + mail = homeMail; + } + + if (!mail) + { + mail = [elements objectAtIndex: 0]; + if (max > 1) /* we know secondEmail is not set here either... */ + secondEmail = [elements objectAtIndex: 1]; + } + + [self _setValue: @"mail" to: mail inLDIFRecord: ldifRecord]; + [self _setValue: @"mozillasecondemail" to: secondEmail inLDIFRecord: ldifRecord]; + } [self _setValue: @"mozillausehtmlmail" to: [[self uniqueChildWithTag: @"x-mozilla-html"]