Scott M. Mcdermott

UNIX Systems & Network Administrator
available for contract or salaried positions

users.php

<?

include("common.php");

/*****************************************************************************/

$attrs = array (
        "location"      => "l",
        "lastname"      => "sn",
        "email"         => "mail",
        "mobile"        => "mobile",
        "firstname"     => "givenName",
        "phone"         => "telephoneNumber",
        "extension"     => "corpTelephoneExtension",
        "aliases"       => "corpMailLocalAddress",
        "uid"           => "uid",
);

$sortkey = "lastname";

define("LDAP_FILTER_PEOPLE",
       "(&(objectclass=corpPerson)" .
         "(mail=*)" .   /* <-- dubious */
         "(corpStatus=active)" .
         "(|(corpType=employee)" .
           "(corpType=contractor)" .
           "(corpType=hourly)))");

if (!($search = ldap_search($_SESSION["bind_linkid"], LDAP_BASE_DN_PEOPLE,
                            LDAP_FILTER_PEOPLE, array_values($attrs))))
        die("ldap search returned failure");

if (!($allusers = _ldap_get_entries($_SESSION["bind_linkid"], $search)))
        die("search succeeded but returned no entries!");

/* ldap_get_entries() prepends a `count' associative index to each of the
 * dimensioned arrays it constructs; we get rid of it here before calling the
 * sort function because otherwise it will get confused. */
if (!isset($allusers["count"]))
        die("_ldap_get_entries had nothing to find!");
unset($allusers["count"]);
uasort($allusers, "sortcallback");
reset($allusers);

/*****************************************************************************/

pagehead("Corporate Directory - Users", "User Directory",
         MENU_NAVBAR_HEADER);

?>
<table valign=top align=left border=0 width="100%" cellspacing=0 cellpadding=1>
<tr> <td> &nbsp; </td> </tr>
<?
$rowclasses = array("tablecell", "tablealtcell");
foreach ($allusers as $user) {
        $rowclass = next($rowclasses);
        $rowclass = $rowclass? $rowclass: reset($rowclasses);
?>      <tr valign=top class=<?echo($rowclass)?>>
<?      printf("<td nowrap> " .
               "<a href=\"/useredit.php?uid=%s\"> %s, %s </a> </td>\n",
               $user[$attrs["uid"]][0], $user[$attrs["lastname"]][0],
               $user[$attrs["firstname"]][0]);
?>      <td>
        <table width="100%" border=0 cellpadding=0 cellspacing=0>
<?      if (isset($user[$attrs["phone"]])) {
                printf("<tr>\n" .
                       "<td nowrap> %s </td>\n" .
                       "<td nowrap align=right> %s </td>\n",
                       $user[$attrs["location"]][0],
                       trim_telstring($user[$attrs["phone"]][0]));
        }
        if (isset($user[$attrs["extension"]])) {
                printf("<tr>\n" .
                       "<td nowrap> %s </td>\n" .
                       "<td nowrap align=right> x%s </td>\n",
                       $user[$attrs["location"]][0],
                       $user[$attrs["extension"]][0]);
        }
        if (isset($user[$attrs["mobile"]])) {
                printf("<tr>\n" .
                       "<td nowrap> mobile </td>\n" .
                       "<td nowrap align=right> %s </td>\n",
                       trim_telstring($user[$attrs["mobile"]][0]));
        }
?>      </table>
        </td>
        <td nowrap align=right>
<?      printf(" %s <br> ", $user[$attrs["email"]][0]);
        for ($n = $user[$attrs["aliases"]]["count"]; $n > 0; $n--) {
                $fqalias = $user[$attrs["aliases"]][$n - 1];
                if (strcmp($fqalias, $user[$attrs["email"]][0])) {
                        $uqalias = array();
                        if (!eregi("^([^@]*)", $fqalias, $uqalias))
                                die("eregi didn't match alias!");
                        printf("%s <br> ", $uqalias[1]);
                }
        }
?>      </td>
<?
}
?>
</table>
<?

pagefoot();

/*****************************************************************************/

function
trim_telstring ($s)
{
        list($country, $area, $prefix, $num) = sscanf($s, "%s %s %s %s");
        return (sprintf("(%s) %s-%s", $area, $prefix, $num));
}

?>