Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

PHP LDAP XML Phonelist

By: a guest on Mar 21st, 2011  |  syntax: PHP  |  size: 2.37 KB  |  views: 190  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2.  
  3. function explode_dn($dn, $with_attributes=0)
  4. {
  5.     $result = ldap_explode_dn($dn, $with_attributes);
  6.     foreach($result as $key => $value) $result[$key] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value);
  7.     return $result;
  8. }
  9.  
  10. function get_members($group,$user,$password) {
  11.         $ldap_host = "LDAPSERVER";
  12.         $ldap_dn = "OU=some_group,OU=some_group,DC=company,DC=com";
  13.         $base_dn = "DC=company,DC=com";
  14.         $ldap_usr_dom = "@company.com";
  15.         $ldap = ldap_connect($ldap_host);
  16.  
  17.         ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION,3);
  18.         ldap_set_option($ldap, LDAP_OPT_REFERRALS,0);
  19.  
  20.         ldap_bind($ldap, $user . $ldap_usr_dom, $password);
  21.         $results = ldap_search($ldap,$ldap_dn, "cn=" . $group);
  22.         $member_list = ldap_get_entries($ldap, $results);
  23.  
  24.         $dirty = 0;
  25.         $group_member_details = array();
  26.  
  27.         foreach($member_list[0]['member'] as $member) {
  28.                 if($dirty == 0) {
  29.                         $dirty = 1;
  30.                 } else {
  31.                         $member_dn = explode_dn($member);
  32.                         $member_cn = str_replace("CN=","",$member_dn[0]);
  33.                         $member_search = ldap_search($ldap, $base_dn, "(CN=" . $member_cn . ")");
  34.                         $member_details = ldap_get_entries($ldap, $member_search);
  35.                         $group_member_details[] = array($member_details[0]['givenname'][0],$member_details[0]['sn'][0],$member_details[0]['telephonenumber'][0],$member_details[0]['othertelephone'][0]);
  36.                 }
  37.         }
  38.         ldap_close($ldap);
  39.         return $group_member_details;
  40. }
  41.  
  42. // Specify the group from where to get members and a username and password with rights to query it
  43. $result = get_members("groupname","username","password");
  44.  
  45. $xml = simplexml_load_string("<?xml version='1.0'?>\n<AddressBook></AddressBook>");
  46. $version = $xml->addChild('version', '1');
  47.  
  48. foreach($result as $e) {
  49.         $contact = $xml->addChild('Contact');
  50.         $contact->addChild('FirstName', $e[0]);
  51.         $contact->addChild('LastName', $e[1]);
  52.         $phone = $contact->addChild('Phone');
  53.         if ($e[3] == '') {
  54.                 $phone->addChild('phonenumber', '0');
  55.         } else {
  56.                 $phone->addChild('phonenumber', $e[3]);
  57.         }
  58.         $phone->addChild('accountindex', '0');
  59.         $phone = $contact->addChild('Phone');
  60.         if ($e[2] == '') {
  61.                 $phone->addChild('phonenumber', '0');
  62.         } else {
  63.                 $phone->addChild('phonenumber', $e[2]);
  64.         }
  65.         $phone->addChild('accountindex', '1');
  66.         $contact->addChild('Group', '0');
  67.         $contact->addChild('PhotoUrl', 'empty');
  68. }
  69.  
  70. $xml->asXML('phonebook.xml');
  71.  
  72. ?>