Code

Some changes for glpi
[gosa.git] / plugins / admin / systems / class_systemManagement.inc
index e553b92065aa615220ecb6208b40457432cb26ec..7f7265767d0893e8d8217843fcebc8057dbb38d7 100644 (file)
@@ -65,6 +65,9 @@ class systems extends plugin
 
   function execute()
   {
+       /* Call parent execute */
+       plugin::execute();
+
     /* Save data */
     $terminalfilter= get_global("terminalfilter");
     foreach( array("depselect", "user", "regex") as $type){
@@ -90,7 +93,6 @@ class systems extends plugin
       $terminalfilter['regex']= $s;
     }
 
-    $terminalfilter   = get_global("terminalfilter"); // contains Filter Settings
     $s_action     = "";                       // Contains the action to proceed
     $s_entry      = "";                       // The value for s_action
     $base_back    = "";                       // The Link for Backbutton
@@ -128,6 +130,9 @@ class systems extends plugin
         $s_entry  = preg_replace("/user_setpwd_/i","",$key);
       }elseif(preg_match("/dep_root.*/i",$key)){
         $s_action="root";
+      }elseif(preg_match("/newsystem_.*/i",$key)){
+        $s_action="newsystem";
+        $s_entry  = preg_replace("/newsystem_/i","",$key);
       }
     }
 
@@ -180,17 +185,24 @@ class systems extends plugin
     }
 
     /* Create new default terminal */
