Code

Moved to new base selector
[gosa.git] / gosa-plugins / systems / admin / systems / class_filterSYSTEMS.inc
index 4489bdeba96e6b3b659c95ef5b4b39ad4b9fb059..bb01370f966603ac9c37eabb0b499655db816fc1 100644 (file)
@@ -5,6 +5,10 @@ class filterSYSTEMS {
   static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
   {
     $ui = get_userinfo();
+    global $config;
+
+    // Check whether the arp handling active or not
+    $arp_handling_active = ($config->search("ArpNewDevice","CLASS",array('tabs')) != "");
 
     $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
     foreach($entries as $key => $entry){
@@ -17,7 +21,9 @@ class filterSYSTEMS {
         }elseif(in_array('gotoTerminal', $entry['objectClass'])){
           $entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
           $entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
-        }elseif(in_array('GOhard', $entry['objectClass']) && !isset($entry['gotoMode'][0])){ 
+        }elseif($arp_handling_active && 
+            in_array('GOhard', $entry['objectClass']) && 
+            !isset($entry['gotoMode'][0])){ 
           $entries[$key]['objectClass'][] = 'FAKE_OC_ArpNewDevice';
           $entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
         }elseif(in_array('GOhard', $entry['objectClass'])){
@@ -32,7 +38,8 @@ class filterSYSTEMS {
       // Detect Workstation & templates
       }elseif(in_array('gotoWorkstation', $entry['objectClass'])){
         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
-          $entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
+          continue; // We do not need templates anymore, we've ogroups now.
+          //$entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
         }
         $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
         if(preg_match("/w/",$pwd_acl)){
@@ -42,7 +49,8 @@ class filterSYSTEMS {
       // Detect Terminal & templates
       }elseif(in_array('gotoTerminal', $entry['objectClass'])){
         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
-          $entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
+          continue; // We do not need templates anymore, we've ogroups now.
+          //$entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
         }
         $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
         if(preg_match("/w/",$pwd_acl)){
@@ -52,7 +60,8 @@ class filterSYSTEMS {
       // Detect Server & templates
       }elseif(in_array('goServer', $entry['objectClass'])){
         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
-          $entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
+          continue; // We do not need templates anymore, we've ogroups now.
+          //$entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
         }
         $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
         if(preg_match("/w/",$pwd_acl)){
@@ -100,6 +109,12 @@ class filterSYSTEMS {
         class_available('opsi') &&
         $base == $config->current['BASE']){
 
+      // Get filter regex ...
+      $regex = "";
+      if(preg_match("/\(cn=[^\)\$]*\)/", $filter)){
+        $regex = trim(preg_replace("/^.*\(cn=([^\)\$]*)\).*$/","\\1", $filter),"* ");
+      }
+
       // Check ACLs and opsi handle
       $opsi_acl = $ui->get_permissions($base,"opsi/opsiProperties");
       $opsi = new opsi($config);
@@ -112,13 +127,15 @@ class filterSYSTEMS {
           msg_dialog::display(_("Error"),msgPool::siError($opsi->get_error()),ERROR_DIALOG);
         }else{
           foreach($opsi_clients as $entry){
-            $entry['objectClass'] = array("FAKE_OC_OpsiHost");
-            $item = array('count' => count($entry));
-            foreach($entry as  $name => $value){
-              $item[] = $name;
-              $item[$name] = $value;
+            if(empty($regex) || preg_match('/'.preg_quote($regex,'/').'/i',$entry['cn'])){
+              $entry['objectClass'] = array("FAKE_OC_OpsiHost");
+              $item = array('count' => count($entry));
+              foreach($entry as  $name => $value){
+                $item[] = $name;
+                $item[$name] = $value;
+              }
+              $entries[] = $item;
             }
-            $entries[] = $item;
           }
         }
       }