X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_systemManagement.inc;h=7f7265767d0893e8d8217843fcebc8057dbb38d7;hb=3644520502707cc1a35a915bfa358105e86c4818;hp=4020c6b1a04479b59e130a69fef1a6be6b3a1ff9;hpb=a0cb6455b7dfb51a937c24d043fabb4f31272629;p=gosa.git
diff --git a/plugins/admin/systems/class_systemManagement.inc b/plugins/admin/systems/class_systemManagement.inc
index 4020c6b1a..7f7265767 100644
--- a/plugins/admin/systems/class_systemManagement.inc
+++ b/plugins/admin/systems/class_systemManagement.inc
@@ -31,6 +31,7 @@ class systems extends plugin
/* Definitions */
var $plHeadline= "Systems";
var $plDescription= "This does something";
+ var $departments=array();
/* Dialog attributes */
var $systab= NULL;
@@ -64,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){
@@ -88,17 +92,87 @@ class systems extends plugin
}
$terminalfilter['regex']= $s;
}
- register_global("terminalfilter", $terminalfilter);
- /* Check sorting variable */
- if (!isset($this->systab) &&
- !isset($_POST['new_terminal']) &&
- !isset($_POST['delete_terminal']) &&
- !isset($_POST['set_password']) &&
- !isset($_POST['select_terminal'])){
- $this->reload();
+ $s_action = ""; // Contains the action to proceed
+ $s_entry = ""; // The value for s_action
+ $base_back = ""; // The Link for Backbutton
+ $smarty = get_smarty();
+
+ /* Start for New List Managment */
+ if(isset($_GET['act'])&&($_GET['act']=="dep_open")){
+ $s_action="open";
+ $s_entry = base64_decode($_GET['dep_id']);
+ $terminalfilter['depselect']= "".$this->config->departments[trim($s_entry)];
+ $this->reload();
+ }
+
+ /* Test Posts */
+ foreach($_POST as $key => $val){
+ // Post for delete
+ if(preg_match("/user_del.*/",$key)){
+ $s_action = "del";
+ $s_entry = preg_replace("/user_".$s_action."_/i","",$key);
+ // Post for edit
+ }elseif(preg_match("/user_edit_.*/",$key)){
+ $s_action="edit";
+ $s_entry = preg_replace("/user_".$s_action."_/i","",$key);
+ // Post for new
+ }elseif(preg_match("/dep_back.*/i",$key)){
+ $s_action="back";
+ }elseif(preg_match("/user_new.*/",$key)){
+ $s_action="new";
+ }elseif(preg_match("/dep_home.*/i",$key)){
+ $s_action="home";
+ }elseif(preg_match("/user_tplnew.*/i",$key)){
+ $s_action="new_tpl";
+ }elseif(preg_match("/user_setpwd_.*/i",$key)){
+ $s_action="change_pw";
+ $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);
+ }
+ }
+
+ if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
+ $s_action ="edit";
+ $s_entry = $_GET['id'];
+ }
+
+ $s_entry = preg_replace("/_.$/","",$s_entry);
+
+ /* Department changed? */
+ if(isset($_POST['depselect']) && $_POST['depselect']){
+ $terminalfilter['depselect']= $_POST['depselect'];
+ }
+
+ /* Homebutton is posted */
+ if($s_action=="home"){
+ $terminalfilter['depselect']=(preg_replace("/^[^,]+,/","",$this->ui->dn));
+ $terminalfilter['depselect']=(preg_replace("/^[^,]+,/","",$terminalfilter['depselect']));
}
- $smarty= get_smarty();
+
+ if($s_action=="root"){
+ $terminalfilter['depselect']=($this->config->current['BASE']);
+ }
+
+
+ /* If Backbutton is Posted */
+ if($s_action=="back"){
+ $base_back = preg_replace("/^[^,]+,/","",$terminalfilter['depselect']);
+ $base_back = convert_department_dn($base_back);
+
+ if(isset($this->config->departments[trim($base_back)])){
+ $terminalfilter['depselect']= $this->config->departments[trim($base_back)];
+ }else{
+ $terminalfilter['depselect']= $this->config->departments["/"];
+ }
+ }
+
+ register_global("terminalfilter", $terminalfilter);
+ $this->reload();
/* Check for exeeded sizelimit */
if (($message= check_sizelimit()) != ""){
@@ -106,22 +180,29 @@ class systems extends plugin
}
/* Try to get informations about what kind of system to create */
- if (isset($_POST['new_terminal'])) {
+ if ($s_action=="new") {
return ($smarty->fetch(get_template_path('chooser.tpl', TRUE)));
}
/* 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':
@@ -129,41 +210,48 @@ 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 ((isset($_POST['select_terminal']) || (isset($_POST['edit_helper']) && $_POST['edit_helper'] == "1")) && isset($_POST['termlist']) &&
- $_POST['termlist'] != ""){
+ if ($s_action == "edit"){
/* Get 'dn' from posted 'cn', must be unique */
- $this->dn= trim($_POST['termlist']);
+ $this->dn= $this->terminals[$s_entry]['dn'];
/* Check locking, save current plugin in 'back_plugin', so
the dialog knows where to return. */
@@ -250,8 +338,8 @@ class systems extends plugin
}
/* Set terminals root password */
- if (isset($_POST['set_password']) && isset($_POST['termlist'])){
- $this->dn= trim($_POST['termlist']);
+ if ($s_action=="change_pw"){
+ $this->dn= $this->terminals[$s_entry]['dn'];
$_SESSION['objectinfo']= $this->dn;
return ($smarty->fetch(get_template_path('password.tpl', TRUE)));
}
@@ -297,10 +385,10 @@ class systems extends plugin
}
/* Remove terminal was requested */
- if (isset($_POST['delete_terminal']) && isset($_POST['termlist'])){
+ if ($s_action=="del"){
/* Get 'dn' from posted termlinst */
- $this->dn= $_POST['termlist'];
+ $this->dn= $this->terminals[$s_entry]['dn'];
/* Load permissions for selected 'dn' and check if
we're allowed to remove this 'dn' */
@@ -347,6 +435,10 @@ class systems extends plugin
case "workstation":
$tabtype= "worktabs";
break;
+
+ case "phone":
+ $tabtype= "phonetabs";
+ break;
case "server":
$tabtype= "servtabs";
@@ -361,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;
@@ -437,17 +537,149 @@ class systems extends plugin
/* Don't show buttons if tab dialog requests this */
if (!$this->systab->by_object[$this->systab->current]->dialog){
$display.= "
\n";
- $display.= "\n";
+ $display.= "\n";
$display.= " \n";
- $display.= "\n";
+ $display.= "\n";
$display.= "
";
}
return ($display);
}
+
+
+
+
+
+ /* Prepare departments */
+ $options= "";
+ foreach ($this->config->idepartments as $key => $value){
+ if ($terminalfilter['depselect'] == $key){
+ $options.= "";
+ } else {
+ $options.= "";
+ }
+ }
+
+
+ /* NEW LIST MANAGMENT */
+ $listhead = "";
+
+ $action= "";
+ $action.= "";
+
+ $divlist = new divlist("systemstab");
+ $divlist->SetHeader(array(
+ array("string" => " ", "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 systems, in the selected tree."));
+ $divlist->SetEntriesPerPage(0);
+
+ // Defining Links
+ $linkopen = "%s";
+
+ foreach($this->departments as $key=> $val){
+
+ 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" => "
", "attach" => "style='text-align:center;width:20px;'");
+ $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style=''");
+ $field3 = array("string" => " ", "attach" => "style='width:60px;border-right:0px;text-align:right;'");
+ $divlist->AddEntry(array($field1,$field2,$field3));
+ }
+
+ // Space
+ $empty =" ";
+
+ // User and Template Images
+ $editlink = "%s";
+
+ // Pictures for Extensions
+ $img1 = "
";
+ $img2 = "
";
+ $img3 = "
";
+ $img4 = "
";
+ $img5 = "
";
+ $img6 = "
";
+ $img7 = "
";
+ $img8 = "
";
+ $img9 = "
";
+ $img10 = "
";
+
+ // Test Every Entry and generate divlist Array
+ foreach($this->terminals as $key => $val){
+ // Specify Pics for Extensions
+ if(in_array("goCupsServer" ,$val['objectClass'])) $cups = $img1; else $cups =$empty;
+ if(in_array("goLogDBServer" ,$val['objectClass'])) $logdb = $img2; else $logdb =$empty;
+ 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("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;
+ if(in_array("goLdapServer" ,$val['objectClass'])) $ldap = $img10; else $ldap =$empty;
+
+ $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'];
+ }else{
+ $display= "".$val["cn"][0]."";
+ }
+
+ if((in_array("gotoTerminal",$val['objectClass']))||(in_array("gotoWorkstation",$val['objectClass']))){
+ $action2 = "";
+ }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='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("terminals", $this->convert_list($this->terminals));
+ $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'));
@@ -470,33 +702,28 @@ 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");
-
- foreach ($input as $key => $value){
- $mode= preg_replace('/^.*(.)$/', '\\1', $value);
- if ($mode == "D"){
- $temp= "\n".$temp;
- } else {
- if (preg_match('/^\+/', $value)){
- $value= preg_replace('/^\+ /', '', $value);
- $new= "N";
- } else {
- $new= "";
- }
- $temp.= "\n";
+ $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'] ="
";
+ $tmp['class']=$key;
+ return $tmp;
}
}
-
- return ($temp);
}
function remove_from_parent()
@@ -610,7 +837,75 @@ 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));
+
+ $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
+ */
+
+ $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);
+
+ $this->departments= array();
+ $tmp = array();
+ foreach ($res3 as $value){
+ $tmp[strtolower($value['dn']).$value['dn']]=$value;
+ }
+ ksort($tmp);
+ foreach($tmp as $value){
+ if(isset($value["description"][0])){
+ $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
+ }else{
+ $this->departments[$value['dn']]=convert_department_dn2($value['dn']);//$value["description"][0];
+ }
+ }
+
+ /* END NEW LIST MANAGMENT
+ */
+
+
foreach ($res as $value){
/* Look for new terminals and mark them with '+' */
@@ -641,66 +936,52 @@ 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= "";
}
+ $terminal = array();
+
if (in_array ($tmp, $responsible) || $add != ""){
if (in_array('gotoTerminal', $value["objectClass"])){
- if (isset($value["macAddress"][0]) &&
- $value["macAddress"][0] != "-"){
-
- $this->terminals[$value["dn"]]= $add." ".
- $value["cn"][0].
- " [".$value["macAddress"][0]."]T";
+ if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){
+ $terminal = $value;
+ $terminal['type'] = "T";
+ $terminal['is_new'] = $add;
} else {
- $location= array_search($tmp, $this->config->departments);
- $this->terminals[$value["dn"]]= _("Thin client template for").
- " $location"."D";
+ $terminal = $value;
+ $terminal['type'] = "D";
+ $terminal['message'] = _("Terminal template for");
+ $terminal['location'] = array_search($tmp, $this->config->departments);
}
} elseif (in_array('gotoWorkstation', $value["objectClass"])){
- if (isset($value["macAddress"][0]) &&
- $value["macAddress"][0] != "-"){
-
- $this->terminals[$value["dn"]]= $add." ".
- $value["cn"][0].
- " [".$value["macAddress"][0]."]L";
+ if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){
+ $terminal = $value;
+ $terminal['type'] = "L";
+ $terminal['is_new'] = $add;
} else {
- $location= array_search($tmp, $this->config->departments);
- $this->terminals[$value["dn"]]= _("Workstation template for").
- " $location"."D";
+ $terminal = $value;
+ $terminal['type'] = "D";
+ $terminal['location'] = array_search($tmp, $this->config->departments);
+ $terminal['message'] = _("Workstation template for");
}
} elseif (in_array('gotoPrinter', $value["objectClass"])){
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]P";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."P";
- }
+ $terminal = $value;
+ $terminal['type'] = "P";
} elseif (in_array('goServer', $value["objectClass"])){
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]S";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."S";
- }
+ $terminal = $value;
+ $terminal['type'] = "S";
} elseif (in_array('goFonHardware', $value["objectClass"])){
-
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]F";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."F";
- }
+ $terminal = $value;
+ $terminal['type'] = "F";
} elseif (in_array('ieee802Device', $value["objectClass"])){
-
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]C";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."C";
- }
+ $terminal = $value;
+ $terminal['type'] = "C";
} else{
$name= preg_replace('/\$$/', '', $value['cn'][0]);
if (isset($value['sambaDomainName'])){
@@ -708,11 +989,23 @@ class systems extends plugin
} else {
$domain= "";
}
- $this->terminals[$value['dn']]= $name.$domain."W";
+ $terminal=$value;
+ $terminal['type'] ="W";
+ $terminal['domain'] = $name.$domain;
}
+ $this->terminals[]=$terminal;
}
}
- natcasesort ($this->terminals);
+
+ $tmp=array();
+ foreach($this->terminals as $tkey => $val ){
+ $tmp[strtolower($val['cn'][0]).$val['dn']]=$val;
+ }
+ ksort($tmp);
+ $this->terminals=array();
+ foreach($tmp as $val){
+ $this->terminals[]=$val;
+ }
reset ($this->terminals);
}