Code

- Removed obsoleted dir /usr/lib/gosa
[gosa.git] / include / class_glpi.inc
index 90d475503a066abedbc7663bed3ae86aea2ec3d2..162e0fed6eab5f97e5e5e4e9d4fd7c1300d13381 100644 (file)
@@ -1,50 +1,6 @@
 <?php
-/*  This class is used for glpi account management.
-       ADD // EDIT // DELETE of computers or changng 
-       something else in the glpi database should be done here.
 
 
-       function glpiDB($server,$user,$pwd,$db){
-       function SelectDB()
-       function query($qry)
-
-// return all available Sytemtypes 
-function getSystemTypes()
-
-// Update system type specifid by id
-function updateSystemType($name,$id)
-
-// Add system type
-function addSystemType($name)
-
-// Delete system type by name / id 
-function removeSystemType_byID($id)
-function removeSystemType_byNAME($name)
-
-// Get all manufacturer 
-function getEnterprisesTypes()
-
-// Update with specified attributes, on entry $id
-function updateEnterprisesType($array,$id)
-
-// remove entry with id=$id
-function removeEnterprisesType($id)
-
-// return all os types 
-function getOSTypes()
-
-// return all users 
-function getUsers()
-
-// Return available devices 
-function getDevices()
-
-// return computer informations  (phone, terminal,ws ...)
-function getComputerInformations_byID($id)
-function getComputerInformations_byNAME($name)
-
-
- */
 class glpiDB{
 
        var $user               ="";
@@ -57,6 +13,9 @@ class glpiDB{
 
        var $lasterror  ="";
 
+       var $deviceMappingGOsaGlpi;
+       var $deviceMappingTableNameID;
+
        function glpiDB($server,$user,$pwd,$db){
                $this->server   = $server;
                $this->user     = $user;
@@ -69,6 +28,35 @@ class glpiDB{
                        $this->is_connected = true;
                        $this->SelectDB($this->db);
                }       
+               $this->deviceMappingGOsaGlpi = array(
+                               "glpi_device_case"      => "case",
+                               "glpi_device_control"   => "control",
+                               "glpi_device_drive"     => "drive",
+                               "glpi_device_gfxcard"   => "gfxcard",
+                               "glpi_device_hdd"       => "hdd",
+                               "glpi_device_iface"     => "iface",
+                               "glpi_device_moboard"   => "moboard",
+                               "glpi_device_pci"       => "pci",
+                               "glpi_device_power"     => "power",
+                               "glpi_device_processor" => "processor",
+                               "glpi_device_ram"       => "ram",
+                               "glpi_monitors"       => "monitor",
+                               "glpi_device_sndcard"   => "sndcard");
+
+               $this->deviceMappingTableNameID = array(                "moboard"       => 1,                                                                           
+                               "processor"     => 2,                                                                           
+                               "ram"           => 3,                                                                           
+                               "hdd"           => 4,                                                                           
+                               "iface"         => 5,                                                                           
+                               "drive"         => 6,                                                                           
+                               "control"       => 7,                                                                           
+                               "gfxcard"       => 8,                                                                           
+                               "sndcard"       => 9,                                                                           
+                               "pci"           => 10,                                                                          
+                               "case"          => 11,                                                                          
+                               "power"         => 12);
+
+
        }
 
        function SelectDB()
@@ -78,12 +66,16 @@ class glpiDB{
                }
        }
 
+
+       /* This functions checks if the selected computer/network 
+          device is already available in the db
+        */
        function is_account($dn)
        {
                if(!$this->is_connected){
-            $this->lasterror ="Can't query anything, if we aren't connected.";
-            return(false);
-        }else{
+                       $this->lasterror ="Can't query anything, if we aren't connected.";
+                       return(false);
+               }else{
                        $qry = "SELECT * FROM glpi_computers WHERE name='".$dn."';";
                        $res = $this->query($qry);
                        if(count($res)==0){
@@ -94,6 +86,8 @@ class glpiDB{
                }
        }
 
+       /* this function queries everything 
+        */
        function query($qry)
        {
                if(!$this->is_connected){
@@ -110,7 +104,9 @@ class glpiDB{
                }
        }
 
-       /* System types */
+       /* System types 
+       Returns all defined system types 
+        */
        function getSystemTypes()
        {
                if($this->is_connected){
@@ -119,6 +115,7 @@ class glpiDB{
                        foreach($tmp as $t){
                                $ret[$t['ID']]=$t['name'];
                        }
+                       asort($ret);
                        return($ret);
                }else{
                        echo "not connected";
@@ -126,10 +123,11 @@ class glpiDB{
                }
        }
 
-       /* System types */
+       /* System types 
+          Update a system type         
+       */
        function updateSystemType($name,$id)
        {
-
                if($this->is_connected){
                        $tmp = $this->query("SELECT * FROM glpi_type_computers WHERE ID=".$id.";");
                        if(isset($tmp[0])){
@@ -144,7 +142,9 @@ class glpiDB{
                }
        }
 
-       /* System types */
+       /* System types 
+       Add one entry to the system types 
+     */
        function addSystemType($name)
        {
                if($this->is_connected){
@@ -161,8 +161,10 @@ class glpiDB{
                }
        }
 
-       /* System types */
-       function removeSystemType_byID($id)
+       /* System types 
+       Remove one entry from the system types (specified by ID=$id)
+     */
+       function removeSystemType($id)
        {
                if($this->is_connected){
                        $tmp = $this->query("SELECT * FROM glpi_type_computers WHERE ID=".$id.";");
@@ -178,15 +180,35 @@ class glpiDB{
                }
        }
 
-       /* Manufacturer */      
-       function getEnterprisesTypes()
+       /* System type is used */
+       function is_systemTypeUsed($ID){
+               if($this->is_connected){
+                       $ret = array();
+                       $qry="SELECT name,type FROM glpi_computers WHERE type=".$ID." LIMIT 3;";
+                       $res = $this->query($qry);
+                       foreach($res as $val){
+                               $ret[$val['name']] = $val['name'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+
+       /* Manufacturer 
+          Returns all defined manufacturers
+       */      
+       function getEnterprises()
        {
                if($this->is_connected){
                        $ret = array();
-                       $tmp = $this->query("SELECT * FROM glpi_enterprises;");
+                       $tmp = $this->query("SELECT * FROM glpi_enterprises ORDER BY name;");
                        foreach($tmp as $t){
                                $ret[$t['ID']]=$t['name'];
                        }
+                       
                        return($ret);
                }else{
                        echo "not connected";
@@ -194,7 +216,9 @@ class glpiDB{
                }
        }
 
-       /* Manufacturer */      
+       /* Manufacturer 
+          Returns single manufacturer
+       */      
        function getEnterprise($id)
        {
                if($this->is_connected){
@@ -207,8 +231,10 @@ class glpiDB{
                }
        }
 
-       /* System types */
-       function updateEnterprisesType($array,$id)
+       /* Manufacturer 
+       Updates already existing manufacturer
+    */
+       function updateEnterprise($array,$id)
        {
                if(!is_array($array)){
                        echo "updateEnterprisesType: first paraeter must be an array";
@@ -240,7 +266,10 @@ class glpiDB{
                }
        }
 
-       function addEnterprisesType($array)
+       /* Manufacturer
+          Add new manufacturer
+        */
+       function addEnterprise($array)
        {
                if(!is_array($array)){
                        echo "addUser: first paraeter must be an array";
@@ -270,9 +299,10 @@ class glpiDB{
 
        }
 
-
-
-       function removeEnterprisesType($id)
+       /*      Manufacturer
+               remove manufacturer
+        */
+       function removeEnterprise($id)
        {
                if($this->is_connected){
                        $tmp = $this->query("SELECT * FROM glpi_enterprises WHERE ID=".$id.";");
@@ -288,27 +318,52 @@ class glpiDB{
                }
        }
 
-
-       /* Operating systems */
-       function getOSTypes()
+       /* Operating systems 
+          Returns all OSs
+        */
+       function getOSTypes($keys = false)
        {
                if($this->is_connected){
                        $ret = array();
-                       $tmp=($this->query("SELECT * FROM glpi_dropdown_os;"));
+                       $tmp=($this->query("SELECT * FROM glpi_dropdown_os ORDER by name;"));
 
-                       foreach($tmp as $t){
-                               $ret[$t['ID']]=$t['name'];
+                       if($keys){
+                               foreach($tmp as $t){
+                                       $ret[$t['name']]=$t['ID'];
+                               }
+                       }else{
+                               foreach($tmp as $t){
+                                       $ret[$t['ID']]=$t['name'];
+                               }
                        }
+                       return($ret);
+
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
 
+       /* Operating system is used ? */
+       function is_osUsed($ID){
+               if($this->is_connected){
+                       $ret = array();
+                       $qry="SELECT name,type FROM glpi_computers WHERE os=".$ID." LIMIT 3;";
+                       $res = $this->query($qry);
+                       foreach($res as $val){
+                               $ret[$val['name']] = $val['name'];
+                       }
                        return($ret);
-                               
                }else{
                        echo "not connected";
                        return(false);
                }
        }
 
-       /* os */
+
+       /*  Operating systems
+               Add a new operating system to the dropdown menus   
+        */
     function addOS($name)
     {
         if($this->is_connected){
@@ -325,7 +380,9 @@ class glpiDB{
         }
     }
 
-          /* System types */
+    /* Operating systems 
+       remove one OS entry
+     */
     function removeOS_byID($id)
     {
         if($this->is_connected){
@@ -342,12 +399,11 @@ class glpiDB{
         }
     }
 
-
-       
-       /* System types */
+       /* Operating systems 
+          Update existing OS entry
+       */
        function updateOS($name,$id)
        {
-
                if($this->is_connected){
                        $tmp = $this->query("SELECT * FROM glpi_dropdown_os WHERE ID=".$id.";");
                        if(isset($tmp[0])){
@@ -362,8 +418,8 @@ class glpiDB{
                }
        }
 
-
-       /* Technical / Responsible person / glpi users  */
+       /* This returns all available glpi users 
+     */
        function getUsers()
        {
                if($this->is_connected){
@@ -380,7 +436,8 @@ class glpiDB{
                }
        }
 
-       
+       /* this function adds a new glpi user
+     */
        function addUser($array,$dn)
        {
                if(!is_array($array)){
@@ -412,6 +469,9 @@ class glpiDB{
 
        }
 
+       /* This function updates a glpi user 
+       with the given data
+     */
        function updateUser($array,$dn)
        {
                if(!is_array($array)){
@@ -445,54 +505,12 @@ class glpiDB{
 
        }
 
-
-
-       /* Gets all pulldown and needed tableinformations */
-       function getDevices()
-       {
-               if($this->is_connected){
-                       $ret = array();
-                       $ret['devices']['glpi_device_moboard']          = $this->query("SELECT * FROM glpi_device_moboard;");
-                       $ret['devices']['glpi_device_case']             = $this->query("SELECT * FROM glpi_device_case;");
-                       $ret['devices']['glpi_device_control']          = $this->query("SELECT * FROM glpi_device_control;");
-                       $ret['devices']['glpi_device_drive']            = $this->query("SELECT * FROM glpi_device_drive;");
-                       $ret['devices']['glpi_device_gfxcard']          = $this->query("SELECT * FROM glpi_device_gfxcard;");
-                       $ret['devices']['glpi_device_hdd']                      = $this->query("SELECT * FROM glpi_device_hdd;");
-                       $ret['devices']['glpi_device_iface']            = $this->query("SELECT * FROM glpi_device_iface;");
-                       $ret['devices']['glpi_device_pci']                      = $this->query("SELECT * FROM glpi_device_pci;");
-                       $ret['devices']['glpi_device_power']            = $this->query("SELECT * FROM glpi_device_power;");
-                       $ret['devices']['glpi_device_processor']        = $this->query("SELECT * FROM glpi_device_processor;");
-                       $ret['devices']['glpi_device_ram']                      = $this->query("SELECT * FROM glpi_device_ram;");
-                       $ret['devices']['glpi_device_sndcard']          = $this->query("SELECT * FROM glpi_device_sndcard;");
-                       return($ret);
-               }else{
-                       echo "not connected";
-                       return(false);
-               }
-       }
-
+       /* This function returns all available data 
+       from a specified dn
+     */
        function getComputerInformations($name)
        {
                if($this->is_connected){        
-                       /*
-                       $ret                                                    = $this->query( '       
-                                       SELECT
-                                       c.ID,
-                                       c.name      as "Name",
-                                       c.comments  as "Commets",
-                                       d.name      as "OS",
-                                       e.name      as "Manufacturer",
-                                       dc.name     as "Type",
-                                       u.name      as "Technical responsible"
-                                       FROM
-                                       glpi_computers as c
-                                       left join   glpi_dropdown_os    as d    on (c.os                    = d.ID)
-                                       left join   glpi_enterprises    as e    on (c.FK_glpi_enterprise    = e.ID)
-                                       left join   glpi_type_computers as dc   on (c.type                  = dc.ID)
-                                       left join   glpi_users          as u    on (c.tech_num              = u.ID)
-
-                                       WHERE c.Name!="" AND c.ID='.$id.';');
-               */
                        $ret = $this->query("SELECT * FROM glpi_computers WHERE name='".$name."';");
                        return($ret);           
                }else{
@@ -501,6 +519,8 @@ class glpiDB{
                }
        }
 
+       /*  This fucntions updates an already existing entry 
+     */
        function updateComputerInformations($array,$name)
        {
                if(!is_array($array)){
@@ -536,6 +556,8 @@ class glpiDB{
 
        }
 
+       /* This function adds a new inventory device (computer phone etc)
+     */
        function addComputerInformations($array)
        {
                if(!is_array($array)){
@@ -568,11 +590,323 @@ class glpiDB{
 
        }
 
-       function removeComputerInformations($id)
+       /* this functions checks if the given Device 
+     * already exists 
+     */
+       function deviceExists($attr)
+       {
+               $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi;
+               if($this->is_connected){        
+                       $arr = array_flip($deviceMappingGOsaGlpi);
+
+                       $tbl_name = $arr[$attr['device_type']];
+                       if(!isset($attr['ID'])){
+                               return(false);
+                       }else{
+                               $qry = "SELECT * FROM ".$tbl_name." WHERE ID=".$attr['ID'].";";
+                               $res = $this->query($qry);
+                               if(count($res) != 0){
+                                       return(true);
+                               }
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+
+               return(false);
+       }
+
+               
+       /* Check if given device is used by some accounts
+     *  (helpfull to avoid removement of used devices)
+     */
+       function is_deviceUsed($item)
+       {
+               $deviceMappingGOsaGlpi          = array_flip($this->deviceMappingGOsaGlpi);
+               $deviceMappingTableNameID       = $this->deviceMappingTableNameID;
+               if($this->is_connected){
+                       $tablename =  $deviceMappingGOsaGlpi[$item['device_type']];
+                       $type = $item['device_type'];
+
+                       $ret = array();
+
+                       if($type=="monitor"){
+                               $str = "SELECT c.name FROM glpi_connect_wire as w, glpi_computers as c WHERE w.end1=".$item['ID']." AND w.end2 = c.ID AND w.type=4;"; 
+                       }else{
+                               $str = "SELECT c.name FROM glpi_computer_device as d, glpi_computers as c WHERE d.FK_computers=c.ID AND FK_device=".$item['ID']." AND device_type=".$deviceMappingTableNameID[$type]." ;";
+                       }
+
+                       $res = $this->query($str);
+       
+                       foreach($res as $val){
+                               $ret[$val['name']] = $val['name'];
+                       }       
+
+                       return($ret);//count($this->query($str)));
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+                       
+       }
+
+
+       /* This functions deletes a specified entry 
+     * from our device tables 
+     */
+       function deleteDevice($attr)
+       {
+               $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi;
+               if($this->is_connected){
+                       $arr = array_flip($deviceMappingGOsaGlpi);
+                       
+                       $device_type = $attr['device_type'];
+                       unset($attr['device_type']);                    
+
+                       $tbl_name = $arr[$device_type];
+
+                       $this->query("DELETE FROM ".$tbl_name." WHERE ID=".$attr['ID'].";");    
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* This funtions updated an already existing device
+     */
+       function updateDevices($attr)
+       {
+               $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi;
+               if($this->is_connected){
+                       $arr = array_flip($deviceMappingGOsaGlpi);
+                       
+                       $device_type = $attr['device_type'];
+                       unset($attr['device_type']);                    
+
+                       $tbl_name = $arr[$device_type];
+
+                       $str = "UPDATE ".$tbl_name." SET ";
+                       foreach($attr as $name => $value){
+                               $str.=$name."='".$value."', ";
+                       }
+                       $str = preg_replace("/, $/","",$str);
+                       $str .= " WHERE ID=".$attr['ID'].";";
+                       $this->query($str);     
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* Returns all possible RAM types 
+     * like SDRAM , DIMM .....
+     */
+       function getRAMTypes()
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $tmp = ($this->query("SELECT * FROM glpi_dropdown_ram_type;"));
+                       foreach($tmp as $t){
+                               $ret[$t['ID']]=$t['name'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+       
+       /* Returns all possible HDD connection types 
+     * like IDE SCSI ...
+     */
+       function getGlpiDeviceControlTypes()
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $tmp = ($this->query("SELECT * FROM glpi_dropdown_hdd_type;"));
+                       foreach($tmp as $t){
+                               $ret[$t['ID']]=$t['name'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+       
+       /* Returns all possible gfx card connection types
+     * like PCI-X PCI AGP ....
+        */
+       function getGlpiGfxControlTypes()
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $tmp = ($this->query("SELECT * FROM glpi_dropdown_hdd_type;"));
+                       foreach($tmp as $t){
+                               $ret[$t['ID']]=$t['name'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+       
+       /* Devices 
+       Adds a new single device to our db
+    */ 
+       function addDevice($attr)
+       {
+               $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi;
+               if($this->is_connected){        
+                       $arr = array_flip($deviceMappingGOsaGlpi);
+                       
+                       $device_type = $attr['device_type'];
+                       unset($attr['device_type']);                    
+
+                       $tbl_name = $arr[$device_type];
+            $v = "";
+            $a = "";
+            foreach($attr as $name => $value){
+               $a .= $name.", ";
+               $v .= "'".$value."', ";
+            }
+            if(empty($v)){
+                echo "addDevice: no attributes given ";
+                return(false);
+            }else{
+                $a = preg_replace("/, $/","",$a);
+                $v = preg_replace("/, $/","",$v);
+                return($this->query("INSERT INTO ".$tbl_name." (".$a.") VALUES (".$v.");"));
+            }
+
+        }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       /* Return all available devices 
+     */
+       function getDevices()
+       {
+               $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi;
+               if($this->is_connected){
+                       $arr = $deviceMappingGOsaGlpi; 
+               
+                       $res = array();
+                       foreach($arr as $glpi => $gosa){
+                               $qry = "SELECT * FROM ".$glpi.";";
+                               $ret = $this->query($qry);
+                               foreach($ret as $id => $entry){
+                                       $entry['device_type'] = $gosa;
+       
+                                       if(isset($entry['designation'])){
+                                               $res[$entry['designation']."-".$gosa] = $entry;
+                                       }else{
+                                               $res[$entry['name']."-".$gosa] = $entry;
+                                       }
+                               }
+                       }
+                       return($res);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* This function returns all used devices 
+     */
+       function getUsedDevices($computerID)
+       {
+               $deviceMappingGOsaGlpi = array_flip($this->deviceMappingGOsaGlpi);
+               $deviceMappingTableNameID       = $this->deviceMappingTableNameID;
+       
+               if($this->is_connected){
+                       $qry = "SELECT * FROM glpi_computer_device WHERE FK_computers=".$computerID.";";
+                       $res = $this->query($qry);
+               
+                       $ret = array();
+                       foreach($deviceMappingGOsaGlpi as $GOsa => $glpi){
+                               $ret[$GOsa] = array();
+                       }
+
+                       $tbls = array_flip($deviceMappingTableNameID);
+
+                       foreach($res as $device){
+                               $devtype = $tbls[$device['device_type']];
+                               $tbl_name = $deviceMappingGOsaGlpi[$devtype];
+                               $qry = ("SELECT * FROM ".$tbl_name." WHERE ID=".$device['FK_device'].";");
+                               $res2 = $this->query($qry);
+                               if(count($res2)!=0){
+                                       $ret[$devtype][$res2[0]['designation']]=$res2[0];
+                               }
+
+                       $qry = "SELECT * FROM glpi_connect_wire WHERE type=4 AND end2=".$computerID.";";
+                       $res2 = $this->query($qry);
+                       foreach($res2 as $monitor){
+                               $qry = "SELECT * FROM glpi_monitors WHERE ID=".$monitor['end1'].";";
+                               $res3 = $this->query($qry);
+                               foreach($res3 as $moni){
+                                       $ret['monitor'][$moni['name']]=$moni;
+                               }
+                       }
+
+
+
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* This function removes all given devices from a computer, specified by $id
+       In the next step all devices specified by devices will be added.
+        */
+       function addDevicesToComputer($devices, $id)
+       {
+               $deviceMappingGOsaGlpi = array_flip($this->deviceMappingGOsaGlpi);
+               $deviceMappingTableNameID       = $this->deviceMappingTableNameID;
+       
+               if(($id == "" )||(!is_numeric($id))){
+                       return (false); 
+               }
+               if($this->is_connected){
+                       $qry = "DELETE FROM glpi_computer_device WHERE FK_computers=".$id.";";
+                       $this->query($qry);     
+               
+                       foreach($devices as $type => $entries){
+                               foreach($entries as $entry){
+                                       if($type=="monitor"){
+                                               $str = "INSERT INTO glpi_connect_wire (end1,end2,type) 
+                                               VALUES (".$entry['ID'].",".$id.",4);";
+                                       }else{
+                                               $str = "INSERT INTO glpi_computer_device (device_type,FK_device,FK_computers) 
+                                               VALUES (".$deviceMappingTableNameID[$type].",".$entry['ID'].",".$id.");";
+                                       }
+                                       $this->query($str);
+                               }
+                       }
+               
+
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+
+       }
+
+       function removeComputerInformations($name)
        {
-/*             if($this->is_connected){
-                       $tmp = $this->query("SELECT * FROM glpi_computers WHERE ID=".$id.";");
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_computers WHERE name='".$name."';");
                        if(isset($tmp[0])){
+                               $id = $tmp[0]['ID'];
+                               $this->query("DELETE FROM glpi_connect_wire WHERE end2=".$id.";");
+                               $this->query("DELETE FROM glpi_computer_device WHERE FK_computers=".$id.";");
                                return($this->query("DELETE FROM glpi_computers WHERE ID=".$id.";"));
                        }else{
                                echo "can't remove not existing entry";
@@ -582,7 +916,6 @@ class glpiDB{
                        echo "not connected";
                        return(false);
                }
-*/
        }
 
        function is_connected()
@@ -590,6 +923,853 @@ class glpiDB{
                return($this->is_connected);
        }
 
+       function addAttachmentsToComputer($attr,$id)
+       {
+        if(($id == "" )||(!is_numeric($id))){
+            return (false);
+        }
+        if($this->is_connected){
+            $qry = "DELETE FROM glpi_doc_device WHERE (FK_device=".$id.") AND (device_type=1);";
+            $this->query($qry);
+                       
+                       foreach($attr as $aid => $entry){
+                               $str = "INSERT INTO glpi_doc_device (FK_doc,FK_device,device_type,is_template) 
+                                                                                               VALUES
+                                                                                                       ($aid,$id,1,'0');";
+                               $this->query($str);
+                       }
+        }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       function getAssignAttachments($id)
+       {
+
+               if($this->is_connected){
+                       $qry= "SELECT * FROM glpi_doc_device WHERE (device_type=1) AND (FK_device=".$id.");";
+                       $ret = $this->query($qry);
+                       return($ret);
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       function deleteAttachment($id)
+       {
+               if($this->is_connected){
+                       $qry = "DELETE FROM glpi_docs WHERE ID=".$id."";
+                       $this->query($qry);
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+       
+       function getAttachments()
+       {
+               $ret = array();
+               if($this->is_connected){
+                       $qry = "SELECT * FROM glpi_docs WHERE name!='';";
+                       $re = $this->query($qry);
+
+                       foreach($re as $entry){
+                               $ret[$entry['ID']]=$entry;
+                       }
+
+                       return($ret);
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+       
+       function saveAttachments($attrs,$id = -1)
+       {
+               if($this->is_connected){
+                       $atr = array("name","filename","rubrique","mime","date_mod","comment","deleted","link");
+                       $tmp = array();
+                       foreach($atr as $at){
+                               if(isset($attrs[$at])){
+                                       $tmp[$at] = $attrs[$at];
+                               }
+                       }
+                       if(count($tmp)==0){
+                               return(false);
+                       }else{
+
+                               // Add
+                               if($id == -1){
+                                       $str = "INSERT INTO glpi_docs ";
+                                       $namen = "";
+                                       $values= "";
+                                       foreach($tmp as $name => $value){       
+                                               $namen .= $name.", ";
+                                               if(is_numeric($value)){
+                                                       $values .= $value.", ";
+                                               }else{
+                                                       $values .= "'".$value."', ";
+                                               }
+                                       }
+                                       $values = preg_replace("/, $/","",$values);
+                                       $namen  = preg_replace("/, $/","",$namen);
+                                       $str .= "(".$namen.") VALUES (".$values.");";
+                               }else{
+                                       $str = "UPDATE glpi_docs SET ";
+                                       foreach($tmp as $name => $value){       
+                                               $str .= $name."= ";
+                                               if(is_numeric($value)){
+                                                       $str .= $value.", ";
+                                               }else{
+                                                       $str .= "'".$value."', ";
+                                               }
+                                       }
+                                       $str = preg_replace("/, $/","",$str);
+                                       $str .= " WHERE ID=".$id.";";
+                               }
+                               $this->query($str);
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       
+       /* Check if given attachment id is used in any Device 
+               ( - avoid removing of used attachments)
+     */
+       function is_attachmentUsed($id)
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $qry = "SELECT t.name FROM glpi_computers as t, glpi_doc_device WHERE t.ID = glpi_doc_device.FK_device AND FK_doc =".$id." LIMIT 3;";
+                       $res = $this->query($qry);
+                       foreach($res as $val){
+                               $ret[$val['name']] = $val['name'];
+                       }
+                       return($ret);
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+               
+       /* Monitor handling 
+     */
+    function getMonitors()
+       {
+               if($this->is_connected){
+                       $qry= "SELECT * FROM glpi_monitors;";
+                       return($this->query($qry));     
+               
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+    function updatedMonitor()
+       {
+               if($this->is_connected){
+//                     $qry= "SELECT * FROM glpi_monitors;";
+//                     return($this->query($qry));     
+               
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+    function addMonitor()
+       {
+               if($this->is_connected){
+//                     $qry= "SELECT * FROM glpi_monitors;";
+//                     return($this->query($qry));     
+               
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+    function removeMonitor($id)
+       {
+               if($this->is_connected){
+                       $qry= "DELETE FROM glpi_monitors WHERE ID=".$id.";";
+                       $this->query($qry);     
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+    function getMonitorTypes()
+       {
+               if($this->is_connected){
+                       $qry= "SELECT * FROM glpi_type_monitors;";
+                       return($this->query($qry));     
+               
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+    function getLocationTypes()
+       {
+               if($this->is_connected){
+                       $qry= "SELECT * FROM glpi_dropdown_locations;";
+                       return($this->query($qry));     
+               
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+    function getStateTypes()
+       {
+               if($this->is_connected){
+                       $qry= "SELECT * FROM glpi_dropdown_state;";
+                       return($this->query($qry));     
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       
+       /* Printer functions
+     */
+
+       /* is printer type used ? 
+     */
+       function is_printerTypeUsed($id)
+       {
+               if($this->is_connected){
+                       $qry = "SELECT * FROM glpi_printers WHERE type=".$id.";";
+                       $res = $this->query( $qry);
+                       $ret =array();
+                       foreach($res as $entry){
+                               $ret[$entry['ID']] = $entry['name'];
+                       }
+                       return($ret);
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       /* This functions checks if the selected computer/network 
+          device is already available in the db
+        */
+       function is_printer_account($dn)
+       {
+               if(!$this->is_connected){
+                       $this->lasterror ="Can't query anything, if we aren't connected.";
+                       return(false);
+               }else{
+                       $qry = "SELECT * FROM glpi_printers WHERE name='".$dn."';";
+                       $res = $this->query($qry);
+                       if(count($res)==0){
+                               return(false);
+                       }else{
+                               return(true);
+                       }
+               }
+       }
+
+       /* This function returns all available data 
+       from a specified dn
+     */
+       function getPrinterInformations($name)
+       {
+               if($this->is_connected){        
+                       $ret = $this->query("SELECT * FROM glpi_printers WHERE name='".$name."';");
+                       return($ret);           
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* Get Printer attachments
+     */
+       function getAssignPrinterAttachments($id)
+       {
+
+               if($this->is_connected){
+                       $qry= "SELECT * FROM glpi_doc_device WHERE (device_type=3) AND (FK_device=".$id.");";
+                       $ret = $this->query($qry);
+                       return($ret);
+               }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       /* Printer types 
+       Returns all defined printer types 
+        */
+       function getPrinterTypes()
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $tmp = ($this->query("SELECT * FROM glpi_type_printers ORDER BY name; "));
+                       foreach($tmp as $t){
+                               $ret[$t['ID']]=$t['name'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* Add pritner types 
+       Add one entry to the printer types 
+     */
+       function addPrinterType($name)
+       {
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_type_printers WHERE name='".$name."';");
+                       if(isset($tmp[0])){
+                               //echo "such an entry already exists";
+                               return(false);
+                       }else{  
+                               return($this->query("INSERT INTO glpi_type_printers (name) VALUES ('".$name."');"));
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* remove printer types 
+       Remove one entry from the printer types (specified by ID=$id)
+     */
+       function removePrinterType($id)
+       {
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_type_printers WHERE ID=".$id.";");
+                       if(isset($tmp[0])){
+                               return($this->query("DELETE FROM glpi_type_printers WHERE ID=".$id.";"));       
+                       }else{
+                               echo "can't remove not existing entry";
+                               return(false);  
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* Update printer types 
+          Update a printer type        
+       */
+       function updatePrinterType($name,$id)
+       {
+
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_type_printers WHERE ID=".$id.";");
+                       if(isset($tmp[0])){
+                               return($this->query("UPDATE glpi_type_printers SET name='".$name."' WHERE ID=".$id.";"));       
+                       }else{
+                               echo "can't update not existing entry";
+                               return(false);  
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+
+       /*  This fucntions updates an already existing entry 
+     */
+       function updatePrinterInformations($array,$name)
+       {
+               if(!is_array($array)){
+                       echo "updatePrinterInformations: first paraeter must be an array";
+               }elseif($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM  glpi_printers WHERE name='".$name."';");
+                       if(isset($tmp[0])){
+
+                               $atr = array(   "ID","name","serial","otherserial","contact","contact_num",
+                                               "tech_num","comments","date_mod","location","domain","network","ramSize","flags_serial","flags_par","flags_usb",
+                                               "model","type","is_template","tplname","FK_glpi_enterprise","deleted");
+                               $v = "";
+                               foreach($atr as $at){
+                                       if(isset($array[$at])){
+                                               $v .= " ".$at."='".$array[$at]."', ";
+                                       }
+                               }
+                               if(empty($v)){
+                                       echo "updateSystemInformations: no attributes given ";
+                                       return(false);
+                               }else{
+                                       $v = preg_replace("/, $/","",$v);
+                                       return($this->query("UPDATE glpi_printers SET ".$v." WHERE name='".$name."';"));
+                               }
+                       }else{
+                               echo "can't update not existing entry";
+                               return(false);
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+
+       }
+
+       /* This function adds a new inventory settings for printers
+     */
+       function addPrinterInformations($array)
+       {
+               if(!is_array($array)){
+                       echo "updateComputerInformations: first paraeter must be an array";
+               }elseif($this->is_connected){
+                       $atr = array(   "ID","name","serial","otherserial","contact","contact_num",
+                                       "tech_num","comments","date_mod","os","location","domain","network","ramSize","flags_serial","flags_par","flags_usb",
+                                       "model","type","is_template","tplname","FK_glpi_enterprise","deleted");
+                       $v = "";
+                       $a = "";
+                       foreach($atr as $at){
+                               if(isset($array[$at])){
+                                       $a .= $at.", ";
+                                       $v .= "'".$array[$at]."', ";
+                               }
+                       }
+                       if(empty($v)){
+                               echo "updateComputerInformations: no attributes given ";
+                               return(false);
+                       }else{
+                               $a = preg_replace("/, $/","",$a);
+                               $v = preg_replace("/, $/","",$v);
+                               return($this->query("INSERT INTO glpi_printers (".$a.") VALUES (".$v.");"));
+                       }
+               
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* add atachment to given printer */
+       function addAttachmentsToPrinter($attr,$id)
+       {
+        if(($id == "" )||(!is_numeric($id))){
+            return (false);
+        }
+        if($this->is_connected){
+            $qry = "DELETE FROM glpi_doc_device WHERE (FK_device=".$id.") AND (device_type=3);";
+            $this->query($qry);
+                       
+                       foreach($attr as $aid => $entry){
+                               $str = "INSERT INTO glpi_doc_device (FK_doc,FK_device,device_type,is_template) 
+                                                                                               VALUES
+                                                                                                       ($aid,$id,3,'0');";
+                               $this->query($str);
+                       }
+        }else{
+            echo "not connected";
+            return(false);
+        }
+       }
+
+       function removePrinterInformations($name)
+       {
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_printers WHERE name='".$name."';");
+                       if(isset($tmp[0])){
+                               $id = $tmp[0]['ID'];
+//                             $this->query("DELETE FROM glpi_connect_wire WHERE end2=".$id.";");
+                               $this->query("DELETE FROM glpi_doc_device WHERE FK_device=".$id." AND device_type=3;");
+                               return($this->query("DELETE FROM glpi_printers WHERE ID=".$id.";"));
+                       }else{
+                               echo "can't remove not existing entry";
+                               return(false);
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+
+       /* Cartridges 
+     */
+       /* return all assigned cartridges */
+       function getUsedCartridges($printerID)
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $qry = "SELECT 
+                                               c.date_use                      as date_use,
+                                               c.ID                            as ID, 
+                                               t.ID                            as type_ID,
+                                               t.name                          as name, 
+                                               c.FK_glpi_printers      as FK_glpi_printers, 
+                                               d.name                          as type_name 
+                                       FROM 
+                                               glpi_dropdown_cartridge_type as d,
+                                               glpi_cartridges as c, 
+                                               glpi_cartridges_type as t 
+                                       WHERE   c.FK_glpi_cartridges_type = t.ID 
+                                               AND t.type = d.ID 
+                                               AND c.FK_glpi_printers = ".$printerID.";"; 
+                       $res = $this->query($qry);
+                       foreach($res as $entry){
+                               $ret[$entry['ID']] = $entry;
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* return all assigned cartridges */
+       function getAvailableCartridgeTypes($printerTypeID)
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $qry= "
+       SELECT  
+                       ct.ID                   as cartridgeID,
+                       ct.name                 as cartridgeName,
+                       pt.ID                   as printerTypeID,
+                       pt.name                 as printerTypeName,
+                       ct.type                 as cartridgeTypeID,
+                       dt.name                 as cartridgeTypeName 
+       FROM    
+                       glpi_type_printers                              as pt, 
+                       glpi_cartridges_type                    as ct, 
+                       glpi_dropdown_cartridge_type    as dt, 
+                       glpi_cartridges_assoc                   as ac
+        WHERE 
+                               ac.FK_glpi_type_printer = pt.ID 
+                       AND ac.FK_glpi_cartridges_type = ct.ID 
+                       AND ct.type=dt.ID 
+                       AND pt.ID=".$printerTypeID.";";
+                       $res = $this->query($qry);
+                       foreach($res as $entry){
+                               $ret[$entry['cartridgeID']] = $entry;
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function removeCartridgeFromPrinter($cartridgeID)
+       {
+               if($this->is_connected){
+                       $qry = "DELETE FROM glpi_cartridges WHERE ID=".$cartridgeID.";";
+                       return($this->query($qry));
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function addCartridgeFromPrinter($printerID,$cartridgeID)
+       {
+               if($this->is_connected){
+                       $qry ="INSERT INTO 
+                                               glpi_cartridges (FK_glpi_cartridges_type,FK_glpi_printers,date_in,date_use) 
+                                  VALUES 
+                                               (".$cartridgeID.",".$printerID.",'".date("Y-m-d")."','".date("Y-m-d")."');";    
+                       return($this->query($qry));
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function is_cartridgeTypeUsed($id){
+               if($this->is_connected){
+                       $qry = "SELECT p.ID,p.name as name FROM glpi_cartridges as c,glpi_printers as p WHERE p.ID=c.FK_glpi_printers AND c.FK_glpi_cartridges_type=".$id.";";
+                       $res = $this->query($qry);
+                       $ret =array();
+                       foreach($res as $entry){
+                               $ret[$entry['ID']] = $entry['name'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function getCartridgeTypeInformations($id = "all"){
+               if($this->is_connected){
+                       $ret = array();                 
+                       if($id != "all"){
+                               $qry = "SELECT * FROM glpi_cartridges_type WHERE ID = ".$id.";";
+                       }else{
+                               $qry = "SELECT * FROM glpi_cartridges_type;";
+                       }
+               
+                       $res = ($this->query($qry));
+                       foreach($res as $entry){
+                               $ret[$entry['ID']] = $entry;
+                       }       
+                       return($ret);
+
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function getCartridgeTypes(){
+               if($this->is_connected){
+                       $ret = array();                 
+                       $qry = "SELECT * FROM glpi_dropdown_cartridge_type;";
+                       $res = ($this->query($qry));
+                       foreach($res as $entry){
+                               $ret[$entry['ID']] = $entry['name'];
+                       }       
+                       return($ret);
+
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+
+
+       /* check if given manufacturer ID ist still in use.
+          The problem is, that nearly every table uses manufacturers .... 
+     */
+       function is_manufacturerUsed($id)
+       {
+               if($this->is_connected){
+                       $tables = array();
+                       foreach($this->deviceMappingGOsaGlpi as $entry => $table){
+                               $tables[] = $entry;
+                       }
+                       $tables[] ="glpi_computers";
+                       $tables[] ="glpi_cartridges_type";
+                       $ret = array();
+                       $i = 3;
+                       foreach($tables as $tbl){
+                               if($i <= 0 ) continue;
+                               $qry = "SELECT * FROM ".$tbl." WHERE FK_glpi_enterprise = ".$id.";";
+                               $res = $this->query($qry);
+                               foreach($res as $entry){
+                                       if($i <= 0 ) continue;
+                                       if(isset($entry['designation'])){
+                                               $entry['name'] = $entry['designation'];
+                                       }
+                                       $i --;
+                                               $ret[] = $entry['name'];
+                               }
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* Manufacturer 
+          Updates already existing manufacturer
+        */
+       function Add_UpdateCatrigdeType($array,$array_printer_types)
+       {
+               if(!is_array($array)){
+                       echo "Add_UpdateCatrigdeType: first paraeter must be an array";
+               }elseif($this->is_connected){
+
+
+                       $atr = array("name","ref","location","type","FK_glpi_enterprise","tech_num","deleted","comments","alarm");
+
+                       /* Entry was edited */
+                       if($array['ID']>0){
+                               $qry = "DELETE FROM glpi_cartridges_assoc WHERE FK_glpi_cartridges_type=".$array['ID'].";";
+
+                               $v = "";
+                               foreach($atr as $at){
+                                       if(isset($array[$at])){
+                                               $v .= " ".$at."='".$array[$at]."', ";
+                                       }
+                               }
+                               if(empty($v)){
+                                       echo "Add_UpdateCatrigdeType: no attributes given ";
+                                       return(false);
+                               }else{
+                                       $v = preg_replace("/, $/","",$v);
+                                       $qry = "UPDATE glpi_cartridges_type SET ".$v." WHERE ID='".$array['ID']."';";
+                                       $this->query($qry);     
+                               }
+                       }else{
+
+                               /* skip if name is in use*/
+                               $qry = "SELECT * FROM glpi_cartridges_type WHERE name='".$array['name']."';";
+                               if(count($this->query($qry))){
+                                       return;
+                               }
+
+                               $str = "INSERT INTO glpi_cartridges_type ";
+                               $namen = "";
+                               $values= "";
+                               foreach($array as $name => $value){     
+                                       $namen .= $name.", ";
+                                       if(is_numeric($value)){
+                                               $values .= $value.", ";
+                                       }else{
+                                               $values .= "'".$value."', ";
+                                       }
+                               }
+                               $values = preg_replace("/, $/","",$values);
+                               $namen  = preg_replace("/, $/","",$namen);
+                               $str .= "(".$namen.") VALUES (".$values.");";
+                               $this->query($str);     
+                               $IDs = $this->query("SELECT ID FROM glpi_cartridges_type WHERE name='".$array['name']."';");
+                               if(count($IDs) > 1){
+                                       echo "internal db error";
+                                       return;
+                               }
+                               $array['ID'] = $IDs[0]['ID'];
+                       }
+
+                       foreach($array_printer_types as $id){
+                               $qry = "INSERT INTO glpi_cartridges_assoc 
+                                       (FK_glpi_cartridges_type,FK_glpi_type_printer) 
+                                       VALUES 
+                                       (".$array['ID'].",".$id.")";
+
+                               $this->query($qry);
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function getSupportedPrinterTypeIDsForCartridge($cid)
+       {
+               if($this->is_connected){
+                       $ret = array();
+                       $qry = "SELECT FK_glpi_type_printer FROM glpi_cartridges_assoc WHERE FK_glpi_cartridges_type = ".$cid.";";      
+                       $res = $this->query($qry);
+                               
+                       foreach($res as $entry => $value){
+                               $ret[$value['FK_glpi_type_printer']] = $value['FK_glpi_type_printer'];
+                       }
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function removeCartridgeType($id){
+               if($this->is_connected){
+                       $qry = "DELETE FROM glpi_cartridges_assoc WHERE FK_glpi_cartridges_type=".$id.";";
+                       $this->query($qry);     
+                       $qry = "DELETE FROM glpi_cartridges_type WHERE ID=".$id.";";
+                       return($this->query($qry));     
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function getCartridgesWhichUseThisType($id)
+       {
+               if($this->is_connected){
+                       $qry = "SELECT * FROM glpi_cartridges WHERE FK_glpi_cartridges_type=".$id.";";
+                       $ret  = $this->query($qry);
+                       return($ret);
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+
+       /* Add pritner types 
+       Add one entry to the cartridgeType types 
+     */
+       function addCartridgeDropdownType($name)
+       {
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_dropdown_cartridge_type WHERE name='".$name."';");
+                       if(isset($tmp[0])){
+                               //echo "such an entry already exists";
+                               return(false);
+                       }else{  
+                               return($this->query("INSERT INTO glpi_dropdown_cartridge_type (name) VALUES ('".$name."');"));
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* remove cartridgeType types 
+       Remove one entry from the cartridgeType types (specified by ID=$id)
+     */
+       function removeCartridgeDropdownType($id)
+       {
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_dropdown_cartridge_type WHERE ID=".$id.";");
+                       if(isset($tmp[0])){
+                               return($this->query("DELETE FROM glpi_dropdown_cartridge_type WHERE ID=".$id.";"));     
+                       }else{
+                               echo "can't remove not existing entry";
+                               return(false);  
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       /* Update cartridgeType  
+          Update a cartridgeType       
+       */
+       function updateCartridgeDropdownType($name,$id)
+       {
+
+               if($this->is_connected){
+                       $tmp = $this->query("SELECT * FROM glpi_dropdown_cartridge_type WHERE ID=".$id.";");
+                       if(isset($tmp[0])){
+                               return($this->query("UPDATE glpi_dropdown_cartridge_type SET name='".$name."' WHERE ID=".$id.";"));     
+                       }else{
+                               echo "can't update not existing entry";
+                               return(false);  
+                       }
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
+       function getUsedDropdownTypes($id=false)
+       {
+               if($this->is_connected){
+                       if($id){
+                               $qry = "SELECT distinct(type) FROM glpi_cartridges_type WHERE type = ".$id.";";
+                       }else{
+                               $qry = "SELECT distinct(type) FROM glpi_cartridges_type;";
+                       }
+                       return($this->query($qry));
+               }else{
+                       echo "not connected";
+                       return(false);
+               }
+       }
+
 }
 //$s = new glpiDB("vserver-01","glpi","tester","glpi");
 //print_r($s->query("SELECT * FROM glpi_computers"));