Example #1
0
while ($db_element = DBfetch($db_elements)) {
    if ($img = get_png_by_selementid($db_element['selementid'])) {
        imagecopy($im, $img, $db_element['x'], $db_element['y'], 0, 0, ImageSX($img), ImageSY($img));
    }
    if ($label_type == MAP_LABEL_TYPE_NOTHING) {
        continue;
    }
    $color = $darkgreen;
    $label_color = $black;
    $info_line = '';
    $label_location = $db_element['label_location'];
    if (is_null($label_location)) {
        $map['label_location'];
    }
    $label_line = expand_map_element_label_by_data($db_element);
    $el_info = get_info_by_selementid($db_element['selementid']);
    $info_line = $el_info['info'];
    $color = $el_info['color'];
    if ($label_type == MAP_LABEL_TYPE_STATUS) {
        $label_line = '';
    } else {
        if ($label_type == MAP_LABEL_TYPE_NAME) {
            $label_line = $el_info['name'];
        }
    }
    if (isset($el_info['disabled']) && $el_info['disabled'] == 1) {
        $info_line = 'DISABLED';
        $label_color = $gray;
    }
    unset($el_info);
    if ($db_element['elementtype'] == SYSMAP_ELEMENT_TYPE_HOST) {
Example #2
0
function get_info_by_selementid($selementid)
{
    global $colors;
    $el_name = '';
    $tr_info = array();
    $db_element = get_sysmaps_element_by_selementid($selementid);
    $el_type =& $db_element["elementtype"];
    $sql = array(SYSMAP_ELEMENT_TYPE_TRIGGER => 'SELECT DISTINCT t.triggerid,t.priority,t.value,t.description' . ',t.expression,h.host,h.status as h_status,i.status as i_status,t.status as t_status' . ' FROM triggers t, items i, functions f, hosts h ' . ' WHERE t.triggerid=' . $db_element['elementid'] . ' AND h.hostid=i.hostid ' . ' AND i.itemid=f.itemid ' . ' AND f.triggerid=t.triggerid ', SYSMAP_ELEMENT_TYPE_HOST_GROUP => 'SELECT DISTINCT t.triggerid, t.priority, t.value, t.description, t.expression, h.host' . ' FROM items i,functions f,triggers t,hosts h,hosts_groups hg,groups g ' . ' WHERE h.hostid=i.hostid ' . ' AND hg.groupid=g.groupid ' . ' AND g.groupid=' . $db_element['elementid'] . ' AND hg.hostid=h.hostid ' . ' AND i.itemid=f.itemid' . ' AND f.triggerid=t.triggerid ' . ' AND t.status=' . TRIGGER_STATUS_ENABLED . ' AND h.status=' . HOST_STATUS_MONITORED . ' AND i.status=' . ITEM_STATUS_ACTIVE, SYSMAP_ELEMENT_TYPE_HOST => 'SELECT DISTINCT t.triggerid, t.priority, t.value, t.description, t.expression, h.host' . ' FROM items i,functions f,triggers t,hosts h WHERE h.hostid=i.hostid' . ' AND i.hostid=' . $db_element['elementid'] . ' AND i.itemid=f.itemid' . ' AND f.triggerid=t.triggerid ' . ' AND t.status=' . TRIGGER_STATUS_ENABLED . ' AND h.status=' . HOST_STATUS_MONITORED . ' AND i.status=' . ITEM_STATUS_ACTIVE);
    $out['triggers'] = array();
    if (isset($sql[$el_type])) {
        $db_triggers = DBselect($sql[$el_type]);
        $trigger = DBfetch($db_triggers);
        if ($trigger) {
            if ($el_type == SYSMAP_ELEMENT_TYPE_TRIGGER) {
                $el_name = expand_trigger_description_by_data($trigger);
            }
            do {
                if ($el_type == SYSMAP_ELEMENT_TYPE_TRIGGER && ($trigger['h_status'] != HOST_STATUS_MONITORED || $trigger['i_status'] != ITEM_STATUS_ACTIVE || $trigger['t_status'] != TRIGGER_STATUS_ENABLED)) {
                    $type = TRIGGER_VALUE_UNKNOWN;
                    $out['disabled'] = 1;
                } else {
                    $type =& $trigger['value'];
                }
                if (!isset($tr_info[$type])) {
                    $tr_info[$type] = array('count' => 0);
                }
                $tr_info[$type]['count']++;
                if (!isset($tr_info[$type]['priority']) || $tr_info[$type]['priority'] < $trigger["priority"]) {
                    $tr_info[$type]['priority'] = $trigger["priority"];
                    if ($el_type != SYSMAP_ELEMENT_TYPE_TRIGGER && $type != TRIGGER_VALUE_UNKNOWN) {
                        $tr_info[$type]['info'] = expand_trigger_description_by_data($trigger);
                    }
                }
                if ($type == TRIGGER_VALUE_TRUE) {
                    array_push($out['triggers'], $trigger['triggerid']);
                }
            } while ($trigger = DBfetch($db_triggers));
        }
    } else {
        if ($el_type == SYSMAP_ELEMENT_TYPE_MAP) {
            $triggers = array();
            $db_subelements = DBselect("select selementid FROM sysmaps_elements" . " WHERE sysmapid=" . $db_element["elementid"]);
            while ($db_subelement = DBfetch($db_subelements)) {
                // recursion
                $inf = get_info_by_selementid($db_subelement["selementid"]);
                foreach ($inf['triggers'] as $id => $triggerid) {
                    if (!in_array($triggerid, $triggers)) {
                        array_push($triggers, $triggerid);
                    }
                }
                $type = $inf['type'];
                if (!isset($tr_info[$type]['count'])) {
                    $tr_info[$type]['count'] = 0;
                }
                $tr_info[$type]['count'] += isset($inf['count']) ? $inf['count'] : 1;
                if (!isset($tr_info[$type]['priority']) || $tr_info[$type]['priority'] < $inf["priority"]) {
                    $tr_info[$type]['priority'] = $inf['priority'];
                    $tr_info[$type]['info'] = $inf['info'];
                }
            }
            $count = count($triggers);
            if ($count > 0) {
                $tr_info[TRIGGER_VALUE_TRUE]['count'] = $count;
                if ($tr_info[TRIGGER_VALUE_TRUE]['count'] == 1) {
                    $db_trigger = DBfetch(DBselect('SELECT DISTINCT t.triggerid,t.priority,t.value,t.description' . ',t.expression,h.host FROM triggers t, items i, functions f, hosts h' . ' WHERE t.triggerid=' . $triggers[0] . ' AND h.hostid=i.hostid' . ' AND i.itemid=f.itemid AND f.triggerid=t.triggerid'));
                    $tr_info[TRIGGER_VALUE_TRUE]['info'] = expand_trigger_description_by_data($db_trigger);
                }
            }
        }
    }
    if ($el_type == SYSMAP_ELEMENT_TYPE_HOST) {
        $host = get_host_by_hostid($db_element["elementid"]);
        $el_name = $host['host'];
        if ($host["status"] == HOST_STATUS_TEMPLATE) {
            $tr_info[TRIGGER_VALUE_UNKNOWN]['count'] = 0;
            $tr_info[TRIGGER_VALUE_UNKNOWN]['priority'] = 0;
            $tr_info[TRIGGER_VALUE_UNKNOWN]['info'] = 'template';
        } else {
            if ($host["status"] == HOST_STATUS_NOT_MONITORED) {
                $tr_info[TRIGGER_VALUE_UNKNOWN]['count'] = 0;
                $tr_info[TRIGGER_VALUE_UNKNOWN]['priority'] = 0;
                $out['disabled'] = 1;
            } else {
                if (!isset($tr_info[TRIGGER_VALUE_FALSE])) {
                    $tr_info[TRIGGER_VALUE_FALSE]['count'] = 0;
                    $tr_info[TRIGGER_VALUE_FALSE]['priority'] = 0;
                    $tr_info[TRIGGER_VALUE_FALSE]['info'] = 'OK';
                }
            }
        }
    } else {
        if ($el_type == SYSMAP_ELEMENT_TYPE_HOST_GROUP) {
            $group = get_hostgroup_by_groupid($db_element["elementid"]);
            $el_name = $group['name'];
            if (!isset($tr_info[TRIGGER_VALUE_FALSE])) {
                $tr_info[TRIGGER_VALUE_FALSE]['count'] = 0;
                $tr_info[TRIGGER_VALUE_FALSE]['priority'] = 0;
                $tr_info[TRIGGER_VALUE_FALSE]['info'] = 'OK';
            }
        } else {
            if ($el_type == SYSMAP_ELEMENT_TYPE_MAP) {
                $db_map = DBfetch(DBselect('select name FROM sysmaps WHERE sysmapid=' . $db_element["elementid"]));
                $el_name = $db_map['name'];
                if (!isset($tr_info[TRIGGER_VALUE_FALSE])) {
                    $tr_info[TRIGGER_VALUE_FALSE]['count'] = 0;
                    $tr_info[TRIGGER_VALUE_FALSE]['priority'] = 0;
                    $tr_info[TRIGGER_VALUE_FALSE]['info'] = 'OK';
                }
            }
        }
    }
    if (isset($tr_info[TRIGGER_VALUE_TRUE])) {
        $inf =& $tr_info[TRIGGER_VALUE_TRUE];
        $out['type'] = TRIGGER_VALUE_TRUE;
        $out['info'] = 'PROBLEM';
        if ($inf['count'] > 1) {
            $out['info'] = $inf['count'] . ' problems';
        } else {
            if (isset($inf['info'])) {
                $out['info'] = $inf['info'];
            }
        }
        if (isset($inf['priority']) && $inf['priority'] > 3) {
            $out['color'] = $colors['Red'];
        } else {
            $out['color'] = $colors['Dark Red'];
        }
        $out['iconid'] = $db_element['iconid_on'];
    } else {
        if (isset($tr_info[TRIGGER_VALUE_UNKNOWN]) && !isset($tr_info[TRIGGER_VALUE_FALSE])) {
            $inf =& $tr_info[TRIGGER_VALUE_UNKNOWN];
            $out['type'] = TRIGGER_VALUE_UNKNOWN;
            $out['info'] = 'UNKNOWN';
            $out['color'] = $colors['Gray'];
            if (isset($out['disabled']) && $out['disabled'] == 1) {
                $out['iconid'] = $db_element['iconid_disabled'];
            } else {
                $out['iconid'] = $db_element['iconid_unknown'];
            }
            if (isset($inf['info'])) {
                $out['info'] = $inf['info'];
            }
        } else {
            $inf =& $tr_info[TRIGGER_VALUE_FALSE];
            $out['type'] = TRIGGER_VALUE_FALSE;
            $out['info'] = 'OK';
            if (isset($inf['info'])) {
                $out['info'] = 'OK';
            }
            $out['color'] = $colors['Dark Green'];
            $out['iconid'] = $db_element['iconid_off'];
        }
    }
    // No label for Images
    if ($el_type == SYSMAP_ELEMENT_TYPE_IMAGE) {
        $out['info'] = '';
    }
    $out['count'] = $inf['count'];
    $out['priority'] = isset($inf['priority']) ? $inf['priority'] : 0;
    $out['name'] = $el_name;
    return $out;
}