From 95ff6a11a3cb7091278d37f63d2a296ac9a9d278 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Tue, 27 Nov 2012 14:36:22 +0000 Subject: [PATCH] improve sorting in account (/group) selection in managing ACL (per account/group (if supported)) --- felamimail/inc/class.uipreferences.inc.php | 33 +++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/felamimail/inc/class.uipreferences.inc.php b/felamimail/inc/class.uipreferences.inc.php index 9f8032e887..1ccd803f6b 100644 --- a/felamimail/inc/class.uipreferences.inc.php +++ b/felamimail/inc/class.uipreferences.inc.php @@ -72,6 +72,7 @@ if (isset($this->bofelamimail->icServer->domainName)) $ldomainName = $this->bofelamimail->icServer->domainName; if (isset($this->bofelamimail->bopreferences->profileData->identities[$lprofileID]->emailAddress)) $lemailAddress = $this->bofelamimail->bopreferences->profileData->identities[$lprofileID]->emailAddress; $accountList = array(); + $groupList = array(); // we initialize the box for use with ($imapClassName == 'defaultimap' || $imapClassName == 'emailadmin_imap') $accountSelection = ''; if (($default_profile_id = emailadmin_bo::getDefaultProfileID())) @@ -101,8 +102,9 @@ if (!($imapClassName == 'defaultimap' || $imapClassName == 'emailadmin_imap')) { //$smtpClass='emailadmin_smtp_sql'; - $accounts = $GLOBALS['egw']->accounts->search(array('type'=>($imapClassName=='managementserver_imap'?'both':'accounts'))); - //_debug_array($accounts); + $accounts = $GLOBALS['egw']->accounts->search(array('type'=>'accounts')); + $groups = array(); + if ($imapClassName=='managementserver_imap') $groups = $GLOBALS['egw']->accounts->search(array('type'=>'groups')); foreach ($accounts as $k => $v) { $isgroup=$v['account_id']<0?constant("$imapClassName::ACL_GROUP_PREFIX"):''; @@ -124,8 +126,31 @@ $accountList[$isgroup.trim($v['account_id'].'@'.$bofelamimail->icServer->domainName)] = $dfn; } } - //sort($accountList,SORT_STRING); - if (count($accountList)>=1) $accountList = array(''=>lang('Select one'))+$accountList; + natcasesort($accountList); + foreach ($groups as $k => $v) + { + $isgroup=$v['account_id']<0?constant("$imapClassName::ACL_GROUP_PREFIX"):''; + $dfn = common::display_fullname($v['account_lid']); + if ($bofelamimail->icServer->loginType=='standard') // means username + { + $groupList[$isgroup.$v['account_lid']] = $dfn; + } + elseif ($bofelamimail->icServer->loginType=='email') + { + if (!empty($v['account_email'])) $groupList[$isgroup.$v['account_email']] = $dfn; + } + elseif ($bofelamimail->icServer->loginType=='vmailmgr') // means username + domainname + { + $groupList[$isgroup.trim($v['account_lid'].'@'.$bofelamimail->icServer->domainName)] = $dfn; + } + elseif ($bofelamimail->icServer->loginType=='uidNumber') // userid + domain + { + $groupList[$isgroup.trim($v['account_id'].'@'.$bofelamimail->icServer->domainName)] = $dfn; + } + } + natcasesort($groupList); + + if (count($accountList)>=1) $accountList = array(''=>lang('Select one'))+$accountList+$groupList; } if (!empty($accountList)) $accountSelection = html::select('accountName','',$accountList,true, "id=\"accountName\""); }