Code

Large translation update
[gosa.git] / plugins / admin / systems / class_systemManagement.inc
index c3ee3c88dd65c38d54b4795a70e49b31fa5b597a..adcb5b6bee0da4dbe5c68481797110a4a43b30c0 100644 (file)
@@ -109,9 +109,6 @@ class systems extends plugin
       $s_entry  = $_GET['id'];
     }
 
-    /* Save Termfilter .... */
-    $this->reload();
-
     /* Check for exeeded sizelimit */
     if (($message= check_sizelimit()) != ""){
       return($message);
@@ -183,7 +180,7 @@ class systems extends plugin
 
       /* Find out more about the object type */
       $ldap= $this->config->get_ldap_link();
-      $ldap->cat($this->dn);
+      $ldap->cat($this->dn, array('objectClass'));
       $attrs= $ldap->fetch();
       $type= $this->get_system_type($attrs['objectClass']);
 
@@ -330,7 +327,7 @@ class systems extends plugin
 
         /* Find out more about the object type */
         $ldap= $this->config->get_ldap_link();
-        $ldap->cat($this->dn);
+        $ldap->cat($this->dn, array('objectClass'));
         $attrs= $ldap->fetch();
         $type= $this->get_system_type($attrs['objectClass']);
 
@@ -369,7 +366,6 @@ class systems extends plugin
         $this->systab= NULL;
 
         /* Terminal list has changed, reload it. */
-        $this->reload ();
       } else {
 
         /* Normally this shouldn't be reached, send some extra
@@ -424,7 +420,7 @@ class systems extends plugin
             $ldap = $this->config->get_ldap_link();
           }
           $ldap->cd ($this->dn);
-          $ldap->cat($this->dn);  
+          $ldap->cat($this->dn, array('dn'));  
           if(count($ldap->fetch())){
             $ldap->cd($this->dn);
             $ldap->rmDir($this->dn);
@@ -438,9 +434,6 @@ class systems extends plugin
           del_lock ($this->dn);
         }
 
-        /* There's no page reload so we have to read new terminals at
-           this point. */
-        $this->reload ();
         unset ($this->systab);
         $this->systab= NULL;
         unset($_SESSION['objectinfo']);
@@ -490,6 +483,12 @@ class systems extends plugin
 
     /* Display dialog with system list */
     $this->DivListSystem->execute();
+
+    /* Add departments if subsearch is disabled */
+    if(!$this->DivListSystem->SubSearch){
+      $this->DivListSystem->AddDepartments($this->DivListSystem->selectedBase);
+    }
+    $this->reload();
     $this->DivListSystem->setEntries($this->terminals);
     return($this->DivListSystem->Draw());
   }
@@ -574,13 +573,20 @@ class systems extends plugin
 
     /* Walk through all possible search combinations, and search for some objects if the checkbox is enabled  */
     foreach($objs as $checkBox => $oc){
-
       if($this->DivListSystem->$checkBox){
-        /* User filter? */
-        if($oc['CLASS'] != ""){
-          $filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))";
-          $res = array_merge($res,get_list($filter,$this->ui->subtreeACL, $oc['TREE'].$base,
-                array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), GL_NONE));
+        if($this->DivListSystem->SubSearch){
+          if($oc['CLASS'] != ""){
+            $filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))";
+            $res = array_merge($res,get_list($filter,$this->ui->subtreeACL, $base,
+                  array("cn", "description", "macAddress", "objectClass", "sambaDomainName", "FAIstate"), GL_NONE | GL_SUBSEARCH | GL_SIZELIMIT));
+          }
+        }else{
+          /* User filter? */
+          if($oc['CLASS'] != ""){
+            $filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))";
+            $res = array_merge($res,get_list($filter,$this->ui->subtreeACL, $oc['TREE'].$base,
+                  array("cn", "description", "macAddress", "objectClass", "sambaDomainName", "FAIstate"), GL_NONE | GL_SIZELIMIT));
+          }
         }
       } 
     }
