function prepareInputForAdd($input)
 {
     $item = new CartridgeItem();
     if ($item->getFromDB($input["tID"])) {
         return array("cartridgeitems_id" => $item->fields["id"], "entities_id" => $item->getEntityID(), "date_in" => date("Y-m-d"));
     }
     return array();
 }
 /**
  * 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);
                         }
                     }
                 }
             }
         }
     }
 }
示例#3
0
 /** form for Cartridge
  *
  * @since version 0.84
  *
  * @param $ID      integer  Id of the cartridge
  * @param $options array    of possible options:
  *     - parent Object : the printers where the cartridge is used
  **/
 function showForm($ID, $options = array())
 {
     global $DB, $CFG_GLPI;
     if (isset($options['parent']) && !empty($options['parent'])) {
         $printer = $options['parent'];
     }
     if (!$this->getFromDB($ID)) {
         return false;
     }
     $printer = new Printer();
     $printer->check($this->getField('printers_id'), UPDATE);
     $cartitem = new CartridgeItem();
     $cartitem->getFromDB($this->getField('cartridgeitems_id'));
     $is_old = !empty($this->fields['date_out']);
     $is_used = !empty($this->fields['date_use']);
     $options['colspan'] = 2;
     $options['candel'] = false;
     // Do not permit delete here
     $options['canedit'] = $is_used;
     // Do not permit edit if cart is not used
     $this->showFormHeader($options);
     echo "<tr class='tab_bg_1'>";
     echo "<td>" . _n('Printer', 'Printers', 1) . "</td><td>";
     echo $printer->getLink();
     echo "<input type='hidden' name='printers_id' value='" . $this->getField('printers_id') . "'>\n";
     echo "<input type='hidden' name='cartridgeitems_id' value='" . $this->getField('cartridgeitems_id') . "'>\n";
     echo "</td>\n";
     echo "<td>" . _n('Cartridge model', 'Cartridge models', 1) . "</td>";
     echo "<td>" . $cartitem->getLink() . "</td></tr>\n";
     echo "<tr class='tab_bg_1'>";
     echo "<td>" . __('Add date') . "</td>";
     echo "<td>" . Html::convDate($this->fields["date_in"]) . "</td>";
     echo "<td>" . __('Use date') . "</td><td>";
     if ($is_used && !$is_old) {
         Html::showDateField("date_use", array('value' => $this->fields["date_use"], 'maybeempty' => false, 'canedit' => true, 'min' => $this->fields["date_in"]));
     } else {
         echo Html::convDate($this->fields["date_use"]);
     }
     echo "</td></tr>\n";
     if ($is_old) {
         echo "<tr class='tab_bg_1'>";
         echo "<td>" . __('End date') . "</td><td>";
         Html::showDateField("date_out", array('value' => $this->fields["date_out"], 'maybeempty' => false, 'canedit' => true, 'min' => $this->fields["date_use"]));
         echo "</td>";
         echo "<td>" . __('Printer counter') . "</td><td>";
         echo "<input type='text' name='pages' value=\"" . $this->fields['pages'] . "\">";
         echo "</td></tr>\n";
     }
     $this->showFormButtons($options);
     return true;
 }
示例#4
0
 public function getLinkedItemDetails($itemtype, $items_id)
 {
     $comments = "";
     switch ($itemtype) {
         case 'ConsumableItem':
             $ci = new Consumable();
             if ($ci->getFromDB($items_id)) {
                 $ct = new ConsumableItem();
                 $ct->getFromDB($ci->fields['consumableitems_id']);
                 $comments .= "<strong>" . __("Entity") . ":</strong> ";
                 $comments .= Dropdown::getDropdownName("glpi_entities", $ct->fields["entities_id"]);
                 $comments .= '<br><strong>' . __("Consumable") . ' : </strong> #' . $items_id;
                 $comments .= '<br><strong>' . __("Consumable type") . ' : </strong>';
                 $comments .= $ct->fields['name'];
                 $comments .= '<br><strong>' . __("Manufacturer") . ' : </strong>';
                 $comments .= Dropdown::getDropdownName('glpi_manufacturers', $ct->fields['manufacturers_id']);
                 $comments .= '<br><strong>' . __("State") . ' : </strong>';
                 $comments .= !$ci->fields['users_id'] ? __("In stock") : __("Used");
                 if ($ci->fields['users_id']) {
                     $comments .= '<br><strong>' . __("User") . ' : </strong>';
                     $comments .= Dropdown::getDropdownName('glpi_users', $ci->fields['users_id']);
                 }
             }
             break;
         case 'CartridgeItem':
             $ci = new Cartridge();
             if ($ci->getFromDB($items_id)) {
                 $ct = new CartridgeItem();
                 $ct->getFromDB($ci->fields['cartridgeitems_id']);
                 $comments .= "<strong>" . __("Entity") . ":</strong> ";
                 $comments .= Dropdown::getDropdownName("glpi_entities", $ct->fields["entities_id"]);
                 $comments .= '<br><strong>' . __("Cartridge") . ' : </strong> #' . $items_id;
                 $comments .= '<br><strong>' . _n("New", "New", 2) . ' : </strong>';
                 $comments .= $ct->fields['name'];
                 $comments .= '<br><strong>' . __("Manufacturer") . ' : </strong>';
                 $comments .= Dropdown::getDropdownName('glpi_manufacturers', $ct->fields['manufacturers_id']);
             }
             break;
             // case 'Computer' :
             // case 'Monitor' :
             // case 'NetworkEquipment' :
             // case 'Peripheral' :
             // case 'Phone' :
             // case 'Printer' :
         // case 'Computer' :
         // case 'Monitor' :
         // case 'NetworkEquipment' :
         // case 'Peripheral' :
         // case 'Phone' :
         // case 'Printer' :
         default:
             $item = new $itemtype();
             $item->getFromDB($items_id);
             if ($item->getField("name")) {
                 $comments .= "<strong>" . __("Name") . ":</strong> ";
                 $comments .= $item->getField("name");
             }
             if ($item->getField("entities_id")) {
                 $comments .= "<strong>" . __("Entity") . ":</strong> ";
                 $comments .= Dropdown::getDropdownName("glpi_entities", $item->getField("entities_id"));
             }
             if ($item->getField("serial") != '') {
                 $comments .= "<br><strong>" . __("Serial number") . ":</strong> ";
                 $comments .= $item->getField("serial");
             }
             if ($item->getField("otherserial") != '') {
                 $comments .= "<br><strong>" . __("Inventory number") . ":</strong> ";
                 $comments .= $item->getField("otherserial");
             }
             if ($item->getField("locations_id")) {
                 $comments .= "<br><strong>" . __("Location") . ":</strong> ";
                 $comments .= Dropdown::getDropdownName('glpi_locations', $item->getField("locations_id"));
             }
             if ($item->getField("users_id")) {
                 $comments .= "<br><strong>" . __("User") . ":</strong> ";
                 $comments .= Dropdown::getDropdownName('glpi_users', $item->getField("users_id"));
             }
             break;
     }
     return $comments;
 }