Code

More speed optimizations
[gosa.git] / plugins / admin / groups / class_groupApplication.inc
index 8644c88b0077101d8a1d8ccac8ce0e06bc9aed94..4a4fde162c069a21fe595b08f4b95b940961ac92 100644 (file)
@@ -39,7 +39,7 @@ class appgroup extends plugin
   var $gosaApplicationParameter ;
 
 
-  function appgroup ($config, $dn= NULL)
+  function appgroup ($config, $dn= NULL, $parent= NULL)
   {
    
     /* prepare group app for release management */ 
@@ -50,7 +50,7 @@ class appgroup extends plugin
       $this->attributes[] =  "FAIrelease";
     }
 
-    plugin::plugin ($config, $dn);
+    plugin::plugin ($config, $dn, $parent);
 
     /* In some case of old applikations with old release tag saving, we 
         must reassign is_account state.
@@ -371,7 +371,6 @@ class appgroup extends plugin
     /* Call parent execute */
     plugin::execute();
 
-
     if((isset($_GET['act']))&&($_GET['act']=="depopen")){
       $dep = base64_decode($_GET['depid']);  
       if(isset($this->config->idepartments[$dep])){
@@ -455,9 +454,15 @@ class appgroup extends plugin
 
         foreach($this->gosaMemberApplication as $key =>  $cat){
           foreach($cat as $key2 => $app){
+            
             if($app['App'] == $val){
               unset($this->gosaMemberApplication[$key][$key2]);
               if(isset($this->used_apps[$val])){
+                foreach($this->getParameters($val) as $para){
+                  if(isset($this->appoption[$para])){
+                    unset($this->appoption[$para]);
+                  }
+                }
                 unset($this->used_apps[$val]);
               }
             }
@@ -999,6 +1004,27 @@ class appgroup extends plugin
     $this->is_modified= TRUE;
   }
 
+  function getParameters($app)
+  {
+    $tmp = $this->getReleases();
+    $ret = array();
+    if(in_array($this->FAIrelease,$tmp)){
+      $tmp2 = array_flip($tmp);
+      $base = $tmp2[$this->FAIrelease];
+      $ldap = $this->config->get_ldap_link();
+      $ldap->cd($this->config->current['BASE']);
+      $ldap->search("(&(objectClass=gosaApplication)(cn=".$app.")(gosaApplicationParameter=*))",array("gosaApplicationParameter"));
+      if($ldap->count()){
+        $attrs = $ldap->fetch();
+        for($i = 0 ; $i < $attrs['gosaApplicationParameter']['count'] ; $i ++ ){
+          $name = preg_replace("/:.*$/","",$attrs['gosaApplicationParameter'][$i]);
+          $ret[$name] = $name;
+        } 
+      }
+    }
+    return($ret);
+  }
+
   function GetSubdirs($dir)
   {
     $ret = array();