From a38fa9f8095f349a45b9f74f366a600a5e3f0668 Mon Sep 17 00:00:00 2001 From: dechutes Date: Wed, 23 Apr 2003 21:41:48 +0000 Subject: [PATCH] moved and fixed user list --- lam/templates/lists/listusers.php | 146 ++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 lam/templates/lists/listusers.php diff --git a/lam/templates/lists/listusers.php b/lam/templates/lists/listusers.php new file mode 100644 index 00000000..4d3c8398 --- /dev/null +++ b/lam/templates/lists/listusers.php @@ -0,0 +1,146 @@ +listusers\n"; +echo "\n"; +echo "\n"; +echo "\n"; + +// 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) == "#") { + $attr = substr($temp_array[$i],1); + $attr_array[$i] = $attr; + $desc_array[] = $hash_table[$attr]; +} +// if not predefined, the attribute is seperated by a ":" from description +else { + $attr = explode(":", $temp_array[$i]); + $attr_array[$i] = $attr[0]; + $desc_array[$i] = $attr[1]; +} +} + +// Users have the attribute "*" +$filter = "(&(|(objectClass=posixAccount) (objectClass=sambaAccount)) (!(uid=*$)))"; +$attrs = $attr_array; +$sr = @ldap_search($_SESSION["ldap"]->server(), + $_SESSION["config"]->get_UserSuffix(), + $filter, $attrs); +if ($sr) { + $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); + ldap_free_result($sr); + if ($info["count"] == 0) echo ("

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

"); +} +else echo ("

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


"); + +echo ("
\n"); + +// delete first array entry which is "count" +array_shift($info); +// sort rows by sort column ($list) +usort($info, "cmp_array"); + +// print user table header +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("\n"); +} +echo ("
" . $desc_array[$k] . "
" . _("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 ("
"); +echo ("

 

\n"); +echo (""); +echo ("\n"); +echo ("
" . _("Add new User") . ""); +echo ("   " . _("Delete selected User(s)") . "
\n"); +echo ("
\n"); +echo "\n"; + +// compare function used for usort-method +// 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; +} + +?>