本文整理汇总了PHP中Alert::add方法的典型用法代码示例。如果您正苦于以下问题:PHP Alert::add方法的具体用法?PHP Alert::add怎么用?PHP Alert::add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Alert
的用法示例。
在下文中一共展示了Alert::add方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: send
public static function send($id_user, $content)
{
$alert = new Alert();
$alert->id_user = (int) $id_user;
$alert->is_read = 0;
$alert->content = pSQL($content);
$alert->add_date = "";
return $alert->add();
}
示例2: testAddDelete
public function testAddDelete()
{
$alert = new Alert();
$nb = countElementsInTable($alert->getTable());
$comp = getItemByTypeName('Computer', '_test_pc01');
$date = '2016-09-01 12:34:56';
// Add
$id = $alert->add(['itemtype' => $comp->getType(), 'items_id' => $comp->getID(), 'type' => Alert::END, 'date' => $date]);
$this->assertGreaterThan(0, $id);
$this->assertGreaterThan($nb, countElementsInTable($alert->getTable()));
// Getters
$this->assertFalse(Alert::alertExists($comp->getType(), $comp->getID(), Alert::NOTICE));
$this->assertEquals($id, Alert::alertExists($comp->getType(), $comp->getID(), Alert::END));
$this->assertEquals($date, Alert::getAlertDate($comp->getType(), $comp->getID(), Alert::END));
// Delete
$this->assertTrue($alert->clear($comp->getType(), $comp->getID(), Alert::END));
$this->assertEquals($nb, countElementsInTable($alert->getTable()));
// Still true, nothing to delete but no error
$this->assertTrue($alert->clear($comp->getType(), $comp->getID(), Alert::END));
}
示例3: cronReservation
/**
* Cron action on reservation : alert on end of reservations
*
* @param $task to log, if NULL use display (default NULL)
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronReservation($task = NULL)
{
global $DB, $CFG_GLPI;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$message = array();
$cron_status = 0;
$items_infos = array();
$items_messages = array();
foreach (Entity::getEntitiesToNotify('use_reservations_alert') as $entity => $value) {
$secs = $value * HOUR_TIMESTAMP;
// Reservation already begin and reservation ended in $value hours
$query_end = "SELECT `glpi_reservationitems`.*,\n `glpi_reservations`.`end` AS `end`,\n `glpi_reservations`.`id` AS `resaid`\n FROM `glpi_reservations`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_reservations`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'Reservation'\n AND `glpi_alerts`.`type` = '" . Alert::END . "')\n LEFT JOIN `glpi_reservationitems`\n ON (`glpi_reservations`.`reservationitems_id`\n = `glpi_reservationitems`.`id`)\n WHERE `glpi_reservationitems`.`entities_id` = '{$entity}'\n AND (UNIX_TIMESTAMP(`glpi_reservations`.`end`) - {$secs}) < UNIX_TIMESTAMP()\n AND `glpi_reservations`.`begin` < NOW()\n AND `glpi_alerts`.`date` IS NULL";
foreach ($DB->request($query_end) as $data) {
if ($item_resa = getItemForItemtype($data['itemtype'])) {
if ($item_resa->getFromDB($data["items_id"])) {
$data['item_name'] = $item_resa->getName();
$data['entity'] = $entity;
$items_infos[$entity][$data['resaid']] = $data;
if (!isset($items_messages[$entity])) {
$items_messages[$entity] = __('Device reservations expiring today') . "<br>";
}
$items_messages[$entity] .= sprintf(__('%1$s - %2$s'), $item_resa->getTypeName(), $item_resa->getName()) . "<br>";
}
}
}
}
foreach ($items_infos as $entity => $items) {
$resitem = new self();
if (NotificationEvent::raiseEvent("alert", new Reservation(), array('entities_id' => $entity, 'items' => $items))) {
$message = $items_messages[$entity];
$cron_status = 1;
if ($task) {
$task->addVolume(1);
$task->log(sprintf(__('%1$s: %2$s') . "\n", Dropdown::getDropdownName("glpi_entities", $entity), $message));
} else {
//TRANS: %1$s is a name, %2$s is text of message
Session::addMessageAfterRedirect(sprintf(__('%1$s: %2$s'), Dropdown::getDropdownName("glpi_entities", $entity), $message));
}
$alert = new Alert();
$input["itemtype"] = 'Reservation';
$input["type"] = Alert::END;
foreach ($items as $resaid => $item) {
$input["items_id"] = $resaid;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
$entityname = Dropdown::getDropdownName('glpi_entities', $entity);
//TRANS: %s is entity name
$msg = sprintf(__('%1$s: %2$s'), $entityname, __('Send reservation alert failed'));
if ($task) {
$task->log($msg);
} else {
Session::addMessageAfterRedirect($msg, false, ERROR);
}
}
}
return $cron_status;
}
示例4: cronSoftware
/**
* Cron action on softwares : alert on expired licences
*
* @param $task to log, if NULL display (default NULL)
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronSoftware($task = NULL)
{
global $DB, $CFG_GLPI;
$cron_status = 1;
if (!$CFG_GLPI['use_mailing']) {
return 0;
}
$message = array();
$items_notice = array();
$items_end = array();
foreach (Entity::getEntitiesToNotify('use_licenses_alert') as $entity => $value) {
$before = Entity::getUsedConfig('send_licenses_alert_before_delay', $entity);
// Check licenses
$query = "SELECT `glpi_softwarelicenses`.*,\n `glpi_softwares`.`name` AS softname\n FROM `glpi_softwarelicenses`\n INNER JOIN `glpi_softwares`\n ON (`glpi_softwarelicenses`.`softwares_id` = `glpi_softwares`.`id`)\n LEFT JOIN `glpi_alerts`\n ON (`glpi_softwarelicenses`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'SoftwareLicense'\n AND `glpi_alerts`.`type` = '" . Alert::END . "')\n WHERE `glpi_alerts`.`date` IS NULL\n AND `glpi_softwarelicenses`.`expire` IS NOT NULL\n AND DATEDIFF(`glpi_softwarelicenses`.`expire`,\n CURDATE()) < '{$before}'\n AND `glpi_softwares`.`is_template` = '0'\n AND `glpi_softwares`.`is_deleted` = '0'\n AND `glpi_softwares`.`entities_id` = '" . $entity . "'";
$message = "";
$items = array();
foreach ($DB->request($query) as $license) {
$name = $license['softname'] . ' - ' . $license['name'] . ' - ' . $license['serial'];
//TRANS: %1$s the license name, %2$s is the expiration date
$message .= sprintf(__('License %1$s expired on %2$s'), Html::convDate($license["expire"]), $name) . "<br>\n";
$items[$license['id']] = $license;
}
if (!empty($items)) {
$alert = new Alert();
$options['entities_id'] = $entity;
$options['licenses'] = $items;
if (NotificationEvent::raiseEvent('alert', new self(), $options)) {
$entityname = Dropdown::getDropdownName("glpi_entities", $entity);
if ($task) {
//TRANS: %1$s is the entity, %2$s is the message
$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::END;
$input["itemtype"] = 'SoftwareLicense';
// add alerts
foreach ($items as $ID => $consumable) {
$input["items_id"] = $ID;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
$entityname = Dropdown::getDropdownName('glpi_entities', $entity);
//TRANS: %s is entity name
$msg = sprintf(__('%1$s: %2$s'), $entityname, __('Send licenses alert failed'));
if ($task) {
$task->log($msg);
} else {
Session::addMessageAfterRedirect($msg, false, ERROR);
}
}
}
}
return $cron_status;
}
示例5: cronInfocom
/**
* Cron action on infocom : alert on expired warranty
*
* @param $task to log, if NULL use display (default NULL)
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronInfocom($task = NULL)
{
global $DB, $CFG_GLPI;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$message = array();
$cron_status = 0;
$items_infos = array();
$items_messages = array();
foreach (Entity::getEntitiesToNotify('use_infocoms_alert') as $entity => $value) {
$before = Entity::getUsedConfig('send_infocoms_alert_before_delay', $entity);
$query_end = "SELECT `glpi_infocoms`.*\n FROM `glpi_infocoms`\n LEFT JOIN `glpi_alerts` ON (`glpi_infocoms`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'Infocom'\n AND `glpi_alerts`.`type`='" . Alert::END . "')\n WHERE (`glpi_infocoms`.`alert` & " . pow(2, Alert::END) . ") >'0'\n AND `glpi_infocoms`.`entities_id`='" . $entity . "'\n AND `glpi_infocoms`.`warranty_duration`>'0'\n AND `glpi_infocoms`.`warranty_date` IS NOT NULL\n AND DATEDIFF(ADDDATE(`glpi_infocoms`.`warranty_date`,\n INTERVAL (`glpi_infocoms`.`warranty_duration`)\n MONTH),\n CURDATE() ) < '{$before}'\n AND `glpi_alerts`.`date` IS NULL";
foreach ($DB->request($query_end) as $data) {
if ($item_infocom = getItemForItemtype($data["itemtype"])) {
if ($item_infocom->getFromDB($data["items_id"])) {
$entity = $data['entities_id'];
$warranty = self::getWarrantyExpir($data["warranty_date"], $data["warranty_duration"]);
//TRANS: %1$s is a type, %2$s is a name (used in croninfocom)
$name = sprintf(__('%1$s - %2$s'), $item_infocom->getTypeName(1), $item_infocom->getName());
//TRANS: %1$s is the warranty end date and %2$s the name of the item
$message = sprintf(__('Item reaching the end of warranty on %1$s: %2$s'), $warranty, $name) . "<br>";
$data['warrantyexpiration'] = $warranty;
$data['item_name'] = $item_infocom->getName();
$items_infos[$entity][$data['id']] = $data;
if (!isset($items_messages[$entity])) {
$items_messages[$entity] = __('No item reaching the end of warranty.') . "<br>";
}
$items_messages[$entity] .= $message;
}
}
}
}
foreach ($items_infos as $entity => $items) {
if (NotificationEvent::raiseEvent("alert", new self(), array('entities_id' => $entity, 'items' => $items))) {
$message = $items_messages[$entity];
$cron_status = 1;
if ($task) {
$task->log(sprintf(__('%1$s: %2$s') . "\n", Dropdown::getDropdownName("glpi_entities", $entity), $message));
$task->addVolume(1);
} else {
Session::addMessageAfterRedirect(sprintf(__('%1$s: %2$s'), Dropdown::getDropdownName("glpi_entities", $entity), $message));
}
$alert = new Alert();
$input["itemtype"] = 'Infocom';
$input["type"] = Alert::END;
foreach ($items as $id => $item) {
$input["items_id"] = $id;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
$entityname = Dropdown::getDropdownName('glpi_entities', $entity);
//TRANS: %s is entity name
$msg = sprintf(__('%1$s: %2$s'), $entityname, __('send infocom alert failed'));
if ($task) {
$task->log($msg);
} else {
Session::addMessageAfterRedirect($msg, false, ERROR);
}
}
}
return $cron_status;
}
示例6: cronComputeLateOrders
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;
}
示例7: sendAlert
/**
* @return int
*/
static function sendAlert()
{
global $DB, $CFG_GLPI;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$items_infos = array();
$query = "SELECT `glpi_plugin_ocsinventoryng_notimportedcomputers`.*\n FROM `glpi_plugin_ocsinventoryng_notimportedcomputers`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_plugin_ocsinventoryng_notimportedcomputers`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'PluginOcsinventoryngNotimportedcomputer'\n AND `glpi_alerts`.`type` = '" . Alert::END . "')\n WHERE `glpi_alerts`.`date` IS NULL";
foreach ($DB->request($query) as $notimported) {
$items_infos[$notimported['entities_id']][$notimported['id']] = $notimported;
}
foreach ($items_infos as $entity => $items) {
if (NotificationEvent::raiseEvent('not_imported', new PluginOcsinventoryngNotimportedcomputer(), array('entities_id' => $entity, 'notimported' => $items))) {
$alert = new Alert();
$input["itemtype"] = 'PluginOcsinventoryngNotimportedcomputer';
$input["type"] = Alert::END;
foreach ($items as $id => $item) {
$input["items_id"] = $id;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
Toolbox::logDebug(__('%1$s: %2$s') . "\n", Dropdown::getDropdownName("glpi_entities", $entity), __('Send OCSNG not imported computers alert failed', 'ocsinventoryng'));
}
}
}
示例8: cronContract
//.........这里部分代码省略.........
case 'notice':
$contract_messages[$type][$entity] = __('Contract entered in notice time') . "<br>";
break;
case 'end':
$contract_messages[$type][$entity] = __('Contract ended') . "<br>";
break;
}
}
$contract_messages[$type][$entity] .= $message;
}
}
// Get contrats with periodicity alerts
$query_periodicity = "SELECT `glpi_contracts`.*\n FROM `glpi_contracts`\n WHERE `glpi_contracts`.`alert` & " . pow(2, Alert::PERIODICITY) . " > '0'\n AND `glpi_contracts`.`entities_id` = '" . $entity . "' ";
// Foreach ones :
foreach ($DB->request($query_periodicity) as $data) {
$entity = $data['entities_id'];
// Compute end date + 12 month : do not send alerts after
$end_alert = date('Y-m-d', strtotime($data['begin_date'] . " +" . ($data['duration'] + 12) . " month"));
if (!empty($data['begin_date']) && $data['periodicity'] && $end_alert > date('Y-m-d')) {
$todo = array('periodicity' => Alert::PERIODICITY);
if ($data['alert'] & pow(2, Alert::NOTICE)) {
$todo['periodicitynotice'] = Alert::NOTICE;
}
// Get previous alerts
foreach ($todo as $type => $event) {
$previous_alerts[$type] = Alert::getAlertDate(__CLASS__, $data['id'], $event);
}
// compute next alert date based on already send alerts (or not)
foreach ($todo as $type => $event) {
$next_alerts[$type] = date('Y-m-d', strtotime($data['begin_date'] . " -" . $before . " day"));
if ($type == Alert::NOTICE) {
$next_alerts[$type] = date('Y-m-d', strtotime($next_alerts[$type] . " -" . $data['notice'] . " month"));
}
$today_limit = date('Y-m-d', strtotime(date('Y-m-d') . " -" . $data['periodicity'] . " month"));
// Init previous by begin date if not set
if (empty($previous_alerts[$type])) {
$previous_alerts[$type] = $today_limit;
}
while ($next_alerts[$type] < $previous_alerts[$type] && $next_alerts[$type] < $end_alert) {
$next_alerts[$type] = date('Y-m-d', strtotime($next_alerts[$type] . " +" . $data['periodicity'] . " month"));
}
// If this date is passed : clean alerts and send again
if ($next_alerts[$type] <= date('Y-m-d')) {
$alert = new Alert();
$alert->clear(__CLASS__, $data['id'], $event);
$real_alert_date = date('Y-m-d', strtotime($next_alerts[$type] . " +" . $before . " day"));
$message = sprintf(__('%1$s: %2$s') . "<br>\n", $data["name"], Html::convDate($real_alert_date));
$data['alert_date'] = $real_alert_date;
$data['items'] = Contract_Item::getItemsForContract($data['id'], $entity);
$contract_infos[$type][$entity][$data['id']] = $data;
switch ($type) {
case 'periodicitynotice':
$contract_messages[$type][$entity] = __('Contract entered in notice time for period') . "<br>";
break;
case 'periodicity':
$contract_messages[$type][$entity] = __('Contract period ended') . "<br>";
break;
}
$contract_messages[$type][$entity] .= $message;
}
}
}
}
}
foreach (array('notice' => Alert::NOTICE, 'end' => Alert::END, 'periodicity' => Alert::PERIODICITY, 'periodicitynotice' => Alert::NOTICE) as $event => $type) {
if (isset($contract_infos[$event]) && count($contract_infos[$event])) {
foreach ($contract_infos[$event] as $entity => $contracts) {
if (NotificationEvent::raiseEvent($event, new self(), array('entities_id' => $entity, 'items' => $contracts))) {
$message = $contract_messages[$event][$entity];
$cron_status = 1;
$entityname = Dropdown::getDropdownName("glpi_entities", $entity);
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));
}
$alert = new Alert();
$input["itemtype"] = __CLASS__;
$input["type"] = $type;
foreach ($contracts as $id => $contract) {
$input["items_id"] = $id;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
$entityname = Dropdown::getDropdownName('glpi_entities', $entity);
//TRANS: %1$s is entity name, %2$s is the message
$msg = sprintf(__('%1$s: %2$s'), $entityname, __('send contract alert failed'));
if ($task) {
$task->log($msg);
} else {
Session::addMessageAfterRedirect($msg, false, ERROR);
}
}
}
}
}
return $cron_status;
}
示例9: cronConsumable
/**
* Cron action on consumables : alert if a stock is behind the threshold
*
* @param $task to log, if NULL display (default NULL)
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronConsumable($task = NULL)
{
global $DB, $CFG_GLPI;
$cron_status = 1;
if ($CFG_GLPI["use_mailing"]) {
$message = array();
$items = array();
$alert = new Alert();
foreach (Entity::getEntitiesToNotify('consumables_alert_repeat') as $entity => $repeat) {
$query_alert = "SELECT `glpi_consumableitems`.`id` AS consID,\n `glpi_consumableitems`.`entities_id` AS entity,\n `glpi_consumableitems`.`ref` AS ref,\n `glpi_consumableitems`.`name` AS name,\n `glpi_consumableitems`.`alarm_threshold` AS threshold,\n `glpi_alerts`.`id` AS alertID,\n `glpi_alerts`.`date`\n FROM `glpi_consumableitems`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_consumableitems`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype`='ConsumableItem')\n WHERE `glpi_consumableitems`.`is_deleted` = '0'\n AND `glpi_consumableitems`.`alarm_threshold` >= '0'\n AND `glpi_consumableitems`.`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 $consumable) {
if (($unused = Consumable::getUnusedNumber($consumable["consID"])) <= $consumable["threshold"]) {
// define message alert
//TRANS: %1$s is the consumable name, %2$s its reference, %3$d the remaining number
$message .= sprintf(__('Threshold of alarm reached for the type of consumable: %1$s - Reference %2$s - Remaining %3$d'), $consumable['name'], $consumable['ref'], $unused);
$message .= '<br>';
$items[$consumable["consID"]] = $consumable;
// if alert exists -> delete
if (!empty($consumable["alertID"])) {
$alert->delete(array("id" => $consumable["alertID"]));
}
}
}
if (!empty($items)) {
$options['entities_id'] = $entity;
$options['items'] = $items;
if (NotificationEvent::raiseEvent('alert', new ConsumableItem(), $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"] = 'ConsumableItem';
// add alerts
foreach ($items as $ID => $consumable) {
$input["items_id"] = $ID;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
$entityname = Dropdown::getDropdownName('glpi_entities', $entity);
//TRANS: %s is entity name
$msg = sprintf(__('%s: send consumable alert failed'), $entityname);
if ($task) {
$task->log($msg);
} else {
Session::addMessageAfterRedirect($msg, false, ERROR);
}
}
}
}
}
return $cron_status;
}
示例10: cronPlanningRecall
/**
* Cron action on contracts : alert depending of the config : on notice and expire
*
* @param $task for log, if NULL display (default NULL)
**/
static function cronPlanningRecall($task = NULL)
{
global $DB, $CFG_GLPI;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$cron_status = 0;
$query = "SELECT `glpi_planningrecalls`.*\n FROM `glpi_planningrecalls`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_planningrecalls`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'PlanningRecall'\n AND `glpi_alerts`.`type`='" . Alert::ACTION . "')\n WHERE `glpi_planningrecalls`.`when` IS NOT NULL\n AND `glpi_planningrecalls`.`when` < NOW()\n AND `glpi_alerts`.`date` IS NULL";
$pr = new self();
foreach ($DB->request($query) as $data) {
if ($pr->getFromDB($data['id']) && $pr->getItem()) {
if (NotificationEvent::raiseEvent('planningrecall', $pr)) {
$cron_status = 1;
$task->addVolume(1);
$alert = new Alert();
$input["itemtype"] = __CLASS__;
$input["type"] = Alert::ACTION;
$input["items_id"] = $data['id'];
$alert->add($input);
}
} else {
// Clean item
$pr->delete($data);
}
}
return $cron_status;
}
示例11: cronSoftware
/**
* Cron action on softwares : alert on expired licences
*
* @param $task to log, if NULL display
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronSoftware($task = NULL)
{
global $DB, $CFG_GLPI, $LANG;
$cron_status = 1;
if (!$CFG_GLPI['use_mailing']) {
return 0;
}
$message = array();
$items_notice = array();
$items_end = array();
foreach (Entity::getEntitiesToNotify('use_licenses_alert') as $entity => $value) {
// Check licenses
$query = "SELECT `glpi_softwarelicenses`.*,\n `glpi_softwares`.`name` AS softname\n FROM `glpi_softwarelicenses`\n INNER JOIN `glpi_softwares`\n ON (`glpi_softwarelicenses`.`softwares_id` = `glpi_softwares`.`id`)\n LEFT JOIN `glpi_alerts`\n ON (`glpi_softwarelicenses`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'SoftwareLicense'\n AND `glpi_alerts`.`type` = '" . Alert::END . "')\n WHERE `glpi_alerts`.`date` IS NULL\n AND `glpi_softwarelicenses`.`expire` IS NOT NULL\n AND `glpi_softwarelicenses`.`expire` < CURDATE()\n AND `glpi_softwares`.`is_template` = '0'\n AND `glpi_softwares`.`is_deleted` = '0'\n AND `glpi_softwares`.`entities_id` = '" . $entity . "'";
$message = "";
$items = array();
foreach ($DB->request($query) as $license) {
$name = $license['softname'] . ' - ' . $license['name'] . ' - ' . $license['serial'];
$message .= $LANG['mailing'][51] . " " . $name . ": " . convDate($license["expire"]) . "<br>\n";
$items[$license['id']] = $license;
}
if (!empty($items)) {
$alert = new Alert();
$options['entities_id'] = $entity;
$options['licenses'] = $items;
if (NotificationEvent::raiseEvent('alert', new SoftwareLicense(), $options)) {
if ($task) {
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . " : {$message}\n");
$task->addVolume(1);
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . " : {$message}");
}
$input["type"] = Alert::END;
$input["itemtype"] = 'SoftwareLicense';
// 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) . " : Send licenses alert failed\n");
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . " : Send licenses alert failed", false, ERROR);
}
}
}
}
return $cron_status;
}
示例12: cronCartridge
/**
* 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] . " : " . $cartridge["cartref"] . " - " . $LANG['software'][20] . " : " . $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) . " : {$message}\n");
$task->addVolume(1);
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . " : {$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) . " : Send cartidge alert failed\n");
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . " : Send cartidge alert failed", false, ERROR);
}
}
}
}
}
}
示例13: cronInfocom
/**
* Cron action on infocom : alert on expired warranty
*
* @param $task to log, if NULL use display
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronInfocom($task = NULL)
{
global $DB, $CFG_GLPI, $LANG;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$message = array();
$cron_status = 0;
$items_infos = array();
$items_messages = array();
foreach (Entity::getEntitiesToNotify('use_infocoms_alert') as $entity => $value) {
$query_end = "SELECT `glpi_infocoms`.*\n FROM `glpi_infocoms`\n LEFT JOIN `glpi_alerts` ON (`glpi_infocoms`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'Infocom'\n AND `glpi_alerts`.`type`='" . Alert::END . "')\n WHERE (`glpi_infocoms`.`alert` & " . pow(2, Alert::END) . ") >'0'\n AND `glpi_infocoms`.`entities_id`='" . $entity . "'\n AND `glpi_infocoms`.`warranty_duration`>'0'\n AND `glpi_infocoms`.`warranty_date` IS NOT NULL\n AND DATEDIFF(ADDDATE(`glpi_infocoms`.`warranty_date`,\n INTERVAL (`glpi_infocoms`.`warranty_duration`) MONTH),\n CURDATE() )<'0'\n AND `glpi_alerts`.`date` IS NULL";
foreach ($DB->request($query_end) as $data) {
$item_infocom = new $data["itemtype"]();
if ($item_infocom->getFromDB($data["items_id"])) {
$entity = $data['entities_id'];
$warranty = getWarrantyExpir($data["warranty_date"], $data["warranty_duration"]);
$message = $LANG['mailing'][40] . " " . $item_infocom->getTypeName() . " - " . $item_infocom->getName() . " : " . $warranty . "<br>";
$data['warrantyexpiration'] = $warranty;
$data['item_name'] = $item_infocom->getName();
$items_infos[$entity][$data['id']] = $data;
if (!isset($items_messages[$entity])) {
$items_messages[$entity] = $LANG['mailing'][40] . "<br />";
}
$items_messages[$entity] .= $message;
}
}
}
foreach ($items_infos as $entity => $items) {
if (NotificationEvent::raiseEvent("alert", new self(), array('entities_id' => $entity, 'items' => $items))) {
$message = $items_messages[$entity];
$cron_status = 1;
if ($task) {
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}\n");
$task->addVolume(1);
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}");
}
$alert = new Alert();
$input["itemtype"] = 'Infocom';
$input["type"] = Alert::END;
foreach ($items as $id => $item) {
$input["items_id"] = $id;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
if ($task) {
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": Send infocom alert failed\n");
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": Send infocom alert failed", false, ERROR);
}
}
}
return $cron_status;
}
示例14: cronReservation
/**
* Cron action on reservation : alert on end of reservations
*
* @param $task to log, if NULL use display
*
* @return 0 : nothing to do 1 : done with success
**/
static function cronReservation($task = NULL)
{
global $DB, $CFG_GLPI, $LANG;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$message = array();
$cron_status = 0;
$items_infos = array();
$items_messages = array();
foreach (Entity::getEntitiesToNotify('use_reservations_alert') as $entity => $value) {
$secs = $value * HOUR_TIMESTAMP;
// Reservation already begin and reservation ended in $value hours
$query_end = "SELECT `glpi_reservationitems`.*,\n `glpi_reservations`.`end` AS `end`,\n `glpi_reservations`.`id` AS `resaid`\n FROM `glpi_reservations`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_reservations`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'Reservation'\n AND `glpi_alerts`.`type` = '" . Alert::END . "')\n LEFT JOIN `glpi_reservationitems`\n ON (`glpi_reservations`.`reservationitems_id` = `glpi_reservationitems`.`id`)\n WHERE `glpi_reservationitems`.`entities_id` = '{$entity}'\n AND (UNIX_TIMESTAMP(`glpi_reservations`.`end`) - {$secs}) < UNIX_TIMESTAMP()\n AND `glpi_reservations`.`begin` < NOW()\n AND `glpi_alerts`.`date` IS NULL";
foreach ($DB->request($query_end) as $data) {
$item_resa = new $data["itemtype"]();
if ($item_resa->getFromDB($data["items_id"])) {
$message .= $LANG['reservation'][40] . " " . $item_resa->getTypeName() . " - " . $item_resa->getName() . "<br />";
$data['item_name'] = $item_resa->getName();
$data['entity'] = $entity;
$items_infos[$entity][$data['resaid']] = $data;
if (!isset($items_messages[$entity])) {
$items_messages[$entity] = $LANG['reservation'][40] . "<br />";
}
$items_messages[$entity] .= $message;
}
}
}
foreach ($items_infos as $entity => $items) {
$resitem = new ReservationItem();
if (NotificationEvent::raiseEvent("alert", new Reservation(), array('entities_id' => $entity, 'items' => $items))) {
$message = $items_messages[$entity];
$cron_status = 1;
if ($task) {
$task->addVolume(1);
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}\n");
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}");
}
$alert = new Alert();
$input["itemtype"] = 'Reservation';
$input["type"] = Alert::END;
foreach ($items as $resaid => $item) {
$input["items_id"] = $resaid;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
if ($task) {
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": Send reservationitem alert failed\n");
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": Send reservationitem alert failed", false, ERROR);
}
}
}
return $cron_status;
}
示例15: cronContract
/**
* Cron action on contracts : alert depending of the config : on notice and expire
*
* @param $task for log, if NULL display
*
**/
static function cronContract($task = NULL)
{
global $DB, $CFG_GLPI, $LANG;
if (!$CFG_GLPI["use_mailing"]) {
return 0;
}
$message = array();
$items_notice = array();
$items_end = array();
$cron_status = 0;
$contract_infos[Alert::END] = array();
$contract_infos[Alert::NOTICE] = array();
$contract_messages = array();
foreach (Entity::getEntitiesToNotify('use_contracts_alert') as $entity => $value) {
$query_notice = "SELECT `glpi_contracts`.*\n FROM `glpi_contracts`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_contracts`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'Contract'\n AND `glpi_alerts`.`type`='" . Alert::NOTICE . "')\n WHERE (`glpi_contracts`.`alert` & " . pow(2, Alert::NOTICE) . ") >'0'\n AND `glpi_contracts`.`is_deleted` = '0'\n AND `glpi_contracts`.`begin_date` IS NOT NULL\n AND `glpi_contracts`.`duration` <> '0'\n AND `glpi_contracts`.`notice` <> '0'\n AND DATEDIFF(ADDDATE(`glpi_contracts`.`begin_date`,\n INTERVAL `glpi_contracts`.`duration` MONTH),\n CURDATE()) > '0'\n AND DATEDIFF(ADDDATE(`glpi_contracts`.`begin_date`,\n INTERVAL (`glpi_contracts`.`duration`\n -`glpi_contracts`.`notice`) MONTH),\n CURDATE()) < '0'\n AND `glpi_alerts`.`date` IS NULL\n AND `glpi_contracts`.`entities_id` = '" . $entity . "'";
$query_end = "SELECT `glpi_contracts`.*\n FROM `glpi_contracts`\n LEFT JOIN `glpi_alerts`\n ON (`glpi_contracts`.`id` = `glpi_alerts`.`items_id`\n AND `glpi_alerts`.`itemtype` = 'Contract'\n AND `glpi_alerts`.`type`='" . Alert::END . "')\n WHERE (`glpi_contracts`.`alert` & " . pow(2, Alert::END) . ") > '0'\n AND `glpi_contracts`.`is_deleted` = '0'\n AND `glpi_contracts`.`begin_date` IS NOT NULL\n AND `glpi_contracts`.`duration` <> '0'\n AND DATEDIFF(ADDDATE(`glpi_contracts`.`begin_date`,\n INTERVAL (`glpi_contracts`.`duration`) MONTH),\n CURDATE()) < '0'\n AND `glpi_alerts`.`date` IS NULL\n AND `glpi_contracts`.`entities_id` = '" . $entity . "'";
$querys = array(Alert::NOTICE => $query_notice, Alert::END => $query_end);
foreach ($querys as $type => $query) {
foreach ($DB->request($query) as $data) {
$entity = $data['entities_id'];
$message = $data["name"] . ": " . getWarrantyExpir($data["begin_date"], $data["duration"], $data["notice"]) . "<br>\n";
$contract_infos[$type][$entity][$data['id']] = $data;
if (!isset($contract_messages[$type][$entity])) {
$contract_messages[$type][$entity] = $LANG['mailing'][37] . "<br />";
}
$contract_messages[$type][$entity] .= $message;
}
}
}
foreach (array(Alert::NOTICE => "notice", Alert::END => "end") as $type => $event) {
foreach ($contract_infos[$type] as $entity => $contracts) {
if (NotificationEvent::raiseEvent($event, new Contract(), array('entities_id' => $entity, 'contracts' => $contracts))) {
$message = $contract_messages[$type][$entity];
$cron_status = 1;
if ($task) {
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}\n");
$task->addVolume(1);
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}");
}
$alert = new Alert();
$input["itemtype"] = 'Contract';
$input["type"] = $type;
foreach ($contracts as $id => $contract) {
$input["items_id"] = $id;
$alert->add($input);
unset($alert->fields['id']);
}
} else {
if ($task) {
$task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": Send contract alert failed\n");
} else {
addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": Send contract alert failed", false, ERROR);
}
}
}
}
return $cron_status;
}