Example #1
0
 public static function cronComputeLateOrders($task)
 {
     global $CFG_GLPI, $DB;
     $nblate = 0;
     $table = getTableForItemType(__CLASS__);
     foreach (getAllDatasFromTable($table, "`is_template`='0'") as $values) {
         $order = new self();
         $order->fields = $values;
         if (!$order->fields['is_late'] && $order->shouldBeAlreadyDelivered(true)) {
             $order->setIsLate();
             $nblate++;
         }
     }
     $task->addVolume($nblate);
     $cron_status = 1;
     if ($CFG_GLPI["use_mailing"]) {
         $message = __("Order is late", "order");
         $alert = new Alert();
         $config = PluginOrderConfig::getConfig();
         $entities[] = 0;
         foreach ($DB->request("SELECT `id` FROM `glpi_entities` ORDER BY `id` ASC") as $entity) {
             $entities[] = $entity['id'];
         }
         foreach ($entities as $entity) {
             $query_alert = "SELECT `{$table}`.`id` AS id,\n                                   `{$table}`.`name` AS name,\n                                   `{$table}`.`num_order` AS num_order,\n                                   `{$table}`.`order_date` AS order_date,\n                                   `{$table}`.`duedate` AS duedate,\n                                   `{$table}`.`deliverydate` AS deliverydate,\n                                   `{$table}`.`comment` AS comment,\n                                   `{$table}`.`plugin_order_orderstates_id` AS plugin_order_orderstates_id,\n                                   `glpi_alerts`.`id` AS alertID,\n                                   `glpi_alerts`.`date`\n                            FROM `{$table}`\n                            LEFT JOIN `glpi_alerts`\n                                  ON (`{$table}`.`id` = `glpi_alerts`.`items_id`\n                                      AND `glpi_alerts`.`itemtype` = '" . __CLASS__ . "')\n                            WHERE `{$table}`.`entities_id` = '" . $entity . "'\n                                   AND (`glpi_alerts`.`date` IS NULL) AND `{$table}`.`is_late`='1'\n                                      AND `plugin_order_orderstates_id`!='" . $config->getDeliveredState() . "';";
             $orders = array();
             foreach ($DB->request($query_alert) as $order) {
                 $orders[$order['id']] = $order;
             }
             if (!empty($orders)) {
                 $options['entities_id'] = $entity;
                 $options['orders'] = $orders;
                 if (NotificationEvent::raiseEvent('duedate', new PluginOrderOrder(), $options)) {
                     if ($task) {
                         $task->log(Dropdown::getDropdownName("glpi_entities", $entity) . " :  {$message}\n");
                         $task->addVolume(1);
                     } else {
                         Session::addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . " :  {$message}");
                     }
                     $input["type"] = Alert::THRESHOLD;
                     $input["itemtype"] = 'PluginOrderOrder';
                     // add alerts
                     foreach ($orders as $ID => $tmp) {
                         $input["items_id"] = $ID;
                         $alert->add($input);
                         unset($alert->fields['id']);
                     }
                 } else {
                     if ($task) {
                         $task->log(Dropdown::getDropdownName("glpi_entities", $entity) . " : Send order alert failed\n");
                     } else {
                         Session::addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . " : Send order alert failed", false, ERROR);
                     }
                 }
             }
         }
     }
     return true;
 }