Code

Added (partly) working fai tagging
authorcajus <cajus@594d385d-05f5-0310-b6e9-bd551577e9d8>
Wed, 10 May 2006 08:06:11 +0000 (08:06 +0000)
committercajus <cajus@594d385d-05f5-0310-b6e9-bd551577e9d8>
Wed, 10 May 2006 08:06:11 +0000 (08:06 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@3254 594d385d-05f5-0310-b6e9-bd551577e9d8

16 files changed:
TODO
include/class_plugin.inc
plugins/admin/fai/class_faiHook.inc
plugins/admin/fai/class_faiPackage.inc
plugins/admin/fai/class_faiPartitionTable.inc
plugins/admin/fai/class_faiProfile.inc
plugins/admin/fai/class_faiScript.inc
plugins/admin/fai/class_faiTemplate.inc
plugins/admin/fai/class_faiVariable.inc
plugins/admin/fai/tabsHook.inc
plugins/admin/fai/tabsPackage.inc
plugins/admin/fai/tabsPartition.inc
plugins/admin/fai/tabsProfile.inc
plugins/admin/fai/tabsScript.inc
plugins/admin/fai/tabsTemplate.inc
plugins/admin/fai/tabsVariable.inc

diff --git a/TODO b/TODO
index f5be5bc5f59ee94281bcc2247906b4d7049947bc..0bea1534b7e0d577d74004b31c7921a200da7d37 100644 (file)
--- a/TODO
+++ b/TODO
@@ -27,9 +27,14 @@ Target for 2.4.1:
 * Auto-Resize for subdialogs
 
 
-* Fix fai objects to generate tags if needed (sub objects)
-
+Now:
+* Add iframe progress for departments when handling tagging
 * What about unitTag's when moving objects?
+  - ok for departments - everything is copied here anyway
+  - single object moving has to be checked
+* Check several ldap->cat() for needed attributes
+* Enhance show_ldap_error() with an additional programmer supplied message
+* New FAI package lists have a problem
 
 
 Target for 2.5:
index 7884026d7b31a94f131b3c3f7e1117f98d5c2970..81e317daa5d5f0daa22c1c1e5f06929000994f28 100644 (file)
@@ -83,6 +83,8 @@ class plugin
    */
   var $attrs= array();
 
+  /* Save unit tags */
+  var $gosaUnitTag= "";
 
   /*!
     \brief Used standard values
@@ -130,13 +132,17 @@ class plugin
 
       /* Copy needed attributes */
       foreach ($this->attributes as $val){
-        #if (isset($this->attrs["$val"][0])){
         $found= array_key_ics($val, $this->attrs);
         if ($found != ""){
           $this->$val= $this->attrs["$found"][0];
         }
       }
 
+      /* gosaUnitTag loading... */
+      if (isset($this->attrs['gosaUnitTag'][0])){
+        $this->gosaUnitTag= $this->attrs['gosaUnitTag'][0];
+      }
+
       /* Set the template flag according to the existence of objectClass
          gosaUserTemplate */
       if (isset($this->attrs['objectClass'])){
@@ -851,10 +857,9 @@ class plugin
 
   function handle_object_tagging($dn= "", $tag= "")
   {
-    /* Skip if nothing has changed */
-    if ($dn == "" && !$this->is_modified){
-      return;
-    }
+    //FIXME: How to optimize this? We have at least two
+    //       LDAP accesses per object. It would be a good
+    //       idea to have it integrated.
   
     /* No dn? Self-operation... */
     if ($dn == ""){
@@ -864,7 +869,7 @@ class plugin
       if ($tag == ""){
         $len= strlen($dn);
 
-        echo "No tag for $dn - looking for one...<br>";
+        echo "DEBUG: No tag for $dn - looking for one...<br>";
         $relevant= array();
         foreach ($this->config->adepartments as $key => $ntag){
 
@@ -875,7 +880,7 @@ class plugin
 
           /* This one matches with the latter part. Break and don't fix this entry */
           if (preg_match('/(^|,)'.normalizePreg($key).'$/', $dn)){
-            echo "Possibly relevant: $key<br>";
+            echo "DEBUG: Possibly relevant: $key<br>";
             $relevant[strlen($key)]= $ntag;
             continue;
           }
@@ -896,12 +901,15 @@ class plugin
 
     /* Set tag? */
     if ($tag != ""){
-      echo "Add tagging ($tag) to $dn.<br>";
-
       /* Set objectclass and attribute */
       $ldap= $this->config->get_ldap_link();
       $ldap->cat($dn);
       $attrs= $ldap->fetch();
+      if(isset($attrs['gosaUnitTag'][0]) && $attrs['gosaUnitTag'][0] == $tag){
+        echo "DEBUG: $dn is already tagged<br>";
+        return;
+      }
+      echo "DEBUG: Add tagging ($tag) to $dn.<br>";
       $nattrs= array("gosaUnitTag" => $this->gosaUnitTag);
       $nattrs['objectClass']= array();
       for ($i= 0; $i<$attrs['objectClass']['count']; $i++){
@@ -913,16 +921,17 @@ class plugin
       $nattrs['objectClass'][]= "gosaAdministrativeUnitTag";
       $ldap->cd($dn);
       $ldap->modify($nattrs);
-      if ($ldap->error != "Success"){
-        print_red($ldap->get_error());
-      }
+      
     } else {
-      echo "Remove tagging from $dn.<br>";
-
       /* Remove objectclass and attribute */
       $ldap= $this->config->get_ldap_link();
       $ldap->cat($dn);
       $attrs= $ldap->fetch();
+      if (!in_array_ics("gosaAdministrativeUnitTag", $attrs['objectClass'])){
+        echo "DEBUG: $dn is not tagged<br>";
+        return;
+      }
+      echo "DEBUG: Remove tagging from $dn.<br>";
       $nattrs= array("gosaUnitTag" => array());
       $nattrs['objectClass']= array();
       for ($i= 0; $i<$attrs['objectClass']['count']; $i++){
@@ -933,9 +942,7 @@ class plugin
       }
       $ldap->cd($dn);
       $ldap->modify($nattrs);
-      if ($ldap->error != "Success"){
-        print_red($ldap->get_error());
-      }
+      show_ldap_error($ldap->get_error());
     }
     
   }
index 7ef96f62d0d0d2fddc3b20da324a1aa876fa4960..3fba9649cb826bbe96ba91b513e24ebe9ed7b38b 100644 (file)
@@ -381,6 +381,12 @@ class faiHook extends plugin
     }
     show_ldap_error($ldap->get_error()); 
 
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error()); 
+
+    $ldap->cd($this->dn);
+
     /* Prepare FAIscriptEntry to write it to ldap
      * First sort array.
      *  Because we must delete old entries first.
@@ -447,6 +453,7 @@ class faiHook extends plugin
         $ldap->add($tmp); 
         $this->handle_post_events("add");
       }
+      $this->handle_object_tagging($sub_dn, $this->gosaUnitTag);
       show_ldap_error($ldap->get_error()); 
     }
   }
index 7e72481f99b84beb4fe34b651cc44e2977d07add..f634e130506c898c5dbf814c7f8d308cd9e889ba 100644 (file)
@@ -459,6 +459,11 @@ class faiPackage extends plugin
     }
     show_ldap_error($ldap->get_error());
 
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error());
+    $ldap->cd($this->dn);
+
     /* Save Package configurations */
     foreach($this->ConfiguredPackages as $pkgname => $attrs){
       foreach($attrs as $name => $attr){
@@ -489,6 +494,9 @@ class faiPackage extends plugin
           $ldap->add($pkgattrs);
         }
         show_ldap_error($ldap->get_error());
+
+        /* Handle tagging */
+        $this->handle_object_tagging($pkgdn, $this->gosaUnitTag);
       }
     }
 
index 3e44dcbf3df6f208113de7d6eedbef764744afcc..50a9bb1cd63dfab112d54238721f30477a33f066 100644 (file)
@@ -349,6 +349,9 @@ $ldap->modify ($this->attrs);
       show_ldap_error($ldap->get_error());
     }
   
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error());
   
     /* Sort entries, because we must delete entries with status="delete" first */
     $order = array();
@@ -386,7 +389,7 @@ $ldap->modify ($this->attrs);
         }
         $ldap->cd($disk_dn);
         $this->cleanup();
