From 221bcf0e7fcd6b9d9daa75c36e155089f1fe94df Mon Sep 17 00:00:00 2001 From: dechutes Date: Mon, 5 May 2003 23:06:12 +0000 Subject: [PATCH] added filter for users (still buggy) --- lam/templates/lists/listusers.php | 133 +++++++++++++++++------------- 1 file changed, 76 insertions(+), 57 deletions(-) diff --git a/lam/templates/lists/listusers.php b/lam/templates/lists/listusers.php index 99f8bdee..7528d735 100644 --- a/lam/templates/lists/listusers.php +++ b/lam/templates/lists/listusers.php @@ -44,28 +44,18 @@ if ($_POST['new_user'] || $_POST['del_user']){ exit; } - echo "listusers\n"; echo "\n"; echo "\n"; echo "\n"; - - putenv("LANG=de_DE"); - putenv("LANGUAGE=de_DE"); - setlocale(LC_MESSAGES, "de_DE"); - setlocale(LC_ALL, "de_DE"); - bindtextdomain("messages", "../locale"); - textdomain("messages"); - - - // generate attribute-description table $attr_array; // list of LDAP attributes to show $desc_array; // list of descriptions for the attributes $attr_string = $_SESSION["config"]->get_userlistAttributes(); $temp_array = explode(";", $attr_string); $hash_table = $_SESSION["ldap"]->attributeUserArray(); + for ($i = 0; $i < sizeof($temp_array); $i++) { // if value is predifined, look up description in hash_table if (substr($temp_array[$i],0,1) == "#") { @@ -81,8 +71,20 @@ else { } } +// configure search filter // Users have the attribute "*" -$filter = "(&(|(objectClass=posixAccount) (objectClass=sambaAccount)) (!(uid=*$)))"; +$filter = "(&(&(|(objectClass=posixAccount) (objectClass=sambaAccount)) (!(uid=*$)))"; +for ($k = 0; $k < sizeof($desc_array); $k++) { + + if ($_POST["filter" . strtolower($attr_array[$k])]) + $filter = $filter . "(" . strtolower($attr_array[$k]) . "=" . + $_POST["filter" . strtolower($attr_array[$k])] . ")"; + else + $_POST["filter" . strtolower($attr_array[$k])] = "*"; +} +$filter = $filter . ")"; + + $attrs = $attr_array; $sr = @ldap_search($_SESSION["ldap"]->server(), $_SESSION["config"]->get_UserSuffix(), @@ -90,7 +92,9 @@ $sr = @ldap_search($_SESSION["ldap"]->server(), if ($sr) { $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); ldap_free_result($sr); - if ($info["count"] == 0) echo ("

" . _("No Users found!") . "

"); + if ($info["count"] == 0) echo ("

" . + _("No Users found!") . + "

"); } else echo ("

" . _("LDAP Search failed! Please check your preferences.
No Users found!") . "


"); @@ -106,50 +110,65 @@ echo "\n"; echo ""; // table header for ($k = 0; $k < sizeof($desc_array); $k++) { - echo ""; + echo ""; +} +echo "\n"; +echo ""; +// table header +for ($k = 0; $k < sizeof($desc_array); $k++) { + echo ""; } echo "\n"; // print user list for ($i = 0; $i < sizeof($info); $i++) { // ignore last entry in array which is "count" - echo("" . - " " . - " "); - for ($k = 0; $k < sizeof($attr_array); $k++) { - echo (""); + echo("" . + " " . + " "); + for ($k = 0; $k < sizeof($attr_array); $k++) { + echo ("\n"); + echo implode("; ", $linklist); + } + // print all other attributes + else { + echo implode("; ", $info[$i][strtolower($attr_array[$k])]); + } + } + echo (""); + } + echo("\n"); } echo ("
" . $desc_array[$k] . "" . + $desc_array[$k] . "
"; +echo ""; +echo ""; + echo (""); + echo "
" . _("Edit") . ""); - // print all attribute entries seperated by "; " - if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) { - // delete first array entry which is "count" - array_shift($info[$i][strtolower($attr_array[$k])]); - // generate links for user members - if (strtolower($attr_array[$k]) == "memberuid") { - $linklist = array(); - for ($d = 0; $d < sizeof($info[$i][strtolower($attr_array[$k])]); $d++) { - $user = $info[$i][strtolower($attr_array[$k])][$d]; // user name - $dn = $_SESSION["ldap"]->search_username($user); // DN entry - // if user was found in LDAP make link, otherwise just print name - if ($dn) { - $linklist[$d] = "" . - $info[$i][strtolower($attr_array[$k])][$d] . ""; - } - else $linklist[$d] = $user; - } - echo implode("; ", $linklist); - } - // print all other attributes - else { - echo implode("; ", $info[$i][strtolower($attr_array[$k])]); - } - } - echo ("
" . _("Edit") . ""); + // print all attribute entries seperated by "; " + if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) { + // delete first array entry which is "count" + array_shift($info[$i][strtolower($attr_array[$k])]); + // generate links for user members + if (strtolower($attr_array[$k]) == "memberuid") { + $linklist = array(); + for ($d = 0; $d < sizeof($info[$i][strtolower($attr_array[$k])]); $d++) { + $user = $info[$i][strtolower($attr_array[$k])][$d]; // user name + $dn = $_SESSION["ldap"]->search_username($user); // DN entry + // if user was found in LDAP make link, otherwise just print name + if ($dn) { + $linklist[$d] = "" . + $info[$i][strtolower($attr_array[$k])][$d] . ""; + } + else $linklist[$d] = $user; } - echo("
"); -echo ("

 

\n"); + +echo ("
"); + echo (""); echo (""); echo (""); @@ -161,14 +180,14 @@ echo "\n"; // rows are sorted with the first attribute entry of the sort column // if objects have attributes with multiple values the others are ignored function cmp_array($a, $b) { - // list specifies the sort column - global $list; - global $attr_array; - // sort by first attribute with name $list - if (!$list) $list = strtolower($attr_array[0]); - if ($a[$list][0] == $b[$list][0]) return 0; - else if ($a[$list][0] == max($a[$list][0], $b[$list][0])) return 1; - else return -1; + // list specifies the sort column + global $list; + global $attr_array; + // sort by first attribute with name $list + if (!$list) $list = strtolower($attr_array[0]); + if ($a[$list][0] == $b[$list][0]) return 0; + else if ($a[$list][0] == max($a[$list][0], $b[$list][0])) return 1; + else return -1; } ?>