/** * Show installed cartridges * * @since version 0.84 (before showInstalled) * * @param $printer Printer object * @param $old boolean old cartridges or not ? (default 0) * * @return nothing (display) **/ static function showForPrinter(Printer $printer, $old = 0) { global $DB, $CFG_GLPI; $instID = $printer->getField('id'); if (!self::canView()) { return false; } $canedit = Session::haveRight("cartridge", UPDATE); $rand = mt_rand(); $query = "SELECT `glpi_cartridgeitems`.`id` AS tID,\n `glpi_cartridgeitems`.`is_deleted`,\n `glpi_cartridgeitems`.`ref` AS ref,\n `glpi_cartridgeitems`.`name` AS type,\n `glpi_cartridges`.`id`,\n `glpi_cartridges`.`pages` AS pages,\n `glpi_cartridges`.`date_use` AS date_use,\n `glpi_cartridges`.`date_out` AS date_out,\n `glpi_cartridges`.`date_in` AS date_in,\n `glpi_cartridgeitemtypes`.`name` AS typename\n FROM `glpi_cartridges`,\n `glpi_cartridgeitems`\n LEFT JOIN `glpi_cartridgeitemtypes`\n on (`glpi_cartridgeitems`.`cartridgeitemtypes_id` = `glpi_cartridgeitemtypes`.`id`)\n WHERE (`glpi_cartridges`.`date_out` IS " . ($old ? "NOT" : "") . " NULL\n AND `glpi_cartridges`.`printers_id` = '{$instID}'\n AND `glpi_cartridges`.`cartridgeitems_id` = `glpi_cartridgeitems`.`id`)\n ORDER BY `glpi_cartridges`.`date_out` ASC,\n `glpi_cartridges`.`date_use` DESC,\n `glpi_cartridges`.`date_in`"; $result = $DB->query($query); $number = $DB->numrows($result); $i = 0; if ($canedit && !$old) { echo "<div class='firstbloc'>"; echo "<form method='post' action=\"" . static::getFormURL() . "\">"; echo "<table class='tab_cadre_fixe'>"; echo "<tr><td class='center tab_bg_2' width='50%'>"; echo "<input type='hidden' name='printers_id' value='{$instID}'>\n"; $installok = false; $cpt = ''; if (CartridgeItem::dropdownForPrinter($printer)) { //TRANS : multiplier echo "</td><td>" . __('x') . " "; Dropdown::showNumber("nbcart", array('value' => 1, 'min' => 1, 'max' => 5)); $installok = true; echo "</td><td><input type='submit' name='install' value=\"" . _sx('button', 'Install') . "\"\n " . ($installok ? '' : 'disabled') . " class='submit'>"; } else { _e('No cartridge available'); } echo "</td></tr>"; echo "</table>"; Html::closeForm(); echo "</div>"; } echo "<div id='viewcartridge{$rand}'></div>"; $pages = $printer->fields['init_pages_counter']; echo "<div class='spaced'>"; if ($canedit && $number) { Html::openMassiveActionsForm('mass' . __CLASS__ . $rand); if (!$old) { $actions = array(__CLASS__ . MassiveAction::CLASS_ACTION_SEPARATOR . 'uninstall' => __('End of life'), __CLASS__ . MassiveAction::CLASS_ACTION_SEPARATOR . 'backtostock' => __('Back to stock')); } else { $actions = array(__CLASS__ . MassiveAction::CLASS_ACTION_SEPARATOR . 'updatepages' => __('Update printer counter'), 'purge' => _x('button', 'Delete permanently')); } $massiveactionparams = array('num_displayed' => $number, 'specific_actions' => $actions, 'container' => 'mass' . __CLASS__ . $rand, 'rand' => $rand, 'extraparams' => array('maxpages' => $printer->fields['last_pages_counter'])); Html::showMassiveActions($massiveactionparams); } echo "<table class='tab_cadre_fixehov'>"; echo "<tr class='noHover'>"; if ($old == 0) { echo "<th colspan='" . ($canedit ? '6' : '5') . "'>" . __('Used cartridges') . "</th>"; } else { echo "<th colspan='" . ($canedit ? '9' : '8') . "'>" . __('Worn cartridges') . "</th>"; } echo "</tr>"; $header_begin = "<tr>"; $header_top = ''; $header_bottom = ''; $header_end = ''; if ($canedit) { $header_begin .= "<th width='10'>"; $header_top .= Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand); $header_bottom .= Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand); $header_end .= "</th>"; } $header_end .= "<th>" . __('ID') . "</th><th>" . _n('Cartridge model', 'Cartridge models', 1) . "</th>"; $header_end .= "<th>" . _n('Cartridge type', 'Cartridge types', 1) . "</th>"; $header_end .= "<th>" . __('Add date') . "</th>"; $header_end .= "<th>" . __('Use date') . "</th>"; if ($old != 0) { $header_end .= "<th>" . __('End date') . "</th>"; $header_end .= "<th>" . __('Printer counter') . "</th>"; $header_end .= "<th>" . __('Printed pages') . "</th>"; } $header_end .= "</tr>"; echo $header_begin . $header_top . $header_end; $stock_time = 0; $use_time = 0; $pages_printed = 0; $nb_pages_printed = 0; while ($data = $DB->fetch_assoc($result)) { $cart_id = $data["id"]; $typename = $data["typename"]; $date_in = Html::convDate($data["date_in"]); $date_use = Html::convDate($data["date_use"]); $date_out = Html::convDate($data["date_out"]); $viewitemjs = $canedit ? "style='cursor:pointer' onClick=\"viewEditCartridge" . $data['id'] . "{$rand}();\"" : ''; echo "<tr class='tab_bg_1" . ($data["is_deleted"] ? "_2" : "") . "'>"; if ($canedit) { echo "<td width='10'>"; Html::showMassiveActionCheckBox(__CLASS__, $data["id"]); echo "</td>"; } echo "<td class='center' {$viewitemjs}>"; if ($canedit) { echo "\n<script type='text/javascript' >\n"; echo "function viewEditCartridge" . $data["id"] . "{$rand}() {\n"; $params = array('type' => __CLASS__, 'parenttype' => 'Printer', 'printers_id' => $printer->fields["id"], 'id' => $data["id"]); Ajax::updateItemJsCode("viewcartridge{$rand}", $CFG_GLPI["root_doc"] . "/ajax/viewsubitem.php", $params); echo "};"; echo "</script>\n"; } echo $data["id"] . "</td>"; echo "<td class='center' {$viewitemjs}>"; echo "<a href=\"" . $CFG_GLPI["root_doc"] . "/front/cartridgeitem.form.php?id=" . $data["tID"] . "\">"; printf(__('%1$s - %2$s'), $data["type"], $data["ref"]); echo "</a></td>"; echo "<td class='center' {$viewitemjs}>" . $typename . "</td>"; echo "<td class='center' {$viewitemjs}>" . $date_in . "</td>"; echo "<td class='center' {$viewitemjs}>" . $date_use . "</td>"; $tmp_dbeg = explode("-", $data["date_in"]); $tmp_dend = explode("-", $data["date_use"]); $stock_time_tmp = mktime(0, 0, 0, $tmp_dend[1], $tmp_dend[2], $tmp_dend[0]) - mktime(0, 0, 0, $tmp_dbeg[1], $tmp_dbeg[2], $tmp_dbeg[0]); $stock_time += $stock_time_tmp; if ($old != 0) { echo "<td class='center' {$viewitemjs}>" . $date_out; $tmp_dbeg = explode("-", $data["date_use"]); $tmp_dend = explode("-", $data["date_out"]); $use_time_tmp = mktime(0, 0, 0, $tmp_dend[1], $tmp_dend[2], $tmp_dend[0]) - mktime(0, 0, 0, $tmp_dbeg[1], $tmp_dbeg[2], $tmp_dbeg[0]); $use_time += $use_time_tmp; echo "</td><td class='numeric' {$viewitemjs}>" . $data['pages'] . "</td>"; echo "<td class='numeric' {$viewitemjs}>"; if ($pages < $data['pages']) { $pages_printed += $data['pages'] - $pages; $nb_pages_printed++; $pp = $data['pages'] - $pages; echo $pp; $pages = $data['pages']; } else { echo " "; } echo "</td>"; } echo "</tr>"; } if ($old) { // Print average if ($number > 0) { if ($nb_pages_printed == 0) { $nb_pages_printed = 1; } echo "<tr class='tab_bg_2'><td colspan='" . ($canedit ? "4" : '3') . "'> </td>"; echo "<td class='center b'>" . __('Average time in stock') . "<br>"; $time_stock = round($stock_time / $number / 60 / 60 / 24 / 30.5, 1); echo sprintf(_n('%d month', '%d months', $time_stock), $time_stock) . "</td>"; echo "<td class='center b'>" . __('Average time in use') . "<br>"; $time_use = round($use_time / $number / 60 / 60 / 24 / 30.5, 1); echo sprintf(_n('%d month', '%d months', $time_use), $time_use) . "</td>"; echo "<td class='center b' colspan='2'>" . __('Average number of printed pages') . "<br>"; echo round($pages_printed / $nb_pages_printed) . "</td>"; echo "</tr>"; } } echo "</table>"; if ($canedit && $number) { $massiveactionparams['ontop'] = false; Html::showMassiveActions($massiveactionparams); Html::closeForm(); } echo "</div>\n\n"; }
/** * Show installed cartridges * *@param $printer object Printer *@param $old boolean : old cartridges or not ? * *@return nothing (display) **/ static function showInstalled(Printer $printer, $old = 0) { global $DB, $CFG_GLPI, $LANG; $instID = $printer->getField('id'); if (!haveRight("cartridge", "r")) { return false; } $canedit = haveRight("cartridge", "w"); $query = "SELECT `glpi_cartridgeitems`.`id` AS tID,\n `glpi_cartridgeitems`.`is_deleted`,\n `glpi_cartridgeitems`.`ref` AS ref,\n `glpi_cartridgeitems`.`name` AS type,\n `glpi_cartridges`.`id`,\n `glpi_cartridges`.`pages` AS pages,\n `glpi_cartridges`.`date_use` AS date_use,\n `glpi_cartridges`.`date_out` AS date_out,\n `glpi_cartridges`.`date_in` AS date_in\n FROM `glpi_cartridges`,\n `glpi_cartridgeitems`\n WHERE (`glpi_cartridges`.`date_out` IS " . ($old ? "NOT" : "") . " NULL\n AND `glpi_cartridges`.`printers_id` = '{$instID}'\n AND `glpi_cartridges`.`cartridgeitems_id` = `glpi_cartridgeitems`.`id`)\n ORDER BY `glpi_cartridges`.`date_out` ASC,\n `glpi_cartridges`.`date_use` DESC,\n `glpi_cartridges`.`date_in`"; $result = $DB->query($query); $number = $DB->numrows($result); $i = 0; $pages = $printer->fields['init_pages_counter']; echo "<div class='spaced'><table class='tab_cadre_fixe'>"; if ($old == 0) { echo "<tr><th colspan='5'>" . $LANG['cartridges'][33] . " :</th></tr>"; } else { echo "<tr><th colspan='7'>" . $LANG['cartridges'][35] . " :</th></tr>"; } echo "<tr><th>" . $LANG['common'][2] . "</th><th>" . $LANG['cartridges'][12] . "</th>"; echo "<th>" . $LANG['cartridges'][24] . "</th>"; echo "<th>" . $LANG['consumables'][26] . "</th>"; if ($old != 0) { echo "<th>" . $LANG['search'][9] . "</th><th>" . $LANG['cartridges'][39] . "</th>"; } echo "<th> </th></tr>"; $stock_time = 0; $use_time = 0; $pages_printed = 0; $nb_pages_printed = 0; while ($data = $DB->fetch_array($result)) { $date_in = convDate($data["date_in"]); $date_use = convDate($data["date_use"]); $date_out = convDate($data["date_out"]); echo "<tr class='tab_bg_1" . ($data["is_deleted"] ? "_2" : "") . "'>"; echo "<td class='center'>" . $data["id"] . "</td>"; echo "<td class='center b'>"; echo "<a href=\"" . $CFG_GLPI["root_doc"] . "/front/cartridgeitem.form.php?id=" . $data["tID"] . "\">" . $data["type"] . " - " . $data["ref"] . "</a></td>"; echo "<td class='center'>" . $date_in . "</td>"; echo "<td class='center'>" . $date_use; $tmp_dbeg = explode("-", $data["date_in"]); $tmp_dend = explode("-", $data["date_use"]); $stock_time_tmp = mktime(0, 0, 0, $tmp_dend[1], $tmp_dend[2], $tmp_dend[0]) - mktime(0, 0, 0, $tmp_dbeg[1], $tmp_dbeg[2], $tmp_dbeg[0]); $stock_time += $stock_time_tmp; if ($old != 0) { echo "</td>"; echo "<td class='center'>" . $date_out; } if ($old != 0) { $tmp_dbeg = explode("-", $data["date_use"]); $tmp_dend = explode("-", $data["date_out"]); $use_time_tmp = mktime(0, 0, 0, $tmp_dend[1], $tmp_dend[2], $tmp_dend[0]) - mktime(0, 0, 0, $tmp_dbeg[1], $tmp_dbeg[2], $tmp_dbeg[0]); $use_time += $use_time_tmp; } echo "</td><td class='center'>"; if ($old != 0) { if ($canedit) { echo "<form method='post' action=\"" . $CFG_GLPI["root_doc"] . "/front/cartridge.form.php\">"; echo "<input type='hidden' name='cID' value='" . $data['id'] . "'>"; echo "<input type='text' name='pages' value=\"" . $data['pages'] . "\" size='10'>"; echo "<input type='image' name='update_pages' value='update_pages'\n src='" . $CFG_GLPI["root_doc"] . "/pics/actualiser.png' class='calendrier'>"; echo "</form>"; } else { echo "<input type='text' name='pages' value=\"" . $data['pages'] . "\" size='10'>"; } if ($pages < $data['pages']) { $pages_printed += $data['pages'] - $pages; $nb_pages_printed++; echo $data['pages'] - $pages . " " . $LANG['printers'][31]; $pages = $data['pages']; } echo "</td><td class='center'>"; } if ($canedit) { echo "<span class='small_space'>"; if (is_null($date_out)) { echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/cartridge.form.php?uninstall=uninstall&id=" . $data["id"] . "&tID=" . $data["tID"] . "'>" . $LANG['cartridges'][29] . "</a>"; } else { echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/cartridge.form.php?delete=delete&id=" . $data["id"] . "&tID=" . $data["tID"] . "'>" . $LANG['buttons'][6] . "</a>"; } echo "</span></td></tr>"; } } if ($old == 0 && $canedit) { echo "<tr class='tab_bg_1'><td> </td><td class='center' colspan='3'>"; echo "<form method='post' action=\"" . $CFG_GLPI["root_doc"] . "/front/cartridge.form.php\">"; echo "<input type='hidden' name='pID' value='{$instID}'>"; if (CartridgeItem::dropdownForPrinter($printer)) { echo " <input type='submit' name='install' value=\"" . $LANG['buttons'][4] . "\"\n class='submit'>"; } echo "</form></td><td class='tab_bg_2 center'> "; echo "</td></tr>"; } else { // Print average if ($number > 0) { if ($nb_pages_printed == 0) { $nb_pages_printed = 1; } echo "<tr class='tab_bg_2'><td> </td><td> </td><td> </td>"; echo "<td class='center'>" . $LANG['cartridges'][40] . " :<br>"; echo round($stock_time / $number / 60 / 60 / 24 / 30.5, 1) . " " . $LANG['financial'][57] . "</td>"; echo "<td class='center'>" . $LANG['cartridges'][41] . ":<br>"; echo round($use_time / $number / 60 / 60 / 24 / 30.5, 1) . " " . $LANG['financial'][57] . "</td>"; echo "<td class='center'>" . $LANG['cartridges'][42] . ":<br>"; echo round($pages_printed / $nb_pages_printed) . "</td>"; echo "<td> </td></tr>"; } } echo "</table></div>"; }