-$ldap->modify ($disk_attrs); 
+        $ldap->modify ($disk_attrs); 
 
       }elseif($disk['status']== "new"){
         if(empty($disk_attrs['description'])){
@@ -401,6 +404,9 @@ $ldap->modify ($disk_attrs);
       }
 
       show_ldap_error($ldap->get_error());
+      $this->handle_object_tagging($disk_dn, $this->gosaUnitTag);
+      show_ldap_error($ldap->get_error());
+
       if($disk['status']!="delete")
       /* Add all partitions */
       foreach($disk['partitions'] as $key => $partition){
@@ -452,7 +458,10 @@ $ldap->modify ($disk_attrs);
 $ldap->modify ($partition_attrs); 
 
         } 
-      show_ldap_error($ldap->get_error());
+        show_ldap_error($ldap->get_error());
+
+        $this->handle_object_tagging($partition_dn, $this->gosaUnitTag);
+        show_ldap_error($ldap->get_error());
       }
     }
     $this->handle_post_events("add");
index 2afb1e596a85c6dde715c32a05502e9fbee04f5f..a3976d254e099afc1c05d757d3add7badb22c478 100644 (file)
@@ -427,6 +427,10 @@ $ldap->modify ($this->attrs);
       $ldap->add($this->attrs);
     }
     show_ldap_error($ldap->get_error());
