/** * Transfer cartridges of a printer * * @param $ID original ID of the printer * @param $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_array($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($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); } } } } } } }
Event::log($_POST["cartridgeitems_id"], "cartridges", 4, "inventory", sprintf(__('%s adds cartridges'), $_SESSION["glpiname"])); Html::back(); } else { if (isset($_POST["delete"])) { $cartype->check($_POST["cartridgeitems_id"], 'w'); if ($cart->delete($_POST)) { Event::log($_POST["cartridgeitems_id"], "cartridges", 4, "inventory", sprintf(__('%s deletes a cartridge'), $_SESSION["glpiname"])); } Html::back(); } else { if (isset($_POST["install"])) { if ($_POST["cartridgeitems_id"]) { $cartype->check($_POST["cartridgeitems_id"], 'w'); if ($cart->install($_POST["printers_id"], $_POST["cartridgeitems_id"])) { Event::log($_POST["printers_id"], "printers", 5, "inventory", sprintf(__('%s installs a cartridge'), $_SESSION["glpiname"])); } } Html::redirect($CFG_GLPI["root_doc"] . "/front/printer.form.php?id=" . $_POST["printers_id"]); } else { if (isset($_POST["update"])) { $cart->check($_POST["id"], 'w'); if ($cart->update($_POST)) { Event::log($_POST["printers_id"], "printers", 4, "inventory", sprintf(__('%s updates a cartridge'), $_SESSION["glpiname"])); } Html::back(); } else { Html::back(); } } } }