|
ldap_dn2ufn
Convert DN to User Friendly Naming format
(PHP 4, PHP 5)
Code Examples / Notes » ldap_dn2ufnbryan
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 Languageldap_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 |