"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 = "