From c48945f39bd1ebc1b508b49fe4ef0f30e34e23d1 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Mon, 30 Jun 2003 20:04:59 +0000 Subject: [PATCH] fixed HTML errors, implemented OU support in user list, always sort user list --- lam/templates/lists/listgroups.php | 6 +- lam/templates/lists/listhosts.php | 4 +- lam/templates/lists/listusers.php | 91 ++++++++++++++++++++---------- 3 files changed, 66 insertions(+), 35 deletions(-) diff --git a/lam/templates/lists/listgroups.php b/lam/templates/lists/listgroups.php index d1a8cb1a..7fb7d14d 100644 --- a/lam/templates/lists/listgroups.php +++ b/lam/templates/lists/listgroups.php @@ -162,10 +162,10 @@ echo ""; for ($k = 0; $k < sizeof($desc_array); $k++) { if (strtolower($attr_array[$k]) == $sort) { echo "" . $desc_array[$k] . ""; + "sort=" . strtolower($attr_array[$k]) . $searchfilter . "&norefresh=y" . "\">" . $desc_array[$k] . ""; } else echo "" . $desc_array[$k] . ""; + "sort=" . strtolower($attr_array[$k]) . $searchfilter . "&norefresh=y" . "\">" . $desc_array[$k] . ""; } echo "\n"; @@ -207,7 +207,7 @@ for ($i = $table_begin; $i < $table_end; $i++) { for ($d = 0; $d < sizeof($grp_info[$i][strtolower($attr_array[$k])]); $d++) { $user = $grp_info[$i][strtolower($attr_array[$k])][$d]; // user name // if user was found in LDAP make link, otherwise just print name - $linklist[$d] = "" . $user . ""; + $linklist[$d] = "" . $user . ""; } echo implode("; ", $linklist); } diff --git a/lam/templates/lists/listhosts.php b/lam/templates/lists/listhosts.php index af5aa562..e2136f3a 100644 --- a/lam/templates/lists/listhosts.php +++ b/lam/templates/lists/listhosts.php @@ -168,10 +168,10 @@ echo ""; for ($k = 0; $k < sizeof($desc_array); $k++) { if (strtolower($attr_array[$k]) == $sort) { echo "" . $desc_array[$k] . ""; + "sort=" . strtolower($attr_array[$k]) . $searchfilter . "&norefresh=y" . "\">" . $desc_array[$k] . ""; } else echo "" . $desc_array[$k] . ""; + "sort=" . strtolower($attr_array[$k]) . $searchfilter . "&norefresh=y" . "\">" . $desc_array[$k] . ""; } echo "\n"; diff --git a/lam/templates/lists/listusers.php b/lam/templates/lists/listusers.php index d733abe9..3f41ca19 100644 --- a/lam/templates/lists/listusers.php +++ b/lam/templates/lists/listusers.php @@ -41,6 +41,9 @@ echo "\n"; echo "\n"; +$usr_units = $_SESSION['usr_units']; +session_register('usr_units'); + // check if button was pressed and if we have to add/delete a user if ($_POST['new_user'] || $_POST['del_user']){ // add new user @@ -101,6 +104,12 @@ $sortattrib = $_GET["sortattrib"]; if (!$sortattrib) $sortattrib = strtolower($attr_array[0]); +// check search suffix +if ($_POST['usr_suffix']) $usr_suffix = $_POST['usr_suffix']; // new suffix selected via combobox +elseif ($_SESSION['usr_suffix']) $usr_suffix = $_SESSION['usr_suffix']; // old suffix from session +else $usr_suffix = $_SESSION["config"]->get_GroupSuffix(); // default suffix +session_register('usr_suffix'); + // generate search filter for sort links $searchfilter = ""; @@ -114,7 +123,14 @@ for ($k = 0; $k < sizeof($desc_array); $k++) { // configure search filter // Users have the attribute "*" -$filter = "(&(&(|(objectClass=posixAccount) (objectClass=sambaAccount)) (!(uid=*$)))"; + if ($_SESSION['config']->get_samba3() == "yes") { + // Samba users have the attribute "sambaSamAccount" and end with "$" + $filter = "(&(&(|(objectClass=posixAccount) (objectClass=sambaSamAccount)) (!(uid=*$)))"; + } + else { + // Samba users have the attribute "sambaAccount" and end with "$" + $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]) . "=" . @@ -127,13 +143,12 @@ $filter = $filter . ")"; // read entries only from ldap server if not yet stored in session or if refresh // button is pressed or if filter is applied if ($_SESSION["userlist"] && $_GET["norefresh"]) { - if ($_GET["sort"] == 1) - usort ($_SESSION["userlist"], "cmp_array"); + usort ($_SESSION["userlist"], "cmp_array"); $userinfo = $_SESSION["userlist"]; } else { $attrs = $attr_array; $sr = @ldap_search($_SESSION["ldap"]->server(), - $_SESSION["config"]->get_UserSuffix(), + $usr_suffix, $filter, $attrs); if ($sr) { $userinfo = ldap_get_entries ($_SESSION["ldap"]->server, $sr); @@ -145,9 +160,10 @@ if ($_SESSION["userlist"] && $_GET["norefresh"]) { // delete first array entry which is "count" array_shift($userinfo); + usort ($userinfo, "cmp_array"); $_SESSION["userlist"] = $userinfo; } -else +else StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Groups found!")); @@ -177,7 +193,7 @@ if ($user_count != 0) { echo "\n"; else echo "\n"; - echo "" . $desc_array[$k] . "\n"; } @@ -204,17 +220,19 @@ if ($user_count != 0) { echo("" . + " onDblClick=\"parent.frames[1].location.href='../account.php?type=user&DN=" . $userinfo[$i]["dn"] . "'\">" . " " . - " " . _("Edit") . "\n"); + " " . _("Edit") . "\n"); for ($k = 0; $k < sizeof($attr_array); $k++) { echo ("\n"); // print all attribute entries seperated by "; " if (sizeof($userinfo[$i][strtolower($attr_array[$k])]) > 0) { // delete first array entry which is "count" - array_shift($userinfo[$i][strtolower($attr_array[$k])]); - // print all other attributes - echo implode("; ", $userinfo[$i][strtolower($attr_array[$k])]); + if (is_array($userinfo[$i][strtolower($attr_array[$k])])) { + array_shift($userinfo[$i][strtolower($attr_array[$k])]); + echo implode("; ", $userinfo[$i][strtolower($attr_array[$k])]); + } + else echo $userinfo[$i][strtolower($attr_array[$k])]; } } echo (""); @@ -229,21 +247,34 @@ if ($user_count != 0) { echo ("
"); } - -echo (""); -echo (""); - -if ($user_count != 0) { - echo (""); +if (! $_GET['norefresh']) { + // generate list of possible suffixes + $usr_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_UserSuffix()); } -echo ("
\n"); + +echo ("

\n"); +echo ("\n"); +if ($user_count != 0) echo ("\n"); +// print combobox with possible sub-DNs +if (sizeof($usr_units) > 1) { +echo ("    " . _("Suffix") . ": "); +echo ("\n"); +echo (""); +} + +echo ("

\n"); echo ("\n"); echo "\n"; -/** +/** * @brief draws a navigation bar to switch between pages * - * + * * @return void */ function draw_navigation_bar ($user_count) { @@ -256,16 +287,16 @@ function draw_navigation_bar ($user_count) { echo (""); echo ("  "); if ($page != 1) - echo ("<="); else echo ("<="); echo (" "); if ($page < ($user_count / $max_pageentrys)) - echo ("=>"); + echo ("=>"); else echo ("=>"); echo (""); @@ -279,9 +310,9 @@ function draw_navigation_bar ($user_count) { if ($i == $page - 1) echo (" " . ($i + 1)); else - echo (" " . ($i + 1) . ""); } echo (""); @@ -296,10 +327,10 @@ function cmp_array($a, $b) { global $sortattrib; global $attr_array; // sort by first attribute with name $sortattrib - if ($a[$sortattrib][0] == $b[$sortattrib][0]) return 0; - else if ($a[$sortattrib][0] == - max($a[$sortattrib][0], $b[$sortattrib][0])) return 1; - else return -1; + if (!$sortattrib) $sortattrib = strtolower($attr_array[0]); + if ($a[$sortattrib][0] == $b[$sortattrib][0]) return 0; + else if ($a[$sortattrib][0] == max($a[$sortattrib][0], $b[$sortattrib][0])) return 1; + else return -1; } ?>