/**
  * 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') . "&nbsp;";
             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 "&nbsp;";
             }
             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') . "'>&nbsp;</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] . "&nbsp;:</th></tr>";
     } else {
         echo "<tr><th colspan='7'>" . $LANG['cartridges'][35] . "&nbsp;:</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>&nbsp;</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&amp;id=" . $data["id"] . "&amp;tID=" . $data["tID"] . "'>" . $LANG['cartridges'][29] . "</a>";
             } else {
                 echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/cartridge.form.php?delete=delete&amp;id=" . $data["id"] . "&amp;tID=" . $data["tID"] . "'>" . $LANG['buttons'][6] . "</a>";
             }
             echo "</span></td></tr>";
         }
     }
     if ($old == 0 && $canedit) {
         echo "<tr class='tab_bg_1'><td>&nbsp;</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 "&nbsp;<input type='submit' name='install' value=\"" . $LANG['buttons'][4] . "\"\n                         class='submit'>";
         }
         echo "</form></td><td class='tab_bg_2 center'>&nbsp;";
         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>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>";
             echo "<td class='center'>" . $LANG['cartridges'][40] . "&nbsp;:<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>&nbsp;</td></tr>";
         }
     }
     echo "</table></div>";
 }