-    if (isset($_POST['create_system'])) {
+    if (isset($_POST['create_system'])||$s_action=="newsystem") {
       $this->dn= "new";
       $this->acl= array(":all");
 
-      switch ($_POST['system']){
+      if(isset($_POST['system'])){
+        $sw = $_POST['system'];
+      }else{
+        $sw = $s_entry;
+      }
+
+      switch ($sw){
         case 'terminal':
           $this->systab= new termtabs($this->config,
               $this->config->data['TABS']['TERMTABS'], $this->dn);
           $this->systab->set_acl ($this->acl);
           $this->systab->by_object['termgeneric']->cn= "default";
           $this->systab->by_object['termservice']->cn= "default";
+          $this->systab->by_object['termgeneric']->base = $_SESSION['terminalfilter']['depselect'];  
           break;
 
         case 'workstation':
@@ -198,35 +210,43 @@ class systems extends plugin
               $this->config->data['TABS']['WORKTABS'], $this->dn);
           $this->systab->set_acl ($this->acl);
           $this->systab->by_object['workgeneric']->cn= "wdefault";
-          $this->systab->by_object['termservice']->cn= "default";
+          $this->systab->by_object['workservice']->cn= "default";
+          $this->systab->by_object['workgeneric']->base = $_SESSION['terminalfilter']['depselect'];  
           break;
 
         case 'server':
           $this->systab= new servtabs($this->config,
               $this->config->data['TABS']['SERVTABS'], $this->dn);
           $this->systab->set_acl ($this->acl);
+          $this->systab->by_object['servgeneric']->base = $_SESSION['terminalfilter']['depselect'];  
           break;
 
         case 'printer':
           $this->systab= new printtabs($this->config,
               $this->config->data['TABS']['PRINTTABS'], $this->dn);
           $this->systab->set_acl ($this->acl);
+          $this->systab->by_object['printgeneric']->base = $_SESSION['terminalfilter']['depselect'];  
           break;
 
         case 'phone':
           $this->systab= new phonetabs($this->config,
               $this->config->data['TABS']['PHONETABS'], $this->dn);
           $this->systab->set_acl ($this->acl);
+          $this->systab->by_object['phonegeneric']->base = $_SESSION['terminalfilter']['depselect'];  
           break;
 
         case 'component':
           $this->systab= new componenttabs($this->config,
               $this->config->data['TABS']['COMPONENTTABS'], $this->dn);
           $this->systab->set_acl ($this->acl);
+          $this->systab->by_object['componentgeneric']->base = $_SESSION['terminalfilter']['depselect'];  
           break;
       }
+       
+      $this->systab->base = $_SESSION['terminalfilter']['depselect'];  
     }
 
+
     /* User wants to edit data? */
     if ($s_action == "edit"){
 
@@ -415,6 +435,10 @@ class systems extends plugin
           case "workstation":
             $tabtype= "worktabs";
           break;
+          
+          case "phone":
+            $tabtype= "phonetabs";
+          break;
 
           case "server":
             $tabtype= "servtabs";
@@ -429,10 +453,18 @@ class systems extends plugin
         }
 
         /* Delete request is permitted, perform LDAP action */
-        $this->systab= new $tabtype($this->config,
-            $this->config->data['TABS']['TERMTABS'], $this->dn);
-        $this->systab->set_acl(array($this->acl));
-        $this->systab->by_object['termgeneric']->remove_from_parent ();
+        if($tabtype=="phonetabs"){
+          $this->systab= new $tabtype($this->config,
+             $this->config->data['TABS']['PHONETABS'], $this->dn);
+          $this->systab->set_acl(array($this->acl));
+          $this->systab->by_object['phonegeneric']->remove_from_parent ();
+        }else{  
+          $this->systab= new $tabtype($this->config,
+             $this->config->data['TABS']['TERMTABS'], $this->dn);
+          $this->systab->set_acl(array($this->acl));
+          $this->systab->delete();
+          #$this->systab->by_object['termgeneric']->remove_from_parent ();
+        }
         unset ($this->systab);
         gosa_log ("System object'".$this->dn."' has been removed");
         $this->systab= NULL;
@@ -505,9 +537,9 @@ class systems extends plugin
       /* Don't show buttons if tab dialog requests this */
       if (!$this->systab->by_object[$this->systab->current]->dialog){
         $display.= "<p style=\"text-align:right\">\n";
-        $display.= "<input type=submit name=\"edit_finish\" value=\""._("Finish")."\">\n";
+        $display.= "<input type=\"submit\" name=\"edit_finish\" value=\""._("Finish")."\">\n";
         $display.= "&nbsp;\n";
-        $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
+        $display.= "<input type=\"submit\" name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
         $display.= "</p>";
       }
       return ($display);
@@ -522,7 +554,7 @@ class systems extends plugin
     $options= "";
     foreach ($this->config->idepartments as $key => $value){
             if ($terminalfilter['depselect'] == $key){
-                    $options.= "<option selected value='$key'>$value</option>";
+                    $options.= "<option selected='selected' value='$key'>$value</option>";
             } else {
                     $options.= "<option value='$key'>$value</option>";
             }
@@ -531,59 +563,73 @@ class systems extends plugin
 
   /* NEW LIST MANAGMENT */
     $listhead = "<div style='background:#F0F0F9;padding:5px;'>".
-    " <input type='image' align='middle' src='images/list_back.png' title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'>&nbsp;".
-    " <input type='image' src='images/list_root.png' align='middle' title='"._("Go to root department")."' name='dep_root' alt='"._("Root")."'>&nbsp;".
-    " <input type='image' align='middle' src='images/list_home.png' title='"._("Go to users department")."' alt='"._("Home")."'                     name='dep_home'>&nbsp;".
-    " <img src='images/list_seperator.png' align='middle' alt='' height='16' width='1'>&nbsp;".
-    " <input type='image' align='middle' src='images/list_new_user.png' title='"._("Create new user")."' alt='"._("New user")."'                    name='user_new'>&nbsp;".
-    " <img src='images/list_seperator.png' align='middle' alt='' height='16' width='1'>&nbsp;".
-    _("Current base")."&nbsp;<select name='depselect' onChange='mainform.submit()'>$options</select>".
-    " <input type='image' src='images/list_submit.png' align='middle' title='"._("Submit department")."' name='submit_department' alt='".           _("Submit")."'>&nbsp;".
+    " <input class='center' type='image' align='middle' src='images/list_back.png' title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'>&nbsp;".
+    " <input class='center' type='image' src='images/list_root.png' align='middle' title='"._("Go to root department")."' name='dep_root' alt='"._("Root")."'>&nbsp;".
+    " <input class='center' type='image' align='middle' src='images/list_home.png' title='"._("Go to users department")."' alt='"._("Home")."'                     name='dep_home'>&nbsp;".
+    " <img class='center' src='images/list_seperator.png' align='middle' alt='' height='16' width='1'>&nbsp;".
+    " <input class='center' type='image' align='middle' src='images/select_new_terminal.png'   name='newsystem_terminal'    alt='"._("New Terminal template")."' title='"._("New Terminal")."'>".
+    " <input class='center' type='image' align='middle' src='images/select_new_workstation.png' name='newsystem_workstation' alt='"._("New Workstation template")."' title='"._("New Workstation")."'>".
+    " <input class='center' type='image' align='middle' src='images/select_new_server.png'     name='newsystem_server'      alt='"._("New Server")."' title='"._("New Server")."'>".
+    " <input class='center' type='image' align='middle' src='images/select_new_printer.png'    name='newsystem_printer'     alt='"._("New Printer")."' title='"._("New Printer")."'>".
+    " <input class='center' type='image' align='middle' src='images/select_new_phone.png'      name='newsystem_phone'       alt='"._("New Phone")."' title='"._("New Phone")."'>".
+    " <input class='center' type='image' align='middle' src='images/select_new_component.png'  name='newsystem_component'   alt='"._("New Component")."' title='"._("New Component")."'>".
+    " <img class='center' src='images/list_seperator.png' align='middle' alt='' height='16' width='1'>&nbsp;".
+    _("Current base")."&nbsp;<select name='depselect' onChange='mainform.submit()' class='center'>$options</select>".
+    " <input class='center' type='image' src='images/list_submit.png' align='middle' title='"._("Submit department")."' name='submit_department' alt='".           _("Submit")."'>&nbsp;".
     "</div>";
 
+    $action= "<input class='center' type='image' src='images/edit.png' alt='"._("edit")."'     name='user_edit_%KEY%' title='"._("Edit system")."'>";
+    $action.= "<input class='center' type='image' src='images/edittrash.png' alt='"._("delete")."'   name='user_del_%KEY%' title='"._("Delete system")."'>";
 
-
-    $action= "<input type='image' src='images/edit.png' alt='"._("edit")."'     name='user_edit_%KEY%' title='"._("Edit user")."'>";
-    $action.= "<input type='image' src='images/editdelete.png' alt='"._("delete")."'   name='user_del_%KEY%' title='"._("Delete user")."'>";
-
-
-    $divlist = new divlist();
+    $divlist = new divlist("systemstab");
     $divlist->SetHeader(array(
-          array("string" => "&nbsp;"),
-          array("string" => _("System")." / "._("Department")),
-          array("string" => _("Actions"), "attach" => "style='border:none'" )));
-
+          array("string" => "&nbsp;", "attach" => "style='text-align:center;width:20px;'"),
+          array("string" => _("System")." / "._("Department"), "attach" => "style=''"),
+          array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" )));
 
-    $divlist->SetSummary(_("This table displays all users, in the selected tree."));
-    $divlist->SetEntriesPerPage(20);
+    $divlist->SetSummary(_("This table displays all systems, in the selected tree."));
+    $divlist->SetEntriesPerPage(0);
 
     // Defining Links
     $linkopen = "<a href='?plug=".$_GET['plug']."&amp;act=dep_open&amp;dep_id=%s'>%s</a>";
 
     foreach($this->departments as $key=> $val){
-      $field1 = array("string" => "<img src='images/folder.png' alt='department'>");
-      $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val));
-      $field3 = array("string" => "&nbsp;", "attach" => "style='border:none'");
+
+      if(!isset($this->config->departments[trim($key)])){
+        $this->config->departments[trim($key)]="";
+      }
+
+      $non_empty="";
+      $keys= str_replace("/","\/",$key);
+      foreach($this->config->departments as $keyd=>$vald ){
+        if(preg_match("/".$keys."\/.*/",$keyd)){
+          $non_empty="full";
+        }
+      }
+
+      $field1 = array("string" => "<img src='images/".$non_empty."folder.png' alt='department'>", "attach" => "style='text-align:center;width:20px;'");
+      $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style=''");
+      $field3 = array("string" => "&nbsp;", "attach" => "style='width:60px;border-right:0px;text-align:right;'");
       $divlist->AddEntry(array($field1,$field2,$field3));
     }
 
     // Space
