| # |
Name |
Rule |
Severity |
Status |
Extra |
Enabled |
Action |
';
echo '';
if (Auth::user()->hasGlobalAdmin()) {
echo '';
echo ' - OR - ';
echo '';
}
echo ' |
| ';
$param = [];
if (isset($device['device_id']) && $device['device_id'] > 0) {
//device selected
$global_rules = "SELECT ar1.* FROM alert_rules AS ar1 WHERE ar1.id NOT IN (SELECT agm1.rule_id FROM alert_group_map AS agm1 UNION DISTINCT SELECT adm1.rule_id FROM alert_device_map AS adm1)";
$device_rules = "SELECT ar2.* FROM alert_rules AS ar2 WHERE ar2.id IN (SELECT adm2.rule_id FROM alert_device_map AS adm2 WHERE adm2.device_id=?)";
$param[] = $device['device_id'];
$device_group_rules = "SELECT ar3.* FROM alert_rules AS ar3 WHERE ar3.id IN (SELECT agm3.rule_id FROM alert_group_map AS agm3 LEFT JOIN device_group_device AS dgd3 ON agm3.group_id=dgd3.device_group_id WHERE dgd3.device_id=?)";
$param[] = $device['device_id'];
$full_query = '('. $global_rules .') UNION DISTINCT ('. $device_rules .') UNION DISTINCT ('. $device_group_rules .')';
} else {
// no device selected
$full_query = 'SELECT alert_rules.* FROM alert_rules';
}
$full_query .= ' ORDER BY id ASC';
$rule_list = dbFetchRows($full_query, $param);
$count = count($rule_list);
if (isset($_POST['page_number']) && $_POST['page_number'] > 0 && $_POST['page_number'] <= $count) {
$page_number = $_POST['page_number'];
} else {
$page_number = 1;
}
$start = (($page_number - 1) * $results);
$index = 0;
foreach ($rule_list as $rule) {
$index++;
if ($index < $start) {
continue;
}
if ($index > $start + $results) {
break;
}
$sub = dbFetchRows('SELECT * FROM alerts WHERE rule_id = ? ORDER BY `state` DESC, `id` DESC LIMIT 1', array($rule['id']));
$ico = 'check';
$col = 'success';
$extra = '';
if (sizeof($sub) == 1) {
$sub = $sub[0];
if ((int) $sub['state'] === 0) {
$ico = 'check';
$col = 'success';
} elseif ((int) $sub['state'] === 1 || (int) $sub['state'] === 2) {
$ico = 'exclamation';
$col = 'danger';
$extra = 'danger';
}
}
$alert_checked = '';
$orig_ico = $ico;
$orig_col = $col;
$orig_class = $extra;
if ($rule['disabled']) {
$ico = 'pause';
$col = '';
$extra = 'active';
} else {
$alert_checked = 'checked';
}
$rule_extra = json_decode($rule['extra'], true);
$device_count = dbFetchCell('SELECT COUNT(*) FROM alert_device_map WHERE rule_id=?', [$rule['id']]);
$group_count = dbFetchCell('SELECT COUNT(*) FROM alert_group_map WHERE rule_id=?', [$rule['id']]);
if ($device_count && $group_count) {
$popover_msg = 'Restricted rule';
$icon_indicator = 'fa fa-connectdevelop fa-fw text-primary';
} elseif ($device_count) {
$popover_msg = 'Device restricted rule';
$icon_indicator = 'fa fa-server fa-fw text-primary';
} elseif ($group_count) {
$popover_msg = 'Group restricted rule';
$icon_indicator = 'fa fa-th fa-fw text-primary';
} else {
$popover_msg = 'Global alert rule';
$icon_indicator = 'fa fa-globe fa-fw text-success';
}
echo "\r\n";
}//end foreach
if (($count % $results) > 0) {
echo '
| '.generate_pagination($count, $results, $page_number).' |
';
}
echo '