diff --git a/lam/templates/lists/listgroups.php b/lam/templates/lists/listgroups.php new file mode 100644 index 00000000..967ab24e --- /dev/null +++ b/lam/templates/lists/listgroups.php @@ -0,0 +1,148 @@ +listgroups\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_grouplistAttributes(); +$temp_array = explode(";", $attr_string); +$hash_table = $_SESSION["ldap"]->attributeGroupArray(); +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]; +} +} + +// Groups have the attribute "posixGroup" +$filter = "(objectClass=posixGroup)"; +$attrs = $attr_array; +$sr = @ldap_search($_SESSION["ldap"]->server(), + $_SESSION["config"]->get_GroupSuffix(), + $filter, $attrs); +if ($sr) { + $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); + ldap_free_result($sr); + if ($info["count"] == 0) echo ("

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

"); +} +else echo ("

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


"); + +echo ("
\n"); + +// delete first array entry which is "count" +array_shift($info); +// sort rows by sort column ($list) +usort($info, "cmp_array"); + +// print group table header +echo "\n"; +echo ""; +// table header +for ($k = 0; $k < sizeof($desc_array); $k++) { + echo ""; +} +echo "\n"; + +// print group 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 group 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 ("
" . _("New Group") . ""); +echo ("   " . _("Delete Group(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; +} + +?> diff --git a/lam/templates/lists/listhosts.php b/lam/templates/lists/listhosts.php new file mode 100644 index 00000000..6ae9a9dc --- /dev/null +++ b/lam/templates/lists/listhosts.php @@ -0,0 +1,130 @@ +listhosts\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_hostlistAttributes(); +$temp_array = explode(";", $attr_string); +$hash_table = $_SESSION["ldap"]->attributeHostArray(); +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]; +} +} + +// Samba hosts have the attribute "sambaAccount" and end with "$" +$filter = "(&(objectClass=sambaAccount) (uid=*$))"; +$attrs = $attr_array; +$sr = @ldap_search($_SESSION["ldap"]->server(), + $_SESSION["config"]->get_HostSuffix(), + $filter, $attrs); +if ($sr) { + $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); + ldap_free_result($sr); + if ($info["count"] == 0) echo ("

" . _("No Samba Hosts found!") . "

"); +} +else echo ("

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


"); + +echo ("
\n"); + +// delete first array entry which is "count" +array_shift($info); +// sort rows by sort column ($list) +usort($info, "cmp_array"); + +// print host table header +echo "\n"; +echo ""; +// table header +for ($k = 0; $k < sizeof($desc_array); $k++) { + echo ""; +} +echo "\n"; + +// print host list +for ($i = 0; $i < sizeof($info); $i++) { + 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])]); + echo implode("; ", $info[$i][strtolower($attr_array[$k])]); + } + echo ("
"); +echo ("

 

\n"); +echo (""); +echo ("\n"); +echo ("
" . _("New Host") . ""); +echo ("   " . _("Delete Host(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; +} + +?>