Code

Revert 13752 because it might cause data loss
[gosa.git] / trunk / gosa-plugins / fai / admin / fai / class_FAI.inc
index fd58da5b07fd25f17917bd75ff504a8706fa1d89..7cfb966cc671c30d73154f39b713594989842182 100644 (file)
@@ -571,14 +571,22 @@ class FAI
     /* Collect some basic informations and initialize some variables */ 
     $base_release       = FAI::get_release_dn($Current_DN);
     $previous_releases  = array_reverse(FAI::             get_previous_releases_of_this_release($base_release,true));
+    $sub_releases       = array_keys(FAI::get_sub_releases_of_this_release($base_release,false));
     $Kill = array();
     $Skip = array();
 
     /* We must also include the given release dn */
     $previous_releases[] = $base_release;
 
+    /* Merge parent, current and child releases into one big release to 
+       iterate over */
+    $all_releases = $previous_releases;
+    foreach($sub_releases as $sub_release){
+      $all_releases[] = $sub_release;
+    }
+
     /* Walk through all releases */
-    foreach($previous_releases as $release){
+    foreach($all_releases as $release){
 
       /* Get fai departments */
       $deps_to_search = FAI::get_FAI_departments($release); 
@@ -640,6 +648,9 @@ class FAI
     $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dn));
     $ldap->cd($dn);
 
+    $ui= get_userinfo();
+    FAI::tag_attrs($attrs, $dn, $ui->gosaUnitTag);
+
     $ldap->cat($dn,array("dn"));
     if($ldap->count()){
 
@@ -1233,6 +1244,33 @@ class FAI
     }
     return("");
   }
+
+
+  static function tag_attrs(&$at, $dn= "", $tag= "", $show= false)
+  {                                                        
+    /* Remove tags that may already be here... */                         
+    remove_objectClass("gosaAdministrativeUnitTag", $at);                 
+    if (isset($at['gosaUnitTag'])){                                       
+        unset($at['gosaUnitTag']);                                        
+    }                                                                     
+
+    /* Set tag? */
+    if ($tag != ""){
+      add_objectClass("gosaAdministrativeUnitTag", $at);
+      $at['gosaUnitTag']= $tag;                         
+    }                                                   
+
+    /* Initially this object was tagged. 
+       - But now, it is no longer inside a tagged department. 
+       So force the remove of the tag.                        
+       (objectClass was already removed obove)                
+     */                                                       
+    if($tag == ""){                     
+      $at['gosaUnitTag'] = array();                           
+    }                                                         
+  }                                                           
+
+
 }