"Eins ist toll", "zwei" => "Zwei ist noch besser"); /* attribute list for save action */ var $ignore_account= TRUE; var $attributes= array(); var $objectclasses= array("whatever"); var $devices = array(); var $ui; var $parent ; var $EditEntry; var $editMode =false; var $DeviceAttrs = array(); var $AllowedDevices = array(); var $Selected = array(); var $delete = array(); function glpiDeviceManagement ($config, $dn= NULL,$used=NULL) { plugin::plugin ($config, $dn); if(!isset($_SESSION['glpiDeviceRegex'])){ $tmp['device_regex'] = "*"; $_SESSION['glpiDeviceRegex'] = $tmp; } $this->ui = get_userinfo(); if(isset($used)){ $this->Selected = $used; } /* Specify which vars are allowed for a sepcific type of device */ $this->DeviceAttrs['case'] = array("designation","format","comment","FK_glpi_enterprise"); $this->DeviceAttrs['moboard'] = array("designation","chipset","comment","FK_glpi_enterprise"); $this->DeviceAttrs['processor'] = array("designation","frequence","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['iface'] = array("designation","bandwidth","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['ram'] = array("designation","frequence","comment","FK_glpi_enterprise","specif_default","type"); $this->DeviceAttrs['hdd'] = array("designation","rpm","interface","cache","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['drive'] = array("designation","speed","interface","is_writer","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['control'] = array("designation","interface","raid","comment","FK_glpi_enterprise"); $this->DeviceAttrs['gfxcard'] = array("designation","ram","interface","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['sndcard'] = array("designation","type","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['power'] = array("designation","power","comment","FK_glpi_enterprise","atx"); $this->DeviceAttrs['pci'] = array("designation","comment","FK_glpi_enterprise","specif_default"); $this->DeviceAttrs['monitor'] = array("name","comments","serial","otherserial","size", "flags_micro","flags_speaker","flags_subd","flags_bnc", "location","type","FK_glpi_enterprise","is_global","deleted","is_template","tplname"); $this->AllowedDevices=array("case","moboard","sndcard","processor","iface","ram","hdd","drive","control","gfxcard","power","pci","monitor"); } function execute() { /* Call parent execute */ plugin::execute(); /* Get all defined devices */ $this->reload(); /* Fill templating stuff */ $smarty= get_smarty(); $display= ""; /* this var is used to ensure that every post is only performed once */ $only_once = true; /* Check Post for some actions */ foreach($_POST as $name => $value){ /* If new_ then we should create an new device */ if((preg_match("/^new_/",$name))&&($only_once)){ /* don't do this twice */ $only_once = false; /*extract device device_type */ $deviceType = preg_replace("/_.*$/","",preg_replace("/^new_/","",$name)); /* Check if type is allowed, and create empty entry */ $tmp = array(); if((!isset($this->DeviceAttrs[$deviceType]))||((!in_array($deviceType,$this->AllowedDevices)))){ print_red(sprintf(_("Internal Error can't create device of type '%s'"),$deviceType)); }else{ foreach($this->DeviceAttrs[$deviceType] as $attr){ $tmp[$attr] = ""; } $tmp['device_type'] = $deviceType; $this->EditEntry = $tmp; $this->editMode =true; } } } /* delete was requested ... show dialog */ if((isset($_GET['act']))&&($_GET['act']=="del_device")){ $id = base64_decode($_GET['id']); $tmp = $this->devices[$id]; $this->delete = $tmp; if(isset($tmp['name'])){ $smarty->assign("warning", sprintf(_("You're about to delete the glpi device '%s'."), $tmp['name'])); }elseif(isset($tmp['designation'])){ $smarty->assign("warning", sprintf(_("You're about to delete the glpi device '%s'."), $tmp['designation'])); }else{ print_a(_("Can't detect object name.")); } return($smarty->fetch(get_template_path('remove_glpi.tpl', TRUE))); } /* Delete entry, but check if this device is in currently in use */ if(isset($_POST['delete_glpi_confirm'])){ if(count($this->parent->handle->is_deviceUsed($this->delete))){ $tmp = $this->parent->handle->is_deviceUsed($this->delete); $names = ""; foreach($tmp as $name){ $names .= ", ".$name; } $names = preg_replace("/^, /","",$names); $names = trim($names); if(count($tmp) == 3){ $names .= " ..."; } print_red(sprintf(_("You can't delete this device, it is still in use by these system(s) '%s'"),$names)); }else{ $this->parent->handle->deleteDevice($this->delete); $this->reload(); } } /* Open entry for editing if requested */ if((isset($_GET['act']))&&($_GET['act']=="edit_device")){ $id = base64_decode($_GET['id']); $this->editMode =true; $this->EditEntry = $this->devices[$id]; } /* Abort editing this entry */ if(isset($_POST['AbortDeviceChanges'])){ $this->EditEntry = array(); $this->editMode = false; } /* Save all changes made on currently selected entry */ if(isset($_POST['SaveDeviceChanges'])){ /* First check if all changes made are allowed */ if(count($this->check($this->EditEntry))==0){ $this->save($this->EditEntry); $this->editMode = false; $this->reload(); }else{ foreach($this->check($this->EditEntry) as $msg){ print_red($msg); } } } /* Check if we are currently editing something ? */ if($this->editMode == true){ return ($this->editDevice($this->EditEntry)); } /* ENDE : GET / POST handling * Below, only output generation for headpage */ $divlist = new divlist("glpi devices"); $divlist->SetEntriesPerPage(0); $divlist->SetHeader(array( array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), array("string" => _("devices"), "attach" => "style=''"), array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" ))); $edit = "%s"; $editdel = ""; $editdel.= ""; $useDevice = ""; foreach($this->devices as $key=>$user){ if(isset($user['designation'])){ $str = "designation"; }else{ $str = "name"; } if(isset($this->Selected[$user['device_type']][$user[$str]])){ $use = " checked "; }else{ $use =""; } /* Dawn databse struckture ....*/ if(empty($user['comment']) && isset($user['comments'])) { $user['comment'] = $user['comments']; } $field1 = array("string" => preg_replace("/%s/",base64_encode($key),preg_replace("/%USE%/",$use,$useDevice)), "attach" => "style='text-align:center;width:20px;'"); $field2 = array("string" => sprintf($edit,base64_encode($key),$user[$str]." [".$user['comment']."]"), "attach" => "style=''"); $field3 = array("string" => sprintf($editdel,base64_encode($key),base64_encode($key)), "attach" => "style='width:60px;border-right:0px;text-align:right;'"); $divlist->AddEntry(array($field1,$field2,$field3)); } $listhead = "