diff --git a/ldap_config.php.template b/ldap_config.php.template --- a/ldap_config.php.template +++ b/ldap_config.php.template @@ -1,7 +1,6 @@ 'localhost', - 'port' => 389, + 'url' => 'ldap://localhost:389', 'binddn' => '', 'bindpw' => '' - ); \ No newline at end of file +); diff --git a/members.php b/members.php --- a/members.php +++ b/members.php @@ -1,33 +1,32 @@ search('ou=people,dc=kde,dc=org', $filter, Array( - 'attributes' => array('cn') -)); - -if(Pear::isError($search)) - die('Could not query members list. Please try again later.'); - -$members = Array(); -while($member = $search->current()) { - $members[] = $member->getValue('cn'); - $search->next(); -} +$ldapConfig = include('ldap_config.php'); +$ldapConnection = ldap_connect($ldapConfig['url']) + or die("The LDAP URI was not parsable"); + +ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); -function compare_ignoring_accents($a, $b) { - $replacements = array("å"=>"a", "à"=>"a", "é"=>"e"); - $a = strtr(mb_strtolower($a, 'UTF-8'), $replacements); - $b = strtr(mb_strtolower($b, 'UTF-8'), $replacements); - return strcmp($a, $b); +$ldapBind = ldap_bind($ldapConnection, $ldapConfig['binddn'], $ldapConfig['bindpw']); +if (!$ldapBind) { + die('Could not bind with the LDAP server'); } -usort($members, "compare_ignoring_accents"); + +$filter = '(groupMember=ev-active)'; +$result = ldap_search($ldapConnection, 'ou=people,dc=kde,dc=org', $filter, ['cn']); +$members = ldap_get_entries($ldapConnection, $result); + +unset($members['count']); + +usort($members, function ($a, $b) { + $a = $a['cn'][0]; + $b = $b['cn'][0]; + $replacements = ["å"=>"a", "à"=>"a", "é"=>"e"]; + $a = strtr(mb_strtolower($a, 'UTF-8'), $replacements); + $b = strtr(mb_strtolower($b, 'UTF-8'), $replacements); + return strcmp($a, $b); +}); $page_title = "KDE e.V. Members"; -$showedit=false; +$showedit = false; include "header.inc"; ?> @@ -41,7 +40,7 @@