<?php
require_once dirname(__FILE__).'/graphs.inc.php';
require_once dirname(__FILE__).'/maps.inc.php';
require_once dirname(__FILE__).'/users.inc.php';
function getSystemStatusData(array $filter) {
$filter_groupids = (array_key_exists('groupids', $filter) && $filter['groupids']) ? $filter['groupids'] : null;
$filter_hostids = (array_key_exists('hostids', $filter) && $filter['hostids']) ? $filter['hostids'] : null;
$filter_severities = (array_key_exists('severities', $filter) && $filter['severities'])
? $filter['severities']
: range(TRIGGER_SEVERITY_NOT_CLASSIFIED, TRIGGER_SEVERITY_COUNT - 1);
$filter_ext_ack = array_key_exists('ext_ack', $filter)
? $filter['ext_ack']
: EXTACK_OPTION_ALL;
$filter_evaltype = array_key_exists('evaltype', $filter) ? $filter['evaltype'] : TAG_EVAL_TYPE_AND_OR;
$filter_tags = array_key_exists('tags', $filter) && $filter['tags'] ? $filter['tags'] : null;
$show_opdata = array_key_exists('show_opdata', $filter) && $filter['show_opdata'] != OPERATIONAL_DATA_SHOW_NONE;
if (array_key_exists('exclude_groupids', $filter) && $filter['exclude_groupids']) {
if ($filter_hostids === null) {
if ($filter_groupids === null) {
$filter_groupids = array_keys(API::HostGroup()->get([
'output' => [],
'with_hosts' => true,
'preservekeys' => true
]));
}
$filter_groupids = array_diff($filter_groupids, $filter['exclude_groupids']);
$filter_hostids = array_keys(API::Host()->get([
'output' => [],
'groupids' => $filter_groupids,
'preservekeys' => true
]));
}
$exclude_hostids = array_keys(API::Host()->get([
'output' => [],
'groupids' => $filter['exclude_groupids'],
'preservekeys' => true
]));
$filter_hostids = array_diff($filter_hostids, $exclude_hostids);
}
$data = [
'groups' => API::HostGroup()->get([
'output' => ['groupid', 'name'],
'groupids' => $filter_groupids,
'hostids' => $filter_hostids,
'with_monitored_hosts' => true,
'preservekeys' => true
]),
'triggers' => [],
'actions' => [],
'stats' => [],
'allowed' => [
'ui_problems' => CWebUser::checkAccess(CRoleHelper::UI_MONITORING_PROBLEMS),
'add_comments' => CWebUser::checkAccess(CRoleHelper::ACTIONS_ADD_PROBLEM_COMMENTS),