@@ -588,7 +594,7 @@ class systems extends plugin
     /* Search for incoming objects */ 
     $filter = "(|(&".$userregex."(objectClass=goHard)(cn=".$this->DivListSystem->Regex.")))";
     $res = array_merge($res,get_list($filter,$this->ui->subtreeACL, "ou=incoming,".$base,
-          array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), GL_NONE));
+          array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), GL_NONE | GL_SIZELIMIT));
 
     /* Get all gotoTerminal's */
     foreach ($res as $value){
@@ -605,11 +611,11 @@ class systems extends plugin
 
       /* check if current object is a new one */
       if (preg_match ("/,ou=incoming,/i", $tmp)){
-        if (in_array('gotoTerminal', $value['objectClass'])){
+        if (in_array_ics('gotoTerminal', $value['objectClass'])){
           $add= "- "._("New terminal");
-        }elseif (in_array('gotoWorkstation', $value['objectClass'])){
+        }elseif (in_array_ics('gotoWorkstation', $value['objectClass'])){
           $add= "- "._("New workstation");
-        }elseif (in_array('GOhard', $value['objectClass'])){
+        }elseif (in_array_ics('GOhard', $value['objectClass'])){
           $add= "- "._("New Device");
         }
       } 
@@ -617,7 +623,7 @@ class systems extends plugin
       /* Detect type of object and create an entry for $this->terminals */
       $terminal = array();
       if ((in_array ($tmp, $responsible)) || ($add != "")){
-        if (in_array('gotoTerminal', $value["objectClass"])){
+        if (in_array_ics('gotoTerminal', $value["objectClass"])){
           if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){
             $terminal             = $value;
             $terminal['type']     = "T";
@@ -628,7 +634,7 @@ class systems extends plugin
             $terminal['message']  = _("Terminal template for");
             $terminal['location'] = array_search($tmp, $this->config->departments); 
           }
-        } elseif (in_array('gotoWorkstation', $value["objectClass"])){
+        } elseif (in_array_ics('gotoWorkstation', $value["objectClass"])){
           if (isset($value["macAddress"][0]) &&  $value["macAddress"][0] != "-"){
             $terminal             = $value;
             $terminal['type']     = "L";
@@ -639,20 +645,26 @@ class systems extends plugin
             $terminal['location'] = array_search($tmp, $this->config->departments);
             $terminal['message']  = _("Workstation template for");
           }
-        } elseif (in_array('gotoPrinter', $value["objectClass"])){
+          if (isset($value["FAIstate"][0])){
+            $terminal['type']= $this->getState($terminal['type'], $value["FAIstate"][0]);
+          }
+        } elseif (in_array_ics('gotoPrinter', $value["objectClass"])){
           $terminal             = $value;
           $terminal['type']     = "P";
-        } elseif (in_array('goServer', $value["objectClass"])){
+        } elseif (in_array_ics('goServer', $value["objectClass"])){
           $terminal             = $value;
           $terminal['type']     = "S";
-        } elseif (in_array('goFonHardware', $value["objectClass"])){
+          if (isset($value["FAIstate"][0])){
+            $terminal['type']= $this->getState($terminal['type'], $value["FAIstate"][0]);
+          }
+        } elseif (in_array_ics('goFonHardware', $value["objectClass"])){
           $terminal             = $value;
           $terminal['type']     = "F";
-        }elseif (in_array("GOhard",$value['objectClass'])){
+        }elseif (in_array_ics("GOhard",$value['objectClass'])){
           $terminal = $value;
           $terminal['type']   = "Q";
           $terminal['is_new'] = $add;
-        } elseif (in_array('ieee802Device', $value["objectClass"])){
+        } elseif (in_array_ics('ieee802Device', $value["objectClass"])){
           $terminal             = $value;
           $terminal['type']     = "C";
         } else{
@@ -693,22 +705,22 @@ class systems extends plugin
   function get_system_type($classes)
   {
     $type= "";
-    if (in_array('ieee802Device', $classes)){
+    if (in_array_ics('ieee802Device', $classes)){
       $type= "component";
-    }elseif (in_array('gotoTerminal', $classes)){
+    }elseif (in_array_ics('gotoTerminal', $classes)){
       $type= "terminal";
-    }elseif (in_array('gotoWorkstation', $classes)){
+    }elseif (in_array_ics('gotoWorkstation', $classes)){
       $type= "workstation";
-    }elseif (in_array('gotoPrinter', $classes)){
+    }elseif (in_array_ics('gotoPrinter', $classes)){
       $type= "printer";
-    }elseif (in_array('goFonHardware', $classes)){
+    }elseif (in_array_ics('goFonHardware', $classes)){
       $type= "phone";
-    }elseif (in_array('goServer', $classes)){
+    }elseif (in_array_ics('goServer', $classes)){
       $type= "server";
-    }elseif (in_array('GOhard', $classes)){
+    }elseif (in_array_ics('GOhard', $classes)){
       $type= "NewDevice";
-    }elseif (in_array('sambaAccount', $classes) ||
-        in_array('sambaSamAccount', $classes)){
+    }elseif (in_array_ics('sambaAccount', $classes) ||
+        in_array_ics('sambaSamAccount', $classes)){
       $type= "winstation";
     }
     return ($type);
@@ -723,8 +735,14 @@ class systems extends plugin
         "D" => array("select_default.png",_("Template")),
         "T" => array("select_terminal.png",_("Terminal")),
         "L" => array("select_workstation.png",_("Workstation")),
+        "GL" => array("select_workstation_green.png",_("Workstation is installing")),
+        "YL" => array("select_workstation_yellow.png",_("Workstation is waiting for action")),
+        "RL" => array("select_workstation_red.png",_("Workstation installation failed")),
         "F" => array("select_phone.png",_("Phone")),
         "S" => array("select_server.png",_("Server")),
+        "GS" => array("select_server_green.png",_("Server is installing")),
+        "YS" => array("select_server_yellow.png",_("Server is waiting for action")),
+        "RS" => array("select_server_red.png",_("Server installation failed")),
         "W" => array("select_winstation.png",_("Winstation")),
         "C" => array("select_component.png",_("Network Device")),
         "NT"=> array("select_new_terminal.png",_("New Terminal")),
@@ -743,6 +761,31 @@ class systems extends plugin
     }
   }
 
+  
+  function getState($type, $state)
+  {
+    switch (preg_replace('/:.*$/', '', $state)) {
+      case 'installing':
+                $type= 'G'.$type;
+                break;
+      case 'error':
+                $type= 'R'.$type;
+                break;
+      case 'install':
+                $type= 'Y'.$type;
+                break;
+      case 'sysinfo':
+                $type= 'Y'.$type;
+                break;
+      case 'softupdate':
+                $type= 'Y'.$type;
+                break;
+    }
+
+
+    return ($type);
+  }
+
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: