X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Ffai%2Fadmin%2Ffai%2Fclass_FAI.inc;h=b6ef2a6125cae94dd430be037d543df5d9b1cd45;hb=cb773874cb502bc0f01aeefc43849e0522e1a4d9;hp=e6e191814e596b3526b6b555fe3791ef98acc9b3;hpb=c54f4e8fffcf40225765f9ee941a1d31a1b1cc5a;p=gosa.git diff --git a/gosa-plugins/fai/admin/fai/class_FAI.inc b/gosa-plugins/fai/admin/fai/class_FAI.inc index e6e191814..b6ef2a612 100644 --- a/gosa-plugins/fai/admin/fai/class_FAI.inc +++ b/gosa-plugins/fai/admin/fai/class_FAI.inc @@ -63,14 +63,14 @@ class FAI foreach($deps_to_search as $fai_base){ /* Ldap search for fai classes specified in this release */ - $attributes = array("dn","objectClass","FAIstate","cn"); - $res_tmp = get_list($filter,"fai",$fai_base,$attributes,GL_SUBSEARCH | GL_SIZELIMIT); + $attributes = array("dn","objectClass","FAIstate","cn","FAIdiskType","FAIlvmDevice","FAIdiskOption"); + $res_tmp = get_list($filter,"fai",$fai_base,$attributes,GL_SUBSEARCH); /* check the returned objects, and add/replace them in our return variable */ foreach($res_tmp as $attr){ $buffer = array(); - $name = preg_replace("/".normalizePreg($release)."/i","",$attr['dn']); + $name = preg_replace("/".preg_quote($release, '/')."/i","",$attr['dn']); if(isset($attr['FAIstate'][0])){ if(preg_match("/removed$/",$attr['FAIstate'][0])){ @@ -83,7 +83,7 @@ class FAI /* Seems to be an inherited class, apply current FAIstate to this classes */ - if(!preg_match("/".normalizePreg($base_release)."$/i",$attr['dn'])){ + if(!preg_match("/".preg_quote($base_release, '/')."$/i",$attr['dn'])){ $buffer['FAIstate'] = $FAIstate; }else{ @@ -97,6 +97,21 @@ class FAI } } + if(isset($attr['FAIdiskType'])){ + $buffer['FAIdiskType'] = $attr['FAIdiskType'][0]; + } else { + $buffer['FAIdiskType'] = "old"; + } + + if(isset($attr['FAIdiskOption'])){ + $buffer['FAIdiskOption'] = $attr['FAIdiskOption']; + } else { + $buffer['FAIdiskOption'] = null; + } + if(isset($attr['FAIlvmDevice'])){ + $buffer['FAIlvmDevice'] = $attr['FAIlvmDevice']; + } + /* In detailed mode are some additonal informations visible */ if($detailed){ @@ -151,7 +166,7 @@ class FAI { global $config; - if(!preg_match("/".normalizePreg(get_ou('faiBaseRDN'))."/",$dn)){ + if(!preg_match("/".preg_quote(get_ou('faiBaseRDN'), '/')."/i",$dn)){ $base = get_ou('faiBaseRDN').$dn; }else{ $base = $dn; @@ -163,7 +178,7 @@ class FAI $ldap->search("(objectClass=FAIbranch)",array("ou","dn")); while($attrs = $ldap->fetch()){ if($appendedName){ - $res[$attrs['dn']] = convert_department_dn(preg_replace("/,".normalizePreg(get_ou('faiBaseRDN')).".*$/","",$attrs['dn'])); + $res[$attrs['dn']] = convert_department_dn(preg_replace("/,".preg_quote(get_ou('faiBaseRDN'), '/').".*$/i","",$attrs['dn'])); }else{ $res[$attrs['dn']] = $attrs['ou'][0]; } @@ -207,7 +222,7 @@ class FAI /* Dont't try to modify non FAIclasses */ - if(!preg_match("/[^,]+,".normalizePreg(get_ou("faiBaseRDN"))."/",$obj_dn)){ + if(!preg_match("/[^,]+,".preg_quote(get_ou("faiBaseRDN"), '/')."/i",$obj_dn)){ trigger_error("PLEASE check fai class handling in ".__LINE__." -> ".__FILE__); echo "
-->".$Current_DN."
"; echo "
-->".$obj_dn."
"; @@ -228,8 +243,7 @@ class FAI $classes = FAI::get_all_objects_for_given_base(FAI::get_release_dn($Current_DN), "(&(objectClass=FAIclass)(cn=".$cn."))"); - /* Check if this is the last class with this name. - */ + /* Check if this is the last class with this name */ if(count($classes) == 1){ /* Get all FAI Profiles @@ -247,8 +261,8 @@ class FAI /* Check if this Profile uses the source class ($cn) */ - if(preg_match("/".normalizePreg($cn)."/",$attrs['FAIclass'])){ - $attrs['FAIclass'] = preg_replace("/[ ]*".normalizePreg($cn)."[ ]*/i"," ",$attrs['FAIclass']); + if(preg_match("/".preg_quote($cn, '/')."/",$attrs['FAIclass'])){ + $attrs['FAIclass'] = preg_replace("/[ ]*".preg_quote($cn, '/')."[ ]*/i"," ",$attrs['FAIclass']); if(empty($attrs['FAIclass'])){ $attrs['FAIclass'] = array(); } @@ -521,6 +535,13 @@ class FAI */ $rTag = FAI::get_release_tag(FAI::get_release_dn($key)); $parent_attrs['FAIstate'] = $rTag; + + /* FAItemplateFile can be binary, therefore it needs to be fetched with + * $ldap->get_attribute */ + if (isset($parent_attrs['FAItemplateFile'])) { + $parent_attrs['FAItemplateFile'] = $ldap->get_attribute($parent_obj, 'FAItemplateFile'); + } + FAI::save_FAI_object($key,$parent_attrs); } } @@ -595,7 +616,7 @@ class FAI $buffer = array(); # $name = str_ireplace($release,"",$attr['dn']); - $name = preg_replace("/".normalizePreg($release)."/i","",$attr['dn']); + $name = preg_replace("/".preg_quote($release, '/')."/i","",$attr['dn']); if(isset($attr['FAIstate'][0])&&(preg_match("/removed$/",$attr['FAIstate'][0]))){ @@ -703,7 +724,7 @@ class FAI /* Get dn suffix. Example "FAIvairableEntry=keksdose,FAIvariable=Keksregal," */ # $dn_suffix = str_ireplace($base_release,"",$dn); - $dn_suffix = preg_replace("/".normalizePreg($base_release)."/i","",$dn); + $dn_suffix = preg_replace("/".preg_quote($base_release, '/')."/i","",$dn); /* Check if given object also exists whitin one of these releases */ foreach($sub_releases as $p_release => $name){ @@ -744,7 +765,7 @@ class FAI /* Get dn suffix. Example "FAIvairableEntry=keksdose,FAIvariable=Keksregal," */ # $dn_suffix = str_ireplace($base_release,"",$dn); - $dn_suffix = preg_replace("/".normalizePreg($base_release)."/i","",$dn); + $dn_suffix = preg_replace("/".preg_quote($base_release, '/')."/i","",$dn); /* Check if given object also exists whitin one of these releases */ foreach($previous_releases as $p_release){ @@ -768,7 +789,7 @@ class FAI $ret = array(); /* Explode dns into pieces, to be able to build parent dns */ - $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".normalizePreg(",".$config->current['BASE'])."/i","",$dn)); + $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".preg_quote(",".$config->current['BASE'], '/')."/i","",$dn)); if(!is_array($dns_to_check)){ return; @@ -871,12 +892,12 @@ class FAI $start = microtime(TRUE); $source_release = trim($source_release,"/"); - echo "

".sprintf(_("Creating group application release for %s"),$destination_name)."

"; + echo "

".sprintf(_("Creating group application release for %s"),$destination_name)."

"; $sub_releases = array(); $source_dn = ""; - $tmp = split("\/",$source_release); + $tmp = explode("/",$source_release); foreach($tmp as $part){ if(empty($part)){ continue; @@ -902,7 +923,7 @@ class FAI $ldap->search("(objectClass=FAIbranch)",array("ou","FAIstate")); while($attrs = $ldap->fetch()){ foreach($sub_releases as $sub_rel){ - if(preg_match("/^".normalizePreg($sub_rel.get_ou('faiBaseRDN'))."/",$attrs['dn'])){ + if(preg_match("/^".preg_quote($sub_rel.get_ou('faiBaseRDN'), '/')."/i",$attrs['dn'])){ $f_releases[$sub_rel.get_ou('faiBaseRDN')] = $attrs; } } @@ -979,7 +1000,7 @@ class FAI }else{ $source_dns = array(); foreach($g_releases as $dn => $data){ - if(preg_match("/^".normalizePreg($source_dn)."/",$dn)){ + if(preg_match("/^".preg_quote($source_dn, '/')."/",$dn)){ $source_dns[$dn] = $data; } } @@ -992,7 +1013,7 @@ class FAI $ldap->cd($dn); $ldap->ls("(|(objectClass=gotoSubmenuEntry)(objectClass=gotoMenuEntry))",$dn,array("dn")); while($attrs = $ldap->fetch()){ - $destination = preg_replace("/".normalizePreg($dn)."$/","ou=".$destination_name.",".$dn,$attrs['dn']); + $destination = preg_replace("/".preg_quote($dn, '/')."$/","ou=".$destination_name.",".$dn,$attrs['dn']); $to_copy[$attrs['dn']] = $destination; } } @@ -1039,12 +1060,12 @@ class FAI /* Display current action information. */ if($is_first){ - echo "

".sprintf(_("Creating copy of %s"),"".LDAP::fix($sourcedn)."")."

"; + echo "

".sprintf(_("Creating copy of %s"),"".LDAP::fix($sourcedn)."")."

"; }else{ if(preg_match("/^ou=/",$sourcedn)){ echo "

"._("Processing")." ".LDAP::fix($destinationdn)."

"; }else{ - $tmp = split(",",$sourcedn); + $tmp = explode(",",$sourcedn); echo " "._("Object").": "; $deststr = LDAP::fix($destinationdn); if(strlen($deststr) > 96){ @@ -1186,7 +1207,7 @@ class FAI } } if($is_first){ - echo "

 

"; + echo "
"; } } @@ -1200,7 +1221,7 @@ class FAI $ldap->cd($config->current['BASE']); /* Split dn into pices */ - $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".normalizePreg(",".$config->current['BASE'])."/i","",$Current_DN)); + $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".preg_quote(",".$config->current['BASE'], '/')."/i","",$Current_DN)); if(!is_array($dns_to_check)){ return;