Exemplo n.º 1
0
/**
 * Adds names to elements. Adds expression for SYSMAP_ELEMENT_TYPE_TRIGGER elements.
 *
 * @param type $selements
 */
function add_elementNames(&$selements)
{
    $hostids = array();
    $triggerids = array();
    $mapids = array();
    $hostgroupids = array();
    $imageids = array();
    foreach ($selements as $selement) {
        switch ($selement['elementtype']) {
            case SYSMAP_ELEMENT_TYPE_HOST:
                $hostids[$selement['elementid']] = $selement['elementid'];
                break;
            case SYSMAP_ELEMENT_TYPE_MAP:
                $mapids[$selement['elementid']] = $selement['elementid'];
                break;
            case SYSMAP_ELEMENT_TYPE_TRIGGER:
                $triggerids[$selement['elementid']] = $selement['elementid'];
                break;
            case SYSMAP_ELEMENT_TYPE_HOST_GROUP:
                $hostgroupids[$selement['elementid']] = $selement['elementid'];
                break;
            case SYSMAP_ELEMENT_TYPE_IMAGE:
                $imageids[$selement['iconid_off']] = $selement['iconid_off'];
                break;
        }
    }
    $hosts = API::Host()->get(array('hostids' => $hostids, 'output' => array('name'), 'nopermissions' => true, 'preservekeys' => true));
    $maps = API::Map()->get(array('mapids' => $mapids, 'output' => array('name'), 'nopermissions' => true, 'preservekeys' => true));
    $triggers = API::Trigger()->get(array('triggerids' => $triggerids, 'output' => API_OUTPUT_EXTEND, 'selectHosts' => array('hostid', 'name'), 'nopermissions' => true, 'preservekeys' => true));
    $hostgroups = API::HostGroup()->get(array('hostgroupids' => $hostgroupids, 'output' => array('name'), 'nopermissions' => true, 'preservekeys' => true));
    $images = API::image()->get(array('imageids' => $imageids, 'output' => API_OUTPUT_EXTEND, 'nopermissions' => true, 'preservekeys' => true));
    foreach ($selements as $snum => $selement) {
        switch ($selement['elementtype']) {
            case SYSMAP_ELEMENT_TYPE_HOST:
                $selements[$snum]['elementName'] = $hosts[$selement['elementid']]['name'];
                break;
            case SYSMAP_ELEMENT_TYPE_MAP:
                $selements[$snum]['elementName'] = $maps[$selement['elementid']]['name'];
                break;
            case SYSMAP_ELEMENT_TYPE_TRIGGER:
                $hostname = reset($triggers[$selement['elementid']]['hosts']);
                $selements[$snum]['elementName'] = $hostname['name'] . NAME_DELIMITER . CMacrosResolverHelper::resolveTriggerName($triggers[$selement['elementid']]);
                break;
            case SYSMAP_ELEMENT_TYPE_HOST_GROUP:
                $selements[$snum]['elementName'] = $hostgroups[$selement['elementid']]['name'];
                break;
            case SYSMAP_ELEMENT_TYPE_IMAGE:
                if (isset($images[$selement['iconid_off']]['name'])) {
                    $selements[$snum]['elementName'] = $images[$selement['iconid_off']]['name'];
                }
                break;
        }
    }
    if (!empty($triggers)) {
        add_triggerExpressions($selements, $triggers);
    }
}
Exemplo n.º 2
0
    $mapInfo = array();
    foreach ($map['selements'] as $selement) {
        // if element use icon map and icon map is set for map, and is host like element, we use default icon map icon
        if ($map['iconmapid'] && $selement['use_iconmap'] && ($selement['elementtype'] == SYSMAP_ELEMENT_TYPE_HOST || $selement['elementtype'] == SYSMAP_ELEMENT_SUBTYPE_HOST_GROUP && $selement['elementsubtype'] == SYSMAP_ELEMENT_SUBTYPE_HOST_GROUP_ELEMENTS)) {
            $iconid = $defaultAutoIconId;
        } else {
            $iconid = $selement['iconid_off'];
        }
        $mapInfo[$selement['selementid']] = array('iconid' => $iconid, 'icon_type' => SYSMAP_ELEMENT_ICON_OFF);
        $mapInfo[$selement['selementid']]['name'] = $selement['elementtype'] == SYSMAP_ELEMENT_TYPE_IMAGE ? _('Image') : $selement['elementName'];
    }
    $allLinks = true;
} else {
    // we need selements to be a hash for further processing
    $map['selements'] = zbx_toHash($map['selements'], 'selementid');
    add_triggerExpressions($map['selements']);
    $areas = populateFromMapAreas($map);
    $mapInfo = getSelementsInfo($map, array('severity_min' => get_request('severity_min')));
    processAreasCoordinates($map, $areas, $mapInfo);
    $allLinks = false;
}
/*
 * Draw map
 */
drawMapConnectors($im, $map, $mapInfo, $allLinks);
if (!isset($_REQUEST['noselements'])) {
    drawMapHighligts($im, $map, $mapInfo);
    drawMapSelements($im, $map, $mapInfo);
}
$expandMacros = get_request('expand_macros', true);
drawMapLabels($im, $map, $mapInfo, $expandMacros);