From 4cad962b78cc67cb7bc2562637aff59c77256c51 Mon Sep 17 00:00:00 2001 From: hickert Date: Fri, 7 Jul 2006 05:51:25 +0000 Subject: [PATCH] Variable/Template prepared to use new release management git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@4041 594d385d-05f5-0310-b6e9-bd551577e9d8 --- plugins/admin/fai/class_faiHook.inc | 3 +- plugins/admin/fai/class_faiScript.inc | 4 +- plugins/admin/fai/class_faiTemplate.inc | 66 ++++++++++++----------- plugins/admin/fai/class_faiVariable.inc | 69 ++++++++++++------------- 4 files changed, 66 insertions(+), 76 deletions(-) diff --git a/plugins/admin/fai/class_faiHook.inc b/plugins/admin/fai/class_faiHook.inc index 58b715958..7659b6655 100644 --- a/plugins/admin/fai/class_faiHook.inc +++ b/plugins/admin/fai/class_faiHook.inc @@ -343,8 +343,7 @@ class faiHook extends plugin $use_dn = $this->dn; } - $del = array(); - $del[] = prepare_to_save_FAI_object($use_dn,array(),true); + prepare_to_save_FAI_object($use_dn,array(),true); foreach($this->SubObjects as $name => $obj){ $use_dn = str_ireplace( get_release_dn($this->dn), $_SESSION['faifilter']['branch'], $obj['dn']); diff --git a/plugins/admin/fai/class_faiScript.inc b/plugins/admin/fai/class_faiScript.inc index b38f114ea..7f0bce319 100644 --- a/plugins/admin/fai/class_faiScript.inc +++ b/plugins/admin/fai/class_faiScript.inc @@ -315,8 +315,7 @@ class faiScript extends plugin $use_dn = $this->dn; } - $del = array(); - $del[] = prepare_to_save_FAI_object($use_dn,array(),true); + prepare_to_save_FAI_object($use_dn,array(),true); foreach($this->SubObjects as $name => $obj){ $use_dn = str_ireplace( get_release_dn($this->dn), $_SESSION['faifilter']['branch'], $obj['dn']); @@ -428,7 +427,6 @@ class faiScript extends plugin } } - if($obj['status'] == "delete"){ prepare_to_save_FAI_object($sub_dn,array(),true); $this->handle_post_events("remove"); diff --git a/plugins/admin/fai/class_faiTemplate.inc b/plugins/admin/fai/class_faiTemplate.inc index 4285a1835..a9fbd7bbb 100644 --- a/plugins/admin/fai/class_faiTemplate.inc +++ b/plugins/admin/fai/class_faiTemplate.inc @@ -67,11 +67,21 @@ class faiTemplate extends plugin */ $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->dn); - $ldap->search("(&(objectClass=FAIclass)(objectClass=".$this->subClass."))",$this->subAttributes); + + $attrs_to_search = $this->subAttributes; + $attrs_to_search[] = "FAIstate"; + $ldap->search("(&(objectClass=FAIclass)(objectClass=".$this->subClass."))",$attrs_to_search); while($object = $ldap->fetch()){ + + /* Skip objects, that are tagged as removed */ + if(isset($object['FAIstate'][0])){ + if(preg_match("/removed$/",$object['FAIstate'][0])){ + continue; + } + } + /* Set status for save management */ - foreach($this->subAttributes as $attrs){ if(!isset($object[$attrs][0])){ $this->SubObjects[$object['cn'][0]][$attrs]=""; @@ -271,7 +281,21 @@ class faiTemplate extends plugin { $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->dn); - $ldap->rmdir_recursive($this->dn); + + $use_dn = str_ireplace( get_release_dn($this->dn), $_SESSION['faifilter']['branch'], $this->dn); + if($_SESSION['faifilter']['branch'] == "main"){ + $use_dn = $this->dn; + } + + prepare_to_save_FAI_object($use_dn,array(),true); + + foreach($this->SubObjects as $name => $obj){ + $use_dn = str_ireplace( get_release_dn($this->dn), $_SESSION['faifilter']['branch'], $obj['dn']); + if($_SESSION['faifilter']['branch'] == "main"){ + $use_dn = $obj['dn']; + } + prepare_to_save_FAI_object($use_dn,array(),true); + } $this->handle_post_events("remove"); } @@ -308,20 +332,7 @@ class faiTemplate extends plugin $ldap = $this->config->get_ldap_link(); - $ldap->cat($this->dn,array("objectClass")); - if($ldap->count()!=0){ - /* Write FAIscript to ldap*/ - $ldap->cd($this->dn); - $this->cleanup(); - $ldap->modify ($this->attrs); - - }else{ - /* Write FAIscript to ldap*/ - $ldap->cd($this->config->current['BASE']); - $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); - $ldap->cd($this->dn); - $ldap->add($this->attrs); - } + prepare_to_save_FAI_object($this->dn,$this->attrs); show_ldap_error($ldap->get_error(), sprintf(_("Saving of FAI/template with dn '%s' failed."),$this->dn)); /* Do object tagging */ @@ -380,30 +391,17 @@ class faiTemplate extends plugin } if($obj['status'] == "delete"){ - $ldap->cd($sub_dn); - $ldap->rmdir_recursive($sub_dn); + prepare_to_save_FAI_object($sub_dn,array(),true); $this->handle_post_events("remove"); - show_ldap_error($ldap->get_error(), sprintf(_("Removing of FAI/template with dn '%s' failed."),$sub_dn)); }elseif($obj['status'] == "edited"){ - $ldap->cd($sub_dn); - $this->cleanup(); - $ldap->modify ($tmp); - show_ldap_error($ldap->get_error(), sprintf(_("Saving of FAI/template with dn '%s' failed."),$sub_dn)); - + prepare_to_save_FAI_object($sub_dn,$tmp); $this->handle_post_events("modify"); }elseif($obj['status']=="new"){ - - if($tmp['description']==array()){ - unset($tmp['description']); - } - $ldap->cd($this->config->current['BASE']); - $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $sub_dn)); - $ldap->cd($sub_dn); - $ldap->add($tmp); + prepare_to_save_FAI_object($sub_dn,$tmp); $this->handle_post_events("add"); - show_ldap_error($ldap->get_error(), sprintf(_("Saving of FAI/template with dn '%s' failed."),$sub_dn)); } + $this->handle_object_tagging($sub_dn, $this->gosaUnitTag); } } diff --git a/plugins/admin/fai/class_faiVariable.inc b/plugins/admin/fai/class_faiVariable.inc index 49aa77226..2656b942b 100644 --- a/plugins/admin/fai/class_faiVariable.inc +++ b/plugins/admin/fai/class_faiVariable.inc @@ -68,11 +68,21 @@ class faiVariable extends plugin */ $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->dn); + + $attrs_to_search = $this->subAttributes; + $attrs_to_search[] = "FAIstate"; $ldap->search("(&(objectClass=FAIclass)(objectClass=".$this->subClass."))",$this->subAttributes); while($object = $ldap->fetch()){ + + /* Skip objects, that are tagged as removed */ + if(isset($object['FAIstate'][0])){ + if(preg_match("/removed$/",$object['FAIstate'][0])){ + continue; + } + } + /* Set status for save management */ - foreach($this->subAttributes as $attrs){ if(!isset($object[$attrs][0])){ $this->SubObjects[$object['cn'][0]][$attrs]=""; @@ -240,8 +250,22 @@ class faiVariable extends plugin { $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->dn); - $ldap->rmdir_recursive($this->dn); - $this->handle_post_events("remove"); + + $use_dn = str_ireplace( get_release_dn($this->dn), $_SESSION['faifilter']['branch'], $this->dn); + if($_SESSION['faifilter']['branch'] == "main"){ + $use_dn = $this->dn; + } + + prepare_to_save_FAI_object($use_dn,array(),true); + + foreach($this->SubObjects as $name => $obj){ + $use_dn = str_ireplace( get_release_dn($this->dn), $_SESSION['faifilter']['branch'], $obj['dn']); + if($_SESSION['faifilter']['branch'] == "main"){ + $use_dn = $obj['dn']; + } + prepare_to_save_FAI_object($use_dn,array(),true); + } + $this->handle_post_events("remove"); } @@ -276,21 +300,7 @@ class faiVariable extends plugin plugin::save(); $ldap = $this->config->get_ldap_link(); - - $ldap->cat($this->dn,array("objectClass")); - if($ldap->count()!=0){ - /* Write FAIscript to ldap*/ - $ldap->cd($this->dn); - $this->cleanup(); - $ldap->modify ($this->attrs); - - }else{ - /* Write FAIscript to ldap*/ - $ldap->cd(preg_replace('/^[^,]+,[^,]+,/', '', $this->dn)); - $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); - $ldap->cd($this->dn); - $ldap->add($this->attrs); - } + prepare_to_save_FAI_object($this->dn,$this->attrs); show_ldap_error($ldap->get_error(), sprintf(_("Saving of FAI/variable with dn '%s' failed."),$this->dn)); /* Do object tagging */ @@ -348,31 +358,16 @@ class faiVariable extends plugin } } } - + if($obj['status'] == "delete"){ - $ldap->cd($sub_dn); - $ldap->rmdir_recursive($sub_dn); + prepare_to_save_FAI_object($sub_dn,array(),true); $this->handle_post_events("remove"); - show_ldap_error($ldap->get_error(), sprintf(_("Removing of FAI/variable with dn '%s' failed."),$sub_dn)); }elseif($obj['status'] == "edited"){ - $ldap->cd($sub_dn); - $this->cleanup(); - $ldap->modify ($tmp); - + prepare_to_save_FAI_object($sub_dn,$tmp); $this->handle_post_events("modify"); - show_ldap_error($ldap->get_error(), sprintf(_("Saving of FAI/variable with dn '%s' failed."),$sub_dn)); }elseif($obj['status']=="new"){ - - if($tmp['description'] == array()){ - unset($tmp['description']); - } - - $ldap->cd(preg_replace('/^[^,]+,[^,]+,/', '', $sub_dn)); - $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $sub_dn)); - $ldap->cd($sub_dn); - $ldap->add($tmp); + prepare_to_save_FAI_object($sub_dn,$tmp); $this->handle_post_events("add"); - show_ldap_error($ldap->get_error(), sprintf(_("Saving of FAI/variable with dn '%s' failed."),$sub_dn)); } $this->handle_object_tagging($sub_dn, $this->gosaUnitTag); -- 2.30.2