*/ $json = new CJSON(); if (isset($_REQUEST['selements']) || isset($_REQUEST['noselements'])) { $map['selements'] = get_request('selements', '[]'); $map['selements'] = $json->decode($map['selements'], true); } else { add_elementNames($map['selements']); } if (isset($_REQUEST['links']) || isset($_REQUEST['nolinks'])) { $map['links'] = get_request('links', '[]'); $map['links'] = $json->decode($map['links'], true); } if (get_request('nocalculations', false)) { foreach ($map['selements'] as $selement) { if ($selement['elementtype'] != SYSMAP_ELEMENT_TYPE_IMAGE) { add_elementNames($map['selements']); break; } } // get default iconmap id to use for elements that use icon map if ($map['iconmapid']) { $iconMaps = API::IconMap()->get(array('iconmapids' => $map['iconmapid'], 'output' => array('default_iconid'), 'preservekeys' => true)); $iconMap = reset($iconMaps); $defaultAutoIconId = $iconMap['default_iconid']; } $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 {
$saveButton = new CSubmit('save', _('Save')); $saveButton->setAttribute('id', 'sysmap_save'); $menuRow = array(_s('Map "%s"', $sysmap['name']), SPACE . SPACE, _('Icon'), SPACE, $el_add, SPACE, $el_rmv, SPACE . SPACE, _('Link'), SPACE, $cn_add, SPACE, $cn_rmv, SPACE . SPACE, _('Expand macros') . ' [ ', $expandMacros, ' ]', SPACE . SPACE, _('Grid') . SPACE . '[', $gridShow, '|', $gridAutoAlign, ']', SPACE, $gridForm, SPACE . '|' . SPACE, $saveButton); $elcn_tab = new CTable(null, 'textwhite'); $elcn_tab->addRow($menuRow); show_table_header($elcn_tab); $sysmap_img = new CImg('images/general/tree/zero.gif', 'Sysmap'); $sysmap_img->setAttribute('id', 'sysmap_img', $sysmap['width'], $sysmap['height']); $table = new CTable(); $table->addRow($sysmap_img); $table->Show(); $container = new CDiv(); $container->setAttribute('id', 'sysmap_cnt'); $container->Show(); insert_show_color_picker_javascript(); add_elementNames($sysmap['selements']); foreach ($sysmap['links'] as &$link) { foreach ($link['linktriggers'] as $lnum => $linktrigger) { $dbTrigger = API::Trigger()->get(array('triggerids' => $linktrigger['triggerid'], 'output' => array('description', 'expression'), 'selectHosts' => API_OUTPUT_EXTEND, 'preservekeys' => true, 'expandDescription' => true)); $dbTrigger = reset($dbTrigger); $host = reset($dbTrigger['hosts']); $link['linktriggers'][$lnum]['desc_exp'] = $host['name'] . ':' . $dbTrigger['description']; } order_result($link['linktriggers'], 'desc_exp'); } unset($link); if ($sysmap['iconmapid']) { $iconMaps = API::IconMap()->get(array('iconmapids' => $sysmap['iconmapid'], 'output' => array('default_iconid'), 'preservekeys' => true)); $iconMap = reset($iconMaps); $defaultAutoIconId = $iconMap['default_iconid']; } else {
* Permissions */ if (isset($_REQUEST['sysmapid'])) { $sysmap = API::Map()->get(array('sysmapids' => $_REQUEST['sysmapid'], 'editable' => true, 'output' => API_OUTPUT_EXTEND, 'selectSelements' => API_OUTPUT_EXTEND, 'selectLinks' => API_OUTPUT_EXTEND, 'preservekeys' => true)); if (empty($sysmap)) { access_deny(); } else { $sysmap = reset($sysmap); } } /* * Display */ $data = array('sysmap' => $sysmap, 'iconList' => array(), 'defaultAutoIconId' => null, 'defaultIconId' => null, 'defaultIconName' => null); // get selements add_elementNames($data['sysmap']['selements']); $data['sysmap']['selements'] = zbx_toHash($data['sysmap']['selements'], 'selementid'); $data['sysmap']['links'] = zbx_toHash($data['sysmap']['links'], 'linkid'); // get links foreach ($data['sysmap']['links'] as &$link) { foreach ($link['linktriggers'] as $lnum => $linkTrigger) { $dbTrigger = API::Trigger()->get(array('triggerids' => $linkTrigger['triggerid'], 'output' => array('description', 'expression'), 'selectHosts' => API_OUTPUT_EXTEND, 'preservekeys' => true, 'expandDescription' => true)); $dbTrigger = reset($dbTrigger); $host = reset($dbTrigger['hosts']); $link['linktriggers'][$lnum]['desc_exp'] = $host['name'] . NAME_DELIMITER . $dbTrigger['description']; } order_result($link['linktriggers'], 'desc_exp'); } unset($link); // get iconmapping if ($data['sysmap']['iconmapid']) {
check_fields($fields); // ACTION ///////////////////////////////////////////////////////////////////////////// if (isset($_REQUEST['favobj'])) { $json = new CJSON(); if ('sysmap' == $_REQUEST['favobj']) { $sysmapid = get_request('sysmapid', 0); $cmapid = get_request('favid', 0); switch ($_REQUEST['action']) { case 'get': $action = ''; $options = array('sysmapids' => $sysmapid, 'editable' => true, 'output' => API_OUTPUT_EXTEND, 'select_selements' => API_OUTPUT_EXTEND, 'select_links' => API_OUTPUT_EXTEND); $sysmaps = CMap::get($options); $db_map = reset($sysmaps); expandMapLabels($db_map); $map_info = getSelementsInfo($db_map); add_elementNames($db_map['selements']); //SDII($db_map); $action .= 'ZBX_SYSMAPS[' . $cmapid . '].map.mselement["label_location"]=' . $db_map['label_location'] . '; ' . "\n"; foreach ($db_map['selements'] as $snum => $selement) { $info = $map_info[$selement['selementid']]; // $element['image'] = get_base64_icon($element); $selement['image'] = get_selement_iconid($selement, $info); $action .= 'ZBX_SYSMAPS[' . $cmapid . '].map.add_selement(' . zbx_jsvalue($selement) . '); ' . "\n"; } foreach ($db_map['links'] as $enum => $link) { foreach ($link as $key => $value) { if (is_int($key)) { unset($link[$key]); } } $link['linktriggers'] = zbx_toHash($link['linktriggers'], 'linktriggerid');