Transfer::transferPrinterCartridges PHP Method

transferPrinterCartridges() public method

Transfer cartridges of a printer
public transferPrinterCartridges ( $ID, $newID )
$ID original ID of the printer
$newID new ID of the printer
    function transferPrinterCartridges($ID, $newID)
    {
        global $DB;
        // Get cartrdiges linked
        $query = "SELECT *\n                FROM `glpi_cartridges`\n                WHERE `glpi_cartridges`.`printers_id` = '{$ID}'";
        if ($result = $DB->query($query)) {
            if ($DB->numrows($result) > 0) {
                $cart = new Cartridge();
                $carttype = new CartridgeItem();
                while ($data = $DB->fetch_assoc($result)) {
                    $need_clean_process = false;
                    // Foreach cartridges
                    // if keep
                    if ($this->options['keep_cartridgeitem']) {
                        $newcartID = -1;
                        $newcarttypeID = -1;
                        // 1 - Search carttype destination ?
                        // Already transfer carttype :
                        if (isset($this->already_transfer['CartridgeItem'][$data['cartridgeitems_id']])) {
                            $newcarttypeID = $this->already_transfer['CartridgeItem'][$data['cartridgeitems_id']];
                        } else {
                            // Not already transfer cartype
                            $query = "SELECT COUNT(*) AS cpt\n                               FROM `glpi_cartridges`\n                               WHERE `glpi_cartridges`.`cartridgeitems_id`\n                                          = '" . $data['cartridgeitems_id'] . "'\n                                     AND `glpi_cartridges`.`printers_id` > '0'\n                                     AND `glpi_cartridges`.`printers_id`\n                                          NOT IN " . $this->item_search['Printer'];
                            $result_search = $DB->query($query);
                            // Is the carttype will be completly transfer ?
                            if ($DB->result($result_search, 0, 'cpt') == 0) {
                                // Yes : transfer
                                $need_clean_process = false;
                                $this->transferItem('CartridgeItem', $data['cartridgeitems_id'], $data['cartridgeitems_id']);
                                $newcarttypeID = $data['cartridgeitems_id'];
                            } else {
                                // No : copy carttype
                                $need_clean_process = true;
                                $carttype->getFromDB($data['cartridgeitems_id']);
                                // Is existing carttype in the destination entity ?
                                $query = "SELECT *\n                                  FROM `glpi_cartridgeitems`\n                                  WHERE `entities_id` = '" . $this->to . "'\n                                        AND `name` = '" . addslashes($carttype->fields['name']) . "'";
                                if ($result_search = $DB->query($query)) {
                                    if ($DB->numrows($result_search) > 0) {
                                        $newcarttypeID = $DB->result($result_search, 0, 'id');
                                    }
                                }
                                // Not found -> transfer copy
                                if ($newcarttypeID < 0) {
                                    // 1 - create new item
                                    unset($carttype->fields['id']);
                                    $input = $carttype->fields;
                                    $input['entities_id'] = $this->to;
                                    unset($carttype->fields);
                                    $newcarttypeID = $carttype->add(toolbox::addslashes_deep($input));
                                    // 2 - transfer as copy
                                    $this->transferItem('CartridgeItem', $data['cartridgeitems_id'], $newcarttypeID);
                                }
                                // Founded -> use to link : nothing to do
                            }
                        }
                        // Update cartridge if needed
                        if ($newcarttypeID > 0 && $newcarttypeID != $data['cartridgeitems_id']) {
                            $cart->update(array('id' => $data['id'], 'cartridgeitems_id' => $newcarttypeID));
                        }
                    } else {
                        // Do not keep
                        // If same printer : delete cartridges
                        if ($ID == $newID) {
                            $del_query = "DELETE\n                                   FROM `glpi_cartridges`\n                                   WHERE `printers_id` = '{$ID}'";
                            $DB->query($del_query);
                        }
                        $need_clean_process = true;
                    }
                    // CLean process
                    if ($need_clean_process && $this->options['clean_cartridgeitem']) {
                        // Clean carttype
                        $query2 = "SELECT COUNT(*) AS cpt\n                             FROM `glpi_cartridges`\n                             WHERE `cartridgeitems_id` = '" . $data['cartridgeitems_id'] . "'";
                        $result2 = $DB->query($query2);
                        if ($DB->result($result2, 0, 'cpt') == 0) {
                            if ($this->options['clean_cartridgeitem'] == 1) {
                                // delete
                                $carttype->delete(array('id' => $data['cartridgeitems_id']));
                            }
                            if ($this->options['clean_cartridgeitem'] == 2) {
                                // purge
                                $carttype->delete(array('id' => $data['cartridgeitems_id']), 1);
                            }
                        }
                    }
                }
            }
        }
    }