+
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error());
   }
 }
 
index 9184d4a25305777080730d1e1c74d30bd67f2a82..c614aa04c8d9e32eeaed08ca6bff74c915eb0a4e 100644 (file)
@@ -352,6 +352,10 @@ class faiScript extends plugin
     }
     show_ldap_error($ldap->get_error());
 
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error());
+
     /* Prepare FAIscriptEntry to write it to ldap
      * First sort array.
      *  Because we must delete old entries first.
@@ -426,6 +430,9 @@ class faiScript extends plugin
         $this->handle_post_events("add");
       }
       show_ldap_error($ldap->get_error()); 
+
+      $this->handle_object_tagging($sub_dn, $this->gosaUnitTag);
+      show_ldap_error($ldap->get_error());
     }
   }
 }
index bcaabc0ec0478ce801d1a2bddc3060ca3bed5e07..9ba26c6496b89a5464ce9b30ffd237f0d199d7fa 100644 (file)
@@ -324,6 +324,10 @@ class faiTemplate extends plugin
     }
     show_ldap_error($ldap->get_error());
 
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error());
+
     /* Prepare FAIscriptEntry to write it to ldap
      * First sort array.
      *  Because we must delete old entries first.
@@ -372,7 +376,7 @@ class faiTemplate extends plugin
       }elseif($obj['status'] == "edited"){
         $ldap->cd($sub_dn);
         $this->cleanup();
-$ldap->modify ($tmp); 
+        $ldap->modify ($tmp); 
 
         $this->handle_post_events("modify");
       }elseif($obj['status']=="new"){
@@ -387,6 +391,9 @@ $ldap->modify ($tmp);
         $this->handle_post_events("add");
       }
       show_ldap_error($ldap->get_error()); 
+
+      $this->handle_object_tagging($sub_dn, $this->gosaUnitTag);
+      show_ldap_error($ldap->get_error()); 
     }
   }
 }
index f0949890e14ea2aa1469139846b6845a96264108..4a901123ea6128c0fc6f4884ff01dce789cb74d6 100644 (file)
@@ -293,6 +293,10 @@ $ldap->modify ($this->attrs);
     }
     show_ldap_error($ldap->get_error());
  
+    /* Do object tagging */
+    $this->handle_object_tagging();
+    show_ldap_error($ldap->get_error());
     /* Prepare FAIscriptEntry to write it to ldap
      * First sort array.
      *  Because we must delete old entries first.
@@ -358,6 +362,9 @@ $ldap->modify ($tmp);
         $this->handle_post_events("add");
       }
       show_ldap_error($ldap->get_error()); 
+
+      $this->handle_object_tagging($sub_dn, $this->gosaUnitTag);
+      show_ldap_error($ldap->get_error()); 
     }
   }
 }
index c097e7afe24d6d4587452d266466c1ea37c18fd2..c16313fe22f23de96f3554959d8533c68e7f7293 100644 (file)
@@ -39,9 +39,6 @@ class tabsHook extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }
index 44b99d69ff947231d4c03fcf58a5ecfb22d1a362..21b2fb48bd299c8d753b0d6d844fff0d1d55c19a 100644 (file)
@@ -38,9 +38,6 @@ class tabsPackage extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }
index 5c44b82a721b98f3f082b92479f17bb90b6635d1..c18779abe68b661eecf0b171680ee804a4efba94 100644 (file)
@@ -39,9 +39,6 @@ class tabsPartition extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }
index a63ac91660b92a468dbe44b9d266220bc940446a..3131a1dbe63c4c791e5802e7e86107e11b2c3ab0 100644 (file)
@@ -39,9 +39,6 @@ class tabsProfile extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }
index 177e88a8e3bb33ede7d8fa3129dc707cb3876f44..22a34d2c9690ceac786eca76a8caa68a85773dc6 100644 (file)
@@ -39,9 +39,6 @@ class tabsScript extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }
index 142a4a5811e316059e87be5e5610c6d9d1d14995..28851dbaf6f0b45d6fcced868a68ba6fa0bfe052 100644 (file)
@@ -39,9 +39,6 @@ class tabsTemplate extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }
index e2b59917e7923a19db5c0f751986eff179926a53..c41a7f78c307c4fe012b238f00a7df70b3df376b 100644 (file)
@@ -39,9 +39,6 @@ class tabsVariable extends tabs
        $this->dn= $new_dn;
 
        tabs::save(TRUE);
-
-       /* Fix tagging if needed */
-       $baseobject->handle_object_tagging();
   }
 
 }