function prepareScreenExport(&$exportScreens) { $screens = array(); $sysmaps = array(); $hostgroups = array(); $hosts = array(); $graphs = array(); $items = array(); foreach ($exportScreens as $snum => $screen) { $screenItems = separateScreenElements($screen); $screens = array_merge($screens, zbx_objectValues($screenItems['screens'], 'resourceid')); $sysmaps = array_merge($sysmaps, zbx_objectValues($screenItems['sysmaps'], 'resourceid')); $hostgroups = array_merge($hostgroups, zbx_objectValues($screenItems['hostgroups'], 'resourceid')); $hosts = array_merge($hosts, zbx_objectValues($screenItems['hosts'], 'resourceid')); $graphs = array_merge($graphs, zbx_objectValues($screenItems['graphs'], 'resourceid')); $items = array_merge($items, zbx_objectValues($screenItems['items'], 'resourceid')); } $screens = screenIdents($screens); $sysmaps = sysmapIdents($sysmaps); $hostgroups = hostgroupIdents($hostgroups); $hosts = hostIdents($hosts); $graphs = graphIdents($graphs); $items = itemIdents($items); try { foreach ($exportScreens as $snum => &$screen) { unset($screen['screenid']); foreach ($screen['screenitems'] as $snum => &$screenItem) { unset($screenItem['screenid']); unset($screenItem['screenitemid']); if ($screenItem['resourceid'] == 0) { continue; } switch ($screenItem['resourcetype']) { case SCREEN_RESOURCE_HOSTS_INFO: case SCREEN_RESOURCE_TRIGGERS_INFO: case SCREEN_RESOURCE_TRIGGERS_OVERVIEW: case SCREEN_RESOURCE_DATA_OVERVIEW: case SCREEN_RESOURCE_HOSTGROUP_TRIGGERS: $screenItem['resourceid'] = $hostgroups[$screenItem['resourceid']]; break; case SCREEN_RESOURCE_HOST_TRIGGERS: $screenItem['resourceid'] = $hosts[$screenItem['resourceid']]; break; case SCREEN_RESOURCE_GRAPH: $screenItem['resourceid'] = $graphs[$screenItem['resourceid']]; break; case SCREEN_RESOURCE_SIMPLE_GRAPH: case SCREEN_RESOURCE_PLAIN_TEXT: $screenItem['resourceid'] = $items[$screenItem['resourceid']]; break; case SCREEN_RESOURCE_MAP: $screenItem['resourceid'] = $sysmaps[$screenItem['resourceid']]; break; case SCREEN_RESOURCE_SCREEN: $screenItem['resourceid'] = $screens[$screenItem['resourceid']]; break; } } unset($screenItem); } unset($screen); } catch (Exception $e) { throw new exception($e->getMessage()); } }
function prepareMapExport(&$exportMaps) { $sysmaps = array(); $hostgroups = array(); $hosts = array(); $triggers = array(); $images = array(); foreach ($exportMaps as $mnum => $sysmap) { $selements = separateMapElements($sysmap); $sysmaps += zbx_objectValues($selements['sysmaps'], 'elementid'); $hostgroups += zbx_objectValues($selements['hostgroups'], 'elementid'); $hosts += zbx_objectValues($selements['hosts'], 'elementid'); $triggers += zbx_objectValues($selements['triggers'], 'elementid'); $images += zbx_objectValues($selements['images'], 'elementid'); foreach ($sysmap['selements'] as $snum => $selement) { if ($selement['iconid_off'] > 0) { $images[$selement['iconid_off']] = $selement['iconid_off']; } if ($selement['iconid_on'] > 0) { $images[$selement['iconid_on']] = $selement['iconid_on']; } if ($selement['iconid_unknown'] > 0) { $images[$selement['iconid_unknown']] = $selement['iconid_unknown']; } if ($selement['iconid_disabled'] > 0) { $images[$selement['iconid_disabled']] = $selement['iconid_disabled']; } if ($selement['iconid_maintenance'] > 0) { $images[$selement['iconid_maintenance']] = $selement['iconid_maintenance']; } } $images[$sysmap['backgroundid']] = $sysmap['backgroundid']; foreach ($sysmap['links'] as $lnum => $link) { foreach ($link['linktriggers'] as $ltnum => $linktrigger) { array_push($triggers, $linktrigger['triggerid']); } } } $sysmaps = sysmapIdents($sysmaps); $hostgroups = hostgroupIdents($hostgroups); $hosts = hostIdents($hosts); $triggers = triggerIdents($triggers); $images = imageIdents($images); try { foreach ($exportMaps as $mnum => &$sysmap) { unset($sysmap['sysmapid']); $sysmap['backgroundid'] = $sysmap['backgroundid'] > 0 ? $images[$sysmap['backgroundid']] : ''; foreach ($sysmap['selements'] as $snum => &$selement) { unset($selement['sysmapid']); switch ($selement['elementtype']) { case SYSMAP_ELEMENT_TYPE_MAP: $selement['elementid'] = $sysmaps[$selement['elementid']]; break; case SYSMAP_ELEMENT_TYPE_HOST_GROUP: $selement['elementid'] = $hostgroups[$selement['elementid']]; break; case SYSMAP_ELEMENT_TYPE_HOST: $selement['elementid'] = $hosts[$selement['elementid']]; break; case SYSMAP_ELEMENT_TYPE_TRIGGER: $selement['elementid'] = $triggers[$selement['elementid']]; break; case SYSMAP_ELEMENT_TYPE_IMAGE: default: $selement['elementid'] = $images[$selement['elementid']]; } $selement['iconid_off'] = $selement['iconid_off'] > 0 ? $images[$selement['iconid_off']] : ''; $selement['iconid_on'] = $selement['iconid_on'] > 0 ? $images[$selement['iconid_on']] : ''; $selement['iconid_unknown'] = $selement['iconid_unknown'] > 0 ? $images[$selement['iconid_unknown']] : ''; $selement['iconid_disabled'] = $selement['iconid_disabled'] > 0 ? $images[$selement['iconid_disabled']] : ''; $selement['iconid_maintenance'] = $selement['iconid_maintenance'] > 0 ? $images[$selement['iconid_maintenance']] : ''; } unset($selement); foreach ($sysmap['links'] as $lnum => &$link) { unset($link['sysmapid']); unset($link['linkid']); foreach ($link['linktriggers'] as $ltnum => &$linktrigger) { unset($linktrigger['linktriggerid']); unset($linktrigger['linkid']); $linktrigger['triggerid'] = $triggers[$linktrigger['triggerid']]; } } unset($linktrigger); unset($link); } unset($sysmap); } catch (Exception $e) { throw new Exception($e->getMessage()); } //SDII($exportMaps); }