X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=include%2Ffunctions_FAI.inc;h=26c0a572659f10287d156965b74bdb68579e2095;hb=c4924928dc7abdf5caaf67d8d614fe014483a0c5;hp=6843c0d48610a32c24fdfcf0b5dbf5515a6f75c5;hpb=84a1a15abf03721b28b479827cab41aa035cb6b9;p=gosa.git diff --git a/include/functions_FAI.inc b/include/functions_FAI.inc index 6843c0d48..26c0a5726 100644 --- a/include/functions_FAI.inc +++ b/include/functions_FAI.inc @@ -37,14 +37,13 @@ function get_all_objects_for_given_base($Current_DN,$filter,$detailed = false) foreach($deps_to_search as $fai_base){ /* Ldap search for fai classes specified in this release */ - $ldap->cd($fai_base); - $ldap->search($filter,array("dn","objectClass","FAIstate")); - + $res_tmp = get_list($filter,"fai",$fai_base,array("dn","objectClass","FAIstate"),GL_SUBSEARCH | GL_SIZELIMIT); + /* check the returned objects, and add/replace them in our return variable */ - while($attr = $ldap->fetch()){ + foreach($res_tmp as $attr){ $buffer = array(); - $name = str_ireplace($release,"",$attr['dn']); + $name = preg_replace("/".normalizePreg($release)."/i","",$attr['dn']); if(isset($attr['FAIstate'][0])){ if(preg_match("/removed$/",$attr['FAIstate'][0])){ @@ -185,7 +184,7 @@ function array_diff_FAI($ar1,$ar2) } ksort($ar1); ksort($ar2); - if(count( array_diff($ar1,$ar2))){ + if(count( array_diff($ar1,$ar2)) || arr_diff($ar1,$ar2)){ return(true); }else{ return(false); @@ -193,6 +192,21 @@ function array_diff_FAI($ar1,$ar2) } +function arr_diff($ar1,$ar2) +{ + foreach($ar1 as $ak1 => $av1){ + if(!isset($ar2[$ak1]) || (!($av1 === $ar2[$ak1]))){ + return(true); + }elseif(is_array($av1)){ + return(arr_diff($av1,$ar2[$ak1])); + } + } + return(FALSE); +} + + + + /* check which objects must be saved, and save them */ function save_release_changes_now() { @@ -279,7 +293,7 @@ function save_release_changes_now() /* Check if this a leaf release or not */ if(count($following_releases) == 0 ){ - /* This is a leaf object. It isn't unherited by any other object */ + /* This is a leaf object. It isn't inherited by any other object */ if(DEBUG_FAI_FUNC) { echo "Saving directly, is a leaf object
".$Current_DN; print_a($objectAttrs); @@ -402,7 +416,8 @@ function clean_up_releases($Current_DN) while($attr = $ldap->fetch()){ $buffer = array(); - $name = str_ireplace($release,"",$attr['dn']); +# $name = str_ireplace($release,"",$attr['dn']); + $name = preg_replace("/".normalizePreg($release)."/i","",$attr['dn']); if(isset($attr['FAIstate'][0])&&(preg_match("/removed$/",$attr['FAIstate'][0]))){ @@ -507,7 +522,8 @@ function get_following_releases_that_inherit_this_object($dn) $sub_releases = get_sub_releases_of_this_release($base_release); /* Get dn suffix. Example "FAIvairableEntry=keksdose,FAIvariable=Keksregal," */ - $dn_suffix = str_ireplace($base_release,"",$dn); +# $dn_suffix = str_ireplace($base_release,"",$dn); + $dn_suffix = preg_replace("/".normalizePreg($base_release)."/i","",$dn); /* Check if given object also exists whitin one of these releases */ foreach($sub_releases as $p_release => $name){ @@ -547,7 +563,8 @@ function get_parent_release_object($dn,$include_myself=true) } /* Get dn suffix. Example "FAIvairableEntry=keksdose,FAIvariable=Keksregal," */ - $dn_suffix = str_ireplace($base_release,"",$dn); +# $dn_suffix = str_ireplace($base_release,"",$dn); + $dn_suffix = preg_replace("/".normalizePreg($base_release)."/i","",$dn); /* Check if given object also exists whitin one of these releases */ foreach($previous_releases as $p_release){ @@ -571,7 +588,8 @@ function get_previous_releases_of_this_release($dn,$flat) $ret = array(); /* Explode dns into pieces, to be able to build parent dns */ - $dns_to_check = ldap_explode_dn(str_ireplace(",".$config->current['BASE'],"",$dn),0); + $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".normalizePreg(",".$config->current['BASE'])."/i","",$dn)); + if(!is_array($dns_to_check)){ return; } @@ -675,7 +693,8 @@ function get_release_dn($Current_DN) $ldap->cd($config->current['BASE']); /* Split dn into pices */ - $dns_to_check = ldap_explode_dn(str_ireplace(",".$config->current['BASE'],"",$Current_DN),0); + $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".normalizePreg(",".$config->current['BASE'])."/i","",$Current_DN)); + if(!is_array($dns_to_check)){ return; }