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; }