<?php
//Designed by Stephen Lee 18 June 2004
//Plugin to display details of users either by group or by individual or all 
//Using data from an LDAP server
//Settings may have to be changed according to ldap properties

//Displays in Wiki Help
function wikiplugin_ldap_help() 
{
	return tra("Includes details of individual user or groups of users ").":<br />~np~{LDAP(group=>|user=>)}{LDAP}~/np~";
}
//Extracts parameters from plugin e.g. group=>top
function wikiplugin_ldap($data, $params) 
{
	extract ($params);
$ldserv="my.ldap.server.com"; // LDAP Server 
$ds=ldap_connect($ldserv);  // Connects to LDAP Server

if ($ds)
	{ 
	$r=ldap_bind($ds);    // this is an "anonymous" bind, typically read-only access
	if(!isset($group))
		{
		$group='*';
		}
	else
		{
		$group='cn='.$group .',ou=USERS,o=myorg';
		}	
	if(!isset($user))
		{
		$user='*';
		}
   	$sr=ldap_search($ds, "ou=users, o=myorg", "(&(groupmembership=".$group.")(cn=".$user."))");  // Search group entry
	ldap_sort( $ds, $sr, "fullname" );
	$info = ldap_get_entries($ds, $sr);
	
	// Displays table
	$ret= '<div align=center><table class=normal><tr><td class=heading>Name (User ID)</td><td class=heading>Title</td><td class=heading>Extension</td><td class=heading>E-Mail</td></tr>'; //Table headings 
	$class = 'even';
	for ($i=0; $i<$info["count"]; $i++)	
		{
		if (isset($info[$i]["uid"]) && isset($info[$i]["fullname"]) && isset($info[$i]["mail"]) ) //Is there a user name, fullname & e-mail entry		
			{
					if ($class == 'even') // Function to diplay odd and even rows differently
						{
						$class = 'odd';
						}
					else 
						{
						$class = 'even';
						}
					$ret.= "<tr><td class='$class'>" . $info[$i]["fullname"][0] . ""; // Display user full name
					$ret.= " (" . $info[$i]["uid"][0] . ")</td>"; // Display user id
					if (isset($info[$i]["title"]))
						{
						$ret.= "<td class='$class'>" . $info[$i]["title"][0] . "</td>"; // Display user job title
						}
					else 
						{
						$ret.= "<td class='$class'><font color=red>No Title</font></td>"; // No job title available
						}
					if (isset($info[$i]["telephonenumber"]))		
						{
						$ret.= "<td class='$class'>" . $info[$i]["telephonenumber"][0] . "</td>"; // Display user telephone/extension number
						}
					else 
						{
						$ret.= "<td class='$class'><font color=red>No Number</font></td>"; //No number available
						}
			// Displays Email with mailto link 
			$ret.= "<td class='$class'>
					<a href=mailto:" . $info[$i]["mail"][0] . " class='link'><font color=blue>" . $info[$i]["mail"][0] . "</font>
					</a></td>"; 
			$ret.= "</tr>";				
			}
		}
		$ret.= '</table></div>';
return $ret;
ldap_close($ds); //Closes LDAP server
	}
else
	{
	return tra('Unable to connect to the LDAP server'); // Message to display if server fails
	}
}
?> 