getUnusedNumber() static public method

count how many cartbridge unused for the cartridge item $tID
static public getUnusedNumber ( $tID ) : integer
$tID integer: cartridge item identifier.
return integer : number of cartridge unused counted.
 /**
  * Cron action on cartridges : alert if a stock is behind the threshold
  *
  * @param $task for log, display information if NULL? (default NULL)
  *
  * @return 0 : nothing to do 1 : done with success
  **/
 static function cronCartridge($task = NULL)
 {
     global $DB, $CFG_GLPI;
     $cron_status = 1;
     if ($CFG_GLPI["use_mailing"]) {
         $message = array();
         $alert = new Alert();
         foreach (Entity::getEntitiesToNotify('cartridges_alert_repeat') as $entity => $repeat) {
             // if you change this query, please don't forget to also change in showDebug()
             $query_alert = "SELECT `glpi_cartridgeitems`.`id` AS cartID,\n                                   `glpi_cartridgeitems`.`entities_id` AS entity,\n                                   `glpi_cartridgeitems`.`ref` AS ref,\n                                   `glpi_cartridgeitems`.`name` AS name,\n                                   `glpi_cartridgeitems`.`alarm_threshold` AS threshold,\n                                   `glpi_alerts`.`id` AS alertID,\n                                   `glpi_alerts`.`date`\n                            FROM `glpi_cartridgeitems`\n                            LEFT JOIN `glpi_alerts`\n                                 ON (`glpi_cartridgeitems`.`id` = `glpi_alerts`.`items_id`\n                                     AND `glpi_alerts`.`itemtype` = 'CartridgeItem')\n                            WHERE `glpi_cartridgeitems`.`is_deleted` = '0'\n                                  AND `glpi_cartridgeitems`.`alarm_threshold` >= '0'\n                                  AND `glpi_cartridgeitems`.`entities_id` = '" . $entity . "'\n                                  AND (`glpi_alerts`.`date` IS NULL\n                                       OR (`glpi_alerts`.`date`+{$repeat}) < CURRENT_TIMESTAMP());";
             $message = "";
             $items = array();
             foreach ($DB->request($query_alert) as $cartridge) {
                 if (($unused = Cartridge::getUnusedNumber($cartridge["cartID"])) <= $cartridge["threshold"]) {
                     //TRANS: %1$s is the cartridge name, %2$s its reference, %3$d the remaining number
                     $message .= sprintf(__('Threshold of alarm reached for the type of cartridge: %1$s - Reference %2$s - Remaining %3$d'), $cartridge["name"], $cartridge["ref"], $unused);
                     $message .= '<br>';
                     $items[$cartridge["cartID"]] = $cartridge;
                     // if alert exists -> delete
                     if (!empty($cartridge["alertID"])) {
                         $alert->delete(array("id" => $cartridge["alertID"]));
                     }
                 }
             }
             if (!empty($items)) {
                 $options['entities_id'] = $entity;
                 $options['items'] = $items;
                 $entityname = Dropdown::getDropdownName("glpi_entities", $entity);
                 if (NotificationEvent::raiseEvent('alert', new CartridgeItem(), $options)) {
                     if ($task) {
                         $task->log(sprintf(__('%1$s: %2$s') . "\n", $entityname, $message));
                         $task->addVolume(1);
                     } else {
                         Session::addMessageAfterRedirect(sprintf(__('%1$s: %2$s'), $entityname, $message));
                     }
                     $input["type"] = Alert::THRESHOLD;
                     $input["itemtype"] = 'CartridgeItem';
                     // add alerts
                     foreach ($items as $ID => $consumable) {
                         $input["items_id"] = $ID;
                         $alert->add($input);
                         unset($alert->fields['id']);
                     }
                 } else {
                     //TRANS: %s is entity name
                     $msg = sprintf(__('%s: send cartridge alert failed'), $entityname);
                     if ($task) {
                         $task->log($msg);
                     } else {
                         //TRANS: %s is the entity
                         Session::addMessageAfterRedirect($msg, false, ERROR);
                     }
                 }
             }
         }
     }
 }
 /**
  * Cron action on cartridges : alert if a stock is behind the threshold
  *
  * @param $task for log, display informations if NULL?
  *
  * @return 0 : nothing to do 1 : done with success
  *
  **/
 static function cronCartridge($task = NULL)
 {
     global $DB, $CFG_GLPI, $LANG;
     $cron_status = 1;
     if ($CFG_GLPI["use_mailing"]) {
         $message = array();
         $alert = new Alert();
         foreach (Entity::getEntitiesToNotify('cartridges_alert_repeat') as $entity => $repeat) {
             // if you change this query, please don't forget to also change in showDebug()
             $query_alert = "SELECT `glpi_cartridgeitems`.`id` AS cartID,\n                                   `glpi_cartridgeitems`.`entities_id` AS entity,\n                                   `glpi_cartridgeitems`.`ref` AS cartref,\n                                   `glpi_cartridgeitems`.`name` AS cartname,\n                                   `glpi_cartridgeitems`.`alarm_threshold` AS threshold,\n                                   `glpi_alerts`.`id` AS alertID,\n                                   `glpi_alerts`.`date`\n                            FROM `glpi_cartridgeitems`\n                            LEFT JOIN `glpi_alerts`\n                                 ON (`glpi_cartridgeitems`.`id` = `glpi_alerts`.`items_id`\n                                     AND `glpi_alerts`.`itemtype` = 'CartridgeItem')\n                            WHERE `glpi_cartridgeitems`.`is_deleted` = '0'\n                                  AND `glpi_cartridgeitems`.`alarm_threshold` >= '0'\n                                  AND `glpi_cartridgeitems`.`entities_id` = '" . $entity . "'\n                                  AND (`glpi_alerts`.`date` IS NULL\n                                       OR (`glpi_alerts`.date+{$repeat}) < CURRENT_TIMESTAMP());";
             $message = "";
             $items = array();
             foreach ($DB->request($query_alert) as $cartridge) {
                 if (($unused = Cartridge::getUnusedNumber($cartridge["cartID"])) <= $cartridge["threshold"]) {
                     // define message alert
                     $message .= $LANG['mailing'][35] . " " . $cartridge["cartname"] . " - " . $LANG['consumables'][2] . "&nbsp;: " . $cartridge["cartref"] . " - " . $LANG['software'][20] . "&nbsp;: " . $unused . "<br>";
                     $items[$cartridge["cartID"]] = $cartridge;
                     // if alert exists -> delete
                     if (!empty($cartridge["alertID"])) {
                         $alert->delete(array("id" => $cartridge["alertID"]));
                     }
                 }
             }
             if (!empty($items)) {
                 $options['entities_id'] = $entity;
                 $options['cartridges'] = $items;
                 if (NotificationEvent::raiseEvent('alert', new Cartridge(), $options)) {
                     if ($task) {
                         $task->log(Dropdown::getDropdownName("glpi_entities", $entity) . "&nbsp;:  {$message}\n");
                         $task->addVolume(1);
                     } else {
                         addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . "&nbsp;:  {$message}");
                     }
                     $input["type"] = Alert::THRESHOLD;
                     $input["itemtype"] = 'CartridgeItem';
                     // add alerts
                     foreach ($items as $ID => $consumable) {
                         $input["items_id"] = $ID;
                         $alert->add($input);
                         unset($alert->fields['id']);
                     }
                 } else {
                     if ($task) {
                         $task->log(Dropdown::getDropdownName("glpi_entities", $entity) . "&nbsp;: Send cartidge alert failed\n");
                     } else {
                         addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . "&nbsp;: Send cartidge alert failed", false, ERROR);
                     }
                 }
             }
         }
     }
 }