diff options
Diffstat (limited to 'apps/user_ldap/lib/User/Manager.php')
-rw-r--r-- | apps/user_ldap/lib/User/Manager.php | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/apps/user_ldap/lib/User/Manager.php b/apps/user_ldap/lib/User/Manager.php index 13555f9e31b..6185c0da45c 100644 --- a/apps/user_ldap/lib/User/Manager.php +++ b/apps/user_ldap/lib/User/Manager.php @@ -169,19 +169,14 @@ class Manager { * @return string[] */ public function getAttributes($minimal = false) { - $attributes = array_merge(Access::UUID_ATTRIBUTES, ['dn', 'uid', 'samaccountname', 'memberof']); - $possible = array( + $baseAttributes = array_merge(Access::UUID_ATTRIBUTES, ['dn', 'uid', 'samaccountname', 'memberof']); + $attributes = [ $this->access->getConnection()->ldapExpertUUIDUserAttr, $this->access->getConnection()->ldapQuotaAttribute, $this->access->getConnection()->ldapEmailAttribute, $this->access->getConnection()->ldapUserDisplayName, $this->access->getConnection()->ldapUserDisplayName2, - ); - foreach($possible as $attr) { - if(!is_null($attr)) { - $attributes[] = $attr; - } - } + ]; $homeRule = $this->access->getConnection()->homeFolderNamingRule; if(strpos($homeRule, 'attr:') === 0) { @@ -197,11 +192,16 @@ class Manager { ); } - // remove possible empty attributes - $attributes = array_values( - array_filter($attributes, function ($attributeName) { - return !empty($attributeName); - }) + $attributes = array_reduce($attributes, + function($list, $attribute) { + $attribute = strtolower(trim((string)$attribute)); + if(!empty($attribute) && !in_array($attribute, $list)) { + $list[] = $attribute; + } + + return $list; + }, + $baseAttributes // hard-coded, lower-case, non-empty attributes ); return $attributes; |