Code

Updated System management trigger event
[gosa.git] / gosa-plugins / systems / admin / systems / class_systemManagement.inc
index 4f1820dda0384a8e5fd4321cae8794430d8007b3..eacdf888f528bfd15eda7e12de7fa4ffcd0dd5bd 100644 (file)
@@ -708,15 +708,33 @@ class systems extends plugin
       $this->dns = array();
       $ids = $this->list_get_selected_items();
 
+      /* Handle opsi actions */
+      if($s_action == "trigger_event_DaemonEvent_reinstall"){
+        foreach($ids as $key => $id){
+          if($this->terminals[$id]['type'] == "O"){
+            $obj = $this->terminals[$id];
+            $this->opsi->job_opsi_install_client($obj['cn'][0],$obj['macAddress'][0]);
+            unset($ids[$key]);
+          }
+        }
+      }
+
       if(count($ids) && class_available("DaemonEvent")){
         $mac= array();
 
+        /* Collect target mac addresses */
         $ldap = $this->config->get_ldap_link();
         foreach($ids as $id){
-          $ldap->cat ($this->terminals[$id]['dn'], array("macAddress"));
-          $attrs= $ldap->fetch();
-          if (isset($attrs['macAddress'][0])){
-            $mac[]= $attrs['macAddress'][0];
+          $type = $this->get_system_type($this->terminals[$id]);
+          if(!in_array($type,array("terminal","server","workstation","opsi_client","winstation "))) continue;
+          if(isset($this->terminals[$id]['macAddress'][0])){
+            $mac[] = $this->terminals[$id]['macAddress'][0];
+          }else{
+            $ldap->cat ($this->terminals[$id]['dn'], array("macAddress"));
+            $attrs= $ldap->fetch();
+            if (isset($attrs['macAddress'][0])){
+              $mac[]= $attrs['macAddress'][0];
+            }
           }
         }
         $events = DaemonEvent::get_event_types(SYSTEM_EVENT);
@@ -1158,7 +1176,7 @@ class systems extends plugin
 
     /* Attributes to fetch */
     $sys_attrs        = array("cn", "description", "macAddress", "objectClass", "sambaDomainName","gotoMode","FAIclass");
-    $sys_categories   = array("terminal", "workstation", "server", "phone" ,"printer","incoming");
+    $sys_categories   = array("terminal", "workstation", "server", "phone" ,"printer","incoming","winworkstation");
 
     /* Add FAIstate to attributes if FAI is activated */
     $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs'));
@@ -1315,8 +1333,9 @@ class systems extends plugin
           $terminal['type']   = "Q";
           $terminal['is_new'] = $add;
         }
-      } elseif (in_array_ics('ieee802Device', $value["objectClass"])){
-
+      } elseif (in_array_ics('ieee802Device', $value["objectClass"]) && 
+        !( in_array_ics('sambaAccount', $value["objectClass"]) || in_array_ics('sambaSamAccount', $value["objectClass"]))){
+        $type= "winstation";
         $acl = $ui->get_permissions($value['dn'],"component/componentGeneric");
         if($add != "" || preg_match("/r/",$acl)) {
 
@@ -1484,6 +1503,9 @@ class systems extends plugin
     $type= "";
     if (in_array_ics('gosa_opsi_client', $classes)){
       $type= "opsi_client";
+    }elseif (in_array_ics('sambaAccount', $classes) ||
+        in_array_ics('sambaSamAccount', $classes)){
+      $type= "winstation";
     }elseif (in_array_ics('ieee802Device', $classes)){
       $type= "component";
     }elseif (in_array_ics('gotoTerminal', $classes)){
@@ -1500,9 +1522,6 @@ class systems extends plugin
       $type= "ArpNewDevice";
     }elseif (in_array_ics('GOhard', $classes)){
       $type= "NewDevice";
-    }elseif (in_array_ics('sambaAccount', $classes) ||
-        in_array_ics('sambaSamAccount', $classes)){
-      $type= "winstation";
     }
     return ($type);
   }