<?php
error_reporting
(0);

$uid $_GET['uniqname'];
$output $_GET['output'];
$valueof $_GET['valueof'];
$option $_GET['option'];
$elementSeparator "$$";
$lineSeparator "\n";

if(!isset(
$uid)){
    print 
"<pre>";
    print 
"";
    print 
"This script retrieves entries from the University of Michigan Online Directory.\n\n";
    print 
"Usage: ".$_SERVER['SCRIPT_NAME']."?uniqname=UNIQNAME[&output={xml|txt|php|html}][&[valueof=KEY]    \n";
    print 
"uniqname is required. \noutput defaults to xml. \nif valueof is set, the script will only return the value of KEY.";
    print 
"</pre>";
    exit;
}

$ds=ldap_connect("ldap-master.itd.umich.edu");

if (
$ds) {
   
$r=ldap_bind($ds);
   
   
$sr=ldap_search($ds"ou=People,dc=umich,dc=edu""uid=$uid");
   
   
/* NOT IMPLEMENTED
   if($option == "membership"){
       $sr=ldap_search($ds, "ou=User Groups,ou=Groups,dc=umich,dc=edu", "member=uid=$uid,ou=People,dc=umich,dc=edu");
   }
   */
   
   
$info ldap_get_entries($ds$sr);
   unset(
$info['count']);
   if(
count($info) == 1)
        
$info $info[0];
   
   if(
$output != 'debug'){
    
//foreach($infos as $info){
       
foreach($info as $key => $value){
        unset(
$info['count']);
        if(
is_numeric($key))
            unset(
$info[$key]);
        if(
is_array($value)){
            unset(
$info[$key]['count']);
            unset(
$value['count']);

            
$str array_pop($value);
            foreach(
$value as $value2){
                
$str .= $elementSeparator.$value2;
            }
            
$info[$key] = $str;
        }
    }
    
//}
    
}
    
/*
    foreach($info as $key => $value){
        $info[$key] = str_replace("$", $lineSeparator, $value);
    }
    */

    
    
if(isset($valueof)){
        if(!isset(
$output))
            
$output 'txt';

        
$value $info[$valueof];
        
$info = array();
        
$info[$valueof] = $value;
    }
    
    
    switch(
$output){
    case 
'debug':
        
var_dump($info);
        break;
    case 
'php':
        
var_export($info);
        break;
    case 
'txt':
        foreach(
$info as $value){
            print 
$value."\n";
        }
        break;
    case 
'html':
        print 
"<table border=\"1\">\n";
        foreach(
$info as $key => $value){
            print 
"    <tr>\n        <th>$key</th>\n        <td>$value</td>\n    </tr>\n";
        }
        print 
"</table>\n";
        break;
    case 
'xml':
    default:
        
header("Content-Type: text/xml; charset=utf-8");
        require_once 
"XML/Serializer.php";
        
$xml = new XMl_Serializer();
        
$xml->serialize($info);
        print 
$xml->getSerializedData();
        break;
    }


   
ldap_close($ds);

} else {
   echo 
"<h4>Unable to connect to LDAP server</h4>";
}
?>