Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : LDAP Functions : ldap_dn2ufn

ldap_dn2ufn

Convert DN to User Friendly Naming format (PHP 4, PHP 5)
string ldap_dn2ufn ( string dn )


Code Examples / Notes » ldap_dn2ufn

bryan

This function will convert "cn=bryan,ou=users,ou=admin,o=apachetoolbox" to "bryan,users,admin,apachetoolbox".

alex

The function of bryan will only work if you start with an Organization and using only an Organizational Unit as a container and the object is an CN.
For example:
$DN = "CN=DNS,CN=Authorized Login Methods,CN=Security";
echo ($DN = ldap_dn2ufn($DN)) . "\n";
echo ($DN = ldap_ufn2dn($DN)) . "\n";
will echo:
DNS,Authorized Login Methods,Security
CN=DNS,OU=Authorized Login Methods,O=Security


bryan

function ldap_unf2dn($unf,$delimeter=".") {
$seperated = explode($delimeter,$unf); //split the unf up by the given delimeter
$LastKey=count($seperated)-1;          //0 is the first key to total-1 would be the last key              
foreach($seperated as $key => $value) {
 if ($key == 1) {              //first variable is the CN
  $dn="${dn}cn=$value,";
 } elseif ($key == $LastKey) { //last variable, so it's the O
  $dn="${dn}o=$value";
 } elseif ($value == "") {     //value is blank, so continue
  continue;
 } else {                      //just a typical OU
  $dn="${dn}ou=$value,";
 }
 
};
return $dn;
}
$unf=".bryan.users.admin.apachetoolbox";
$dn=ldap_unf2dn($unf);
print "$dn" // will give me "cn=bryan,ou=users,ou=TS,o=apachetoolbox"


naaina

Don't know if anyone is interested in this, but this is a modified and more dynamic version of the posting below. Since ldap_dn2ufn takes ',' as delimiter for the UFNs, we'll also use it here. $pHowToBuild specifies, how the DN is going to be build.
Short example:
$myUFN = ldap_dn2ufn("cn=naaina, ou=container1, ou=container2, ou=container3, o=private, c=de");
echo $myUFN . "\n"; // will return "naaina, container1, container2, container3, private, de"
$myDN = $ldapObject->conv_ufn2dn($myUFN);
echo $myDN . "\n"; // will return "cn=naaina,ou=container1,ou=container2,ou=container3,o=private,c=de"
For the object name, $pHowToBuild["object"] is going to be used as prefix - for containers $pHowToBuild["container"] and for the last n elements $pHowToBuild["last"].
<?php
 function ldap_ufn2dn (
  $pUFN,
  $pDelimiter = ",",
  $pHowToBuild = array(
   "object" => "cn",
   "container" => "ou",
   "last" => array("o", "c")
  )
 )
 {
  $resultDN = null;
 
  if(!empty($pUFN)) {
    /* Check $pHowToBuild */
    if(is_array($pHowToBuild)) {
      /* Check if required keys are existent */
      if(array_key_exists("object", $pHowToBuild) &&
         array_key_exists("container", $pHowToBuild) &&
         array_key_exists("last", $pHowToBuild))
      {
        $ufnArray = explode($pDelimiter, $pUFN);
        $ufnLast  = count($ufnArray) - count($pHowToBuild["last"]);
        /* Remove empty values */          
        foreach($ufnArray as $objKey => $objVal)
          if(empty($objVal))
            array_splice($ufnArray, $objKey, 1);
       
        /* Now build the DN ... */
        foreach($ufnArray as $objKey => $objVal) {
          $objVal = trim($objVal);
       
          if($objKey == 0) {
            /* For the object */
            $resultDN .= $pHowToBuild["object"] . "=" . $objVal . ",";
          } elseif ($objKey >= $ufnLast) {
            /* For last parts of the DN */
            $resultDN .= $pHowToBuild["last"][$objKey - $ufnLast] . "=" . $objVal;
            if(($objKey - $ufnLast - 1) != 0) {
              $resultDN .= ",";
            }
          } else {
            /* For containers */
            $resultDN .= $pHowToBuild["container"] . "=" . $objVal . ",";
          }
        }
      }
    }    
  }
 
  return $resultDN;
 }
?>


Change Language


Follow Navioo On Twitter
ldap_8859_to_t61
ldap_add
ldap_bind
ldap_close
ldap_compare
ldap_connect
ldap_count_entries
ldap_delete
ldap_dn2ufn
ldap_err2str
ldap_errno
ldap_error
ldap_explode_dn
ldap_first_attribute
ldap_first_entry
ldap_first_reference
ldap_free_result
ldap_get_attributes
ldap_get_dn
ldap_get_entries
ldap_get_option
ldap_get_values_len
ldap_get_values
ldap_list
ldap_mod_add
ldap_mod_del
ldap_mod_replace
ldap_modify
ldap_next_attribute
ldap_next_entry
ldap_next_reference
ldap_parse_reference
ldap_parse_result
ldap_read
ldap_rename
ldap_sasl_bind
ldap_search
ldap_set_option
ldap_set_rebind_proc
ldap_sort
ldap_start_tls
ldap_t61_to_8859
ldap_unbind
eXTReMe Tracker