/** * 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); } }
$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);