-    $empty    ="";//= "<img src='images/nothing.png' style='width:16px;height:16px;' alt=''>";
+    $empty    ="&nbsp;";
 
     // User and Template  Images
     $editlink = "<a href='?plug=".$_GET['plug']."&amp;id=%s&amp;act=edit_entry'>%s</a>";
 
     // Pictures for Extensions
-    $img1  = "<img src='images/printer.png'            alt='C' title='"._("Cups Server")  ."'>";
-    $img2  = "<img src='images/scanner.png'            alt='L' title='"._("Log Db") ."'>";
-    $img3  = "<img src='images/select_terminal.png'    alt='L' title='"._("Syslog Server") ."'>";
-    $img4  = "<img src='images/mailto.png'             alt='M' title='"._("Mail Server")  ."'>";
-    $img5  = "<img src='images/select_phone.png'       alt='I' title='"._("Imap Server") ."'>";
-    $img6  = "<img src='images/fax_small.png'          alt='F' title='"._("Nfs Server")   ."'>";
-    $img7  = "<img src='images/select_winstation.png'  alt='K' title='"._("Kerberos Server") ."'>";
-    $img8  = "<img src='images/select_phone.png'       alt='A' title='"._("Asterisk Server") ."'>";
-    $img9  = "<img src='images/fax_small.png'          alt='F' title='"._("Fax Server") ."'>";
-    $img10 = "<img src='images/save.png'               alt='L' title='"._("Ldap Server") ."'>";
+    $img1  = "<img class='center' src='images/printer.png'            alt='C' title='"._("Cups Server")  ."'>";
+    $img2  = "<img class='center' src='images/scanner.png'            alt='L' title='"._("Log Db") ."'>";
+    $img3  = "<img class='center' src='images/select_terminal.png'    alt='L' title='"._("Syslog Server") ."'>";
+    $img4  = "<img class='center' src='images/mailto.png'             alt='M' title='"._("Mail Server")  ."'>";
+    $img5  = "<img class='center' src='images/select_phone.png'       alt='I' title='"._("Imap Server") ."'>";
+    $img6  = "<img class='center' src='images/fax_small.png'          alt='F' title='"._("Nfs Server")   ."'>";
+    $img7  = "<img class='center' src='images/select_winstation.png'  alt='K' title='"._("Kerberos Server") ."'>";
+    $img8  = "<img class='center' src='images/select_phone.png'       alt='A' title='"._("Asterisk Server") ."'>";
+    $img9  = "<img class='center' src='images/fax_small.png'          alt='F' title='"._("Fax Server") ."'>";
+    $img10 = "<img class='center' src='images/save.png'               alt='L' title='"._("Ldap Server") ."'>";
 
     // Test Every Entry and generate divlist Array
     foreach($this->terminals as $key => $val){
@@ -593,7 +639,7 @@ class systems extends plugin
       if(in_array("goSyslogServer"  ,$val['objectClass'])) $syslog  = $img3;   else $syslog=$empty;
       if(in_array("goImapServer"    ,$val['objectClass'])) $imap    = $img4;   else $imap  =$empty;
       if(in_array("sambaSamAccount" ,$val['objectClass'])) $samba   = $img5;   else $samba =$empty;
-      if(in_array("goNfsServer"     ,$val['objectClass'])) $nfs     = $img6;   else $nfs   =$empty;
+      if(in_array("goShareServer"   ,$val['objectClass'])) $nfs     = $img6;   else $nfs   =$empty;
       if(in_array("goKrbServer"     ,$val['objectClass'])) $krb     = $img7;   else $krb   =$empty;
       if(in_array("goFonServer"     ,$val['objectClass'])) $fon     = $img8;   else $fon   =$empty;
       if(in_array("goFaxServer"     ,$val['objectClass'])) $fax     = $img9;   else $fax   =$empty;
@@ -601,6 +647,9 @@ class systems extends plugin
   
       $pics = $cups.$logdb.$syslog.$imap.$samba.$nfs.$krb.$fon.$fax.$ldap;
       $pics = "";
+    
+      $val['cn'][0]= preg_replace('/\$$/', '', $val['cn'][0]);
+
       // Generate Array to Add
       if((isset($val['is_new']))&&(!empty($val['is_new']))){
         $display= "".$val["cn"][0]." ".$val['is_new'];
@@ -608,33 +657,29 @@ class systems extends plugin
         $display= "".$val["cn"][0]."";
       }
 
-      if(in_array("gotoTerminal",$val['objectClass'])){
-        $action2 = "<input type='image' src='images/certs.png' alt='"._("Password")."'   name='user_setpwd_%KEY%' title='"._("Set root password")."'>";
+      if((in_array("gotoTerminal",$val['objectClass']))||(in_array("gotoWorkstation",$val['objectClass']))){
+        $action2 = "<input class='center' type='image' src='images/certs.png' alt='"._("Password")."'   name='user_setpwd_%KEY%' title='"._("Set root password")."'>";
       }else{
         $action2 = "";
       }
 
-
       if(isset($val['message'])){
         $display.= "  (".$val['message']." '".$this->config->idepartments[$terminalfilter['depselect']]."'  )";
       }
 
       $img=$this->convert_list($val);
 
-      $field1 = array("string" => sprintf($img['img'],$val['dn']),"attach"=>"style='width:20px;align:middle;'");
-      $field2 = array("string" => sprintf($editlink,$key,$display),"attach"=>"title='".$val['dn']."'");
-      $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action2.$action),"attach" => "style='border:none; text-align:right;width:48px'");
+      $field1 = array("string" => sprintf($img['img'],$val['dn']), "attach" => "style='text-align:center;width:20px;'");
+      $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='".$val['dn']."'");
+      $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action2.$action), "attach" => "style='width:60px;border-right:0px;text-align:right;'");
       $divlist->AddEntry( array($field1,$field2,$field3));
     }
 
