Example #1
0
function build_servicegroups_array()
{
    global $NagiosData;
    global $NagiosUser;
    $servicegroups = $NagiosData->getProperty('servicegroups');
    $services = $NagiosData->getProperty('services');
    $services = user_filtering($services, 'services');
    $servicegroups_details = array();
    //multi-dim array to hold servicegroups
    foreach ($servicegroups as $groupname => $members) {
        $servicegroups_details[$groupname] = array();
        //array_dump($members);
        foreach ($services as $service) {
            if (isset($members[$service['host_name']]) && in_array($service['service_description'], $members[$service['host_name']])) {
                process_service_status_keys($service);
                $servicegroups_details[$groupname][] = $service;
            }
        }
    }
    return $servicegroups_details;
}
function hosts_and_services_data($type, $state_filter = NULL, $name_filter = NULL, $host_filter = NULL)
{
    global $NagiosData;
    global $NagiosUser;
    $data = $NagiosData->getProperty($type);
    //add filter for user-level filtering
    if (!$NagiosUser->is_admin()) {
        //print $type;
        $data = user_filtering($data, $type);
    }
    $data_in = $data;
    if ($state_filter) {
        if ($state_filter == 'PROBLEMS' || $state_filter == 'UNHANDLED' || $state_filter == 'ACKNOWLEDGED') {
            $data = array_merge(get_by_state('UNKNOWN', $data_in), get_by_state('CRITICAL', $data_in), get_by_state('WARNING', $data_in), get_by_state('UNREACHABLE', $data_in), get_by_state('DOWN', $data_in));
            if ($state_filter == 'UNHANDLED') {
                //loop and return array
                $unhandled = array();
                foreach ($data as $d) {
                    if ($d['problem_has_been_acknowledged'] == 0 && $d['scheduled_downtime_depth'] == 0) {
                        $unhandled[] = $d;
                    }
                }
                $data = $unhandled;
            }
            //end unhandled if
            if ($state_filter == 'ACKNOWLEDGED') {
                //loop and return array
                $acknowledged = array();
                foreach ($data as $d) {
                    if ($d['problem_has_been_acknowledged'] > 0 || $d['scheduled_downtime_depth'] > 0) {
                        $acknowledged[] = $d;
                    }
                }
                $data = $acknowledged;
            }
            //end acknowledged if
        } elseif ($state_filter == 'PENDING' || $state_filter == 'OK' || $state_filter == 'UP') {
            $filtered = array();
            //pending
            if ($state_filter == 'PENDING') {
                foreach ($data as $d) {
                    if ($d['current_state'] == 0 && $d['last_check'] == 0) {
                        $filtered[] = $d;
                    }
                }
            } else {
                foreach ($data as $d) {
                    if ($d['current_state'] == 0 && $d['last_check'] != 0) {
                        $filtered[] = $d;
                    }
                }
            }
            $data = $filtered;
        } else {
            $s = $type == 'services' ? true : false;
            $data = get_by_state($state_filter, $data, $s);
        }
    }
    //end IF $state_filter
    if ($name_filter) {
        $name_data = get_by_name($name_filter, $data);
        $service_data = get_by_name($name_filter, $data, 'service_description');
        $data = $name_data;
        //array_dump($data);
        foreach ($service_data as $i => $service) {
            if (!isset($data[$i])) {
                $data[$i] = $service;
            }
        }
        $data = array_values($data);
    }
    if ($host_filter) {
        $name_data = get_by_name($name_filter, $data, 'host_name', $host_filter);
        $service_data = get_by_name($name_filter, $data, 'service_description', $host_filter);
        $data = $name_data;
        //array_dump($service_data);
        foreach ($service_data as $i => $service) {
            if (!isset($data[$i])) {
                $data[$i] = $service;
            }
        }
        $data = array_values($data);
    }
    //var_dump($data);
    return $data;
}