From 6270a11d7327dd45294b7d1fc8bfce63d17fe883 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 28 Nov 2016 10:33:38 -0500 Subject: [PATCH] Improve sort validation in Contacts module --- UI/Contacts/UIxContactsListActions.m | 38 ++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/UI/Contacts/UIxContactsListActions.m b/UI/Contacts/UIxContactsListActions.m index 7e631416e..14507be8b 100644 --- a/UI/Contacts/UIxContactsListActions.m +++ b/UI/Contacts/UIxContactsListActions.m @@ -76,15 +76,49 @@ { NSString *s; WORequest *rq; - + static NSArray *sortKeys = nil; + + if (!sortKeys) + { + sortKeys = [NSArray arrayWithObjects: @"c_cn", @"c_sn", @"c_givenname", @"c_mail", + @"c_screenname", @"c_o", @"c_telephonenumber", nil]; + [sortKeys retain]; + } + rq = [context request]; s = [rq formValueForKey: @"sort"]; - if (![s length]) + if (![s length] || ![sortKeys containsObject: s]) s = [self defaultSortKey]; return s; } +- (void) saveSortValue +{ + NSMutableDictionary *contactSettings; + NSString *ascending, *sort; + SOGoUserSettings *us; + + sort = [[context request] formValueForKey: @"sort"]; + ascending = [[context request] formValueForKey: @"asc"]; + + if ([sort length]) + { + sort = [self sortKey]; + us = [[context activeUser] userSettings]; + contactSettings = [us objectForKey: @"Contact"]; + // Must create if it doesn't exist + if (!contactSettings) + { + contactSettings = [NSMutableDictionary dictionary]; + [us setObject: contactSettings forKey: @"Contact"]; + } + [contactSettings setObject: [NSArray arrayWithObjects: [sort lowercaseString], [NSString stringWithFormat: @"%d", [ascending intValue]], nil] + forKey: @"SortingState"]; + [us synchronize]; + } +} + - (NSArray *) contactInfos { id folder;