From 2c967c90a261942c4d277735cb00cba308c24e3d Mon Sep 17 00:00:00 2001 From: psc Date: Thu, 4 Mar 2010 13:53:38 +0000 Subject: [PATCH] Apply patch for #3716 Fix inconsistent class display: - Show scripts that are inheritted from a parent release - Add a new function FAI::get_leaf_objects that gets a list of class leaf objects which are part of the given class in the current release and its parents - faiScript: Use get_leaf_objects to find leaf objects - faiTemplate: Use get_leaf_objects to find leaf objects - faiVariable: Use get_leaf_objects to find leaf objects - faiPartitionTable: use get_leaf_objects to find leaf objects git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.6-lhm@16071 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../gosa-plugins/fai/admin/fai/class_FAI.inc | 27 +++++++++++++++++++ .../fai/admin/fai/class_faiHook.inc | 10 ++----- .../fai/admin/fai/class_faiPartitionTable.inc | 13 +++------ .../fai/admin/fai/class_faiScript.inc | 9 ++----- .../fai/admin/fai/class_faiTemplate.inc | 6 +---- .../fai/admin/fai/class_faiVariable.inc | 2 +- 6 files changed, 36 insertions(+), 31 deletions(-) diff --git a/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc b/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc index a15326022..1d2ead0c1 100644 --- a/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc +++ b/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc @@ -1421,6 +1421,33 @@ class FAI return false; } + static function get_leaf_objects($dn, $cn, $subclass, $rdn) { + $valid_releases = FAI::get_previous_releases_of_this_release(FAI::get_release_dn($dn), true); + /* Remove the last release DN */ + array_pop($valid_releases); + $valid_releases[] = FAI::get_release_dn($dn); + + $objects = FAI::get_all_objects_for_given_base($dn,"(&(objectClass=FAIclass)(objectClass=".$subclass."))"); + $res = array(); + /* Strip elements which are not a leaf object of the current dn */ + foreach($objects as $obj){ + $keep = FALSE; + foreach($valid_releases as $valid_release) { + if (preg_match("/cn=".$cn.",".$rdn.$valid_release."$/", $obj['dn'])) { + $keep = TRUE; + break; + } + } + + if ($keep) { + $res[] = $obj; + } + } + + return $res; + } + + } diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc index 3fdd7070f..281b3d6be 100644 --- a/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc @@ -43,15 +43,9 @@ class faiHook extends plugin */ if($dn != "new"){ $this->dn =$dn; - - /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) - */ - $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); - foreach($res as $obj){ - - /* Skip not relevant objects */ - if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; + $res = FAI::get_leaf_objects($this->dn, $this->cn, $this->subClass, get_ou('faiHookRDN')); + foreach($res as $obj){ $objects = array(); $objects['status'] = "FreshLoaded"; $objects['dn'] = $obj['dn']; diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc index bd43bd769..596e4ba0e 100644 --- a/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc @@ -38,12 +38,8 @@ class faiPartitionTable extends plugin /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) */ - $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=FAIpartitionDisk))"); + $res = FAI::get_leaf_objects($this->dn, $this->cn, "FAIpartitionDisk", get_ou('faiPartitionRDN')); foreach($res as $obj){ - - /* Skip not relevant objects */ - if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; - $objects = array(); $objects['description'] = ""; $objects['status'] = "edited"; @@ -56,12 +52,9 @@ class faiPartitionTable extends plugin /* read all partitions for each disk */ foreach($this->disks as $name => $disk){ - $res = FAI::get_all_objects_for_given_base($disk['dn'],"(&(objectClass=FAIclass)(objectClass=FAIpartitionEntry))"); - foreach($res as $obj){ - - /* Skip not relevant objects */ - if(!preg_match("/".preg_quote($disk['dn'], '/')."$/i",$obj['dn'])) continue; + $res = FAI::get_leaf_objects($disk['dn'], $name, "FAIpartitionEntry", "cn=".$this->cn.",".get_ou('faiPartitionRDN')); + foreach($res as $obj){ $objects = array(); $objects['status'] = "edited"; $objects['dn'] = $obj['dn']; diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc index a604bd4b0..b2a253e93 100644 --- a/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc @@ -49,14 +49,9 @@ class faiScript extends plugin if($dn != "new"){ $this->dn =$dn; - /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) - */ - $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); - foreach($res as $obj){ - - /* Skip not relevant objects */ - if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; + $res = FAI::get_leaf_objects($this->dn, $this->cn, $this->subClass, get_ou('faiScriptRDN')); + foreach($res as $obj){ $objects = array(); $objects['status'] = "FreshLoaded"; $objects['dn'] = $obj['dn']; diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc index 0b3875d9c..689d5464b 100644 --- a/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc @@ -48,12 +48,8 @@ class faiTemplate extends plugin /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) */ - $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + $res = FAI::get_leaf_objects($this->dn, $this->cn, $this->subClass, get_ou('faiTemplateRDN')); foreach($res as $obj){ - - /* Skip not relevant objects */ - if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; - $objects = array(); $objects['status'] = "FreshLoaded"; $objects['dn'] = $obj['dn']; diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc index c8d3f21aa..372dac4dd 100644 --- a/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc @@ -43,7 +43,7 @@ class faiVariable extends plugin /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) */ - $res = FAI::get_all_objects_for_given_object($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + $res = FAI::get_leaf_objects($this->dn, $this->cn, $this->subClass, get_ou('faiVariableRDN')); foreach($res as $obj){ $objects = array(); $objects['description'] = ""; -- 2.30.2