-
-
-
-
     /* Show main page */
     $smarty->assign("terminalshead", $listhead);
     $smarty->assign("terminals", $divlist->DrawList());
     $smarty->assign("search_image", get_template_path('images/search.png'));
+    $smarty->assign("searchu_image", get_template_path('images/search_user.png'));
     $smarty->assign("tree_image", get_template_path('images/tree.png'));
     $smarty->assign("infoimage", get_template_path('images/info.png'));
     $smarty->assign("launchimage", get_template_path('images/launch.png'));
@@ -657,25 +702,24 @@ class systems extends plugin
   function convert_list($input)
   {
     $temp= "";
-    $conv= array(      "D" => "select_default.png",
-        
-
-  "T" => "select_terminal.png",
-        "L" => "select_workstation.png",
-        "F" => "select_phone.png",
-        "S" => "select_server.png",
-        "NT" => "select_new_terminal.png",
-        "NL" => "select_new_workstation.png",
-        "W" => "select_winstation.png",
-        "C" => "select_component.png",
-        "P" => "select_printer.png");
+    $conv= array(      
+        "D" => array("select_default.png",_("Template")),
+        "T" => array("select_terminal.png",_("Terminal")),
+        "L" => array("select_workstation.png",_("Workstation")),
+        "F" => array("select_phone.png",_("Phone")),
+        "S" => array("select_server.png",_("Server")),
+        "NT"=> array("select_new_terminal.png",_("New Terminal")),
+        "NL"=> array("select_new_workstation.png",_("New Workstation")),
+        "W" => array("select_winstation.png",_("Winstation")),
+        "C" => array("select_component.png",_("Network Device")),
+        "P" => array("select_printer.png",_("Printer")));
 
    if((isset($input['is_new']))&&(!empty($input['is_new']))){
      $input['type']="N".$input['type'];
    }
    foreach ($conv  as $key => $value){
       if($input['type']==$key){
-        $tmp['img'] ="<img src='images/".$value."' alt='".$key."' title='%s'>";
+        $tmp['img'] ="<img class='center' src='images/".$value[0]."' alt='".$key."' title='".$value['1']."'>";
         $tmp['class']=$key;
         return $tmp;
       }
@@ -793,14 +837,53 @@ class systems extends plugin
     /* Get all gotoTerminal's */
     $this->terminals= array();
 
-    $res= get_list($this->ui->subtreeACL, "(|$termfilter$workfilter$winfilter$printfilter$phonefilter$serverfilter$netfilter)", TRUE, $base, array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), TRUE);
+    $res= get_list($this->ui->subtreeACL, "(|$termfilter)", FALSE, "ou=terminals,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE);
+
+    $res= array_merge($res,get_list($this->ui->subtreeACL, "(|$termfilter)", FALSE, "ou=incoming,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$serverfilter)", FALSE, "ou=servers,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$phonefilter)", FALSE, "ou=phones,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$netfilter)", FALSE, "ou=netdevices,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
 
-      
-    /* NEW LIST MANAGMENT
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$printfilter)", FALSE, "ou=printers,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$workfilter)", FALSE, "ou=workstations,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$workfilter)", FALSE, "ou=incoming,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+    $res= array_merge($res,
+          get_list($this->ui->subtreeACL, "(|$winfilter)", FALSE, "ou=winstations,ou=systems,".$base, 
+        array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+/* NEW LIST MANAGMENT
      * We also need to search for the departments
      * So we are able to navigate like in konquerer
      */
-    $base2 = preg_replace("/ou=people,/i","",$base);
+
+    $peopleOU = get_people_ou();
+
+    if(empty($peopleOU)){
+      $base2 = $base;
+    }else{
+      $base2 = preg_replace("/".$peopleOU."/i","",$base);
+    }
+
 
     $res3 =  get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
                               TRUE, $base2, array("ou", "description"), TRUE);
@@ -812,10 +895,10 @@ class systems extends plugin
     }
     ksort($tmp);
     foreach($tmp as $value){
-      if($value["description"][0]!=".."){
+      if(isset($value["description"][0])){
         $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
       }else{
-        $this->departments[$value['dn']]=$value["description"][0];
+        $this->departments[$value['dn']]=convert_department_dn2($value['dn']);//$value["description"][0];
       }
     }
 
@@ -853,10 +936,10 @@ class systems extends plugin
       }
       if (preg_match ("/,ou=incoming,/i", $tmp)){
         if (in_array('gotoTerminal', $value['objectClass'])){
-          $add= "+ "._("New terminal");
+          $add= "- "._("New terminal");
         }
         if (in_array('gotoWorkstation', $value['objectClass'])){
-          $add= "+ "._("New workstation");
+          $add= "- "._("New workstation");
         }
       } else {
         $add= "";
@@ -880,6 +963,7 @@ class systems extends plugin
           if (isset($value["macAddress"][0]) &&  $value["macAddress"][0] != "-"){
             $terminal             = $value;
             $terminal['type']     = "L";
+            $terminal['is_new']   = $add;
           } else {
             $terminal             = $value;
             $terminal['type']     = "D";
@@ -905,17 +989,17 @@ class systems extends plugin
           } else {
             $domain= "";
           }
-            $terminal=$value;
-            $terminal['type']     ="W";
-            $terminal['domain']   = $name.$domain;
+          $terminal=$value;
+          $terminal['type']     ="W";
+          $terminal['domain']   = $name.$domain;
         }
-      $this->terminals[]=$terminal;
+        $this->terminals[]=$terminal;
       }
     }
 
     $tmp=array();
     foreach($this->terminals as $tkey => $val ){
-      $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+      $tmp[strtolower($val['cn'][0]).$val['dn']]=$val;
     }
     ksort($tmp);
     $this->terminals=array();