<?php
namespace LibreNMS\Alert;
class AlertUtil
{
/**
*
* Get the rule_id for a specific alert
*
* @param $alert_id
* @return mixed|null
*/
private static function getRuleId($alert_id)
{
$query = "SELECT `rule_id` FROM `alerts` WHERE `id`=?";
return dbFetchCell($query, [$alert_id]);
}
/**
*
* Get the transport for a given alert_id
*
* @param $alert_id
* @return array
*/
public static function getAlertTransports($alert_id)
{
$query = "SELECT b.transport_id, b.transport_type, b.transport_name FROM alert_transport_map AS a LEFT JOIN alert_transports AS b ON b.transport_id=a.transport_or_group_id WHERE a.target_type='single' AND a.rule_id=? UNION DISTINCT SELECT d.transport_id, d.transport_type, d.transport_name FROM alert_transport_map AS a LEFT JOIN alert_transport_groups AS b ON a.transport_or_group_id=b.transport_group_id LEFT JOIN transport_group_transport AS c ON b.transport_group_id=c.transport_group_id LEFT JOIN alert_transports AS d ON c.transport_id=d.transport_id WHERE a.target_type='group' AND a.rule_id=?";
$rule_id = self::getRuleId($alert_id);
return dbFetchRows($query, [$rule_id, $rule_id]);
}
/**
*
* Returns the default transports
*
* @return array
*/
public static function getDefaultAlertTransports()
{
$query = "SELECT transport_id, transport_type FROM alert_transports WHERE is_default=true";
return dbFetchRows($query);
}
}