/** * Update Element to Sysmap * * @param array $elements[0,...]['selementid'] * @param array $elements[0,...]['sysmapid'] * @param array $elements[0,...]['elementid'] * @param array $elements[0,...]['elementtype'] * @param array $elements[0,...]['label'] * @param array $elements[0,...]['x'] * @param array $elements[0,...]['y'] * @param array $elements[0,...]['iconid_off'] * @param array $elements[0,...]['iconid_unknown'] * @param array $elements[0,...]['iconid_on'] * @param array $elements[0,...]['iconid_disabled'] * @param array $elements[0,...]['url'] * @param array $elements[0,...]['label_location'] */ public static function updateElements($selements) { $result = true; $selements = zbx_toArray($selements); $selementids = array(); $sysmapids = zbx_objectValues($selements, 'sysmapid'); try { self::BeginTransaction(__METHOD__); $options = array('sysmapids' => $sysmapids, 'editable' => 1, 'preservekeys' => 1); $upd_maps = self::get($options); foreach ($selements as $snumm => $selement) { if (!isset($upd_maps[$selement['sysmapid']])) { self::exception(ZBX_API_ERROR_PARAMETERS, S_NO_PERMISSIONS); } } foreach ($selements as $snumm => $selement) { $selement_db_fields = array('sysmapid' => null, 'selementid' => null, 'elementid' => 0, 'elementtype' => 5, 'label' => '', 'label_location' => 0, 'iconid_off' => null, 'iconid_on' => 0, 'iconid_unknown' => 0, 'iconid_maintenance' => 0, 'iconid_disabled' => 0, 'x' => 50, 'y' => 50, 'url' => ''); if (!check_db_fields($selement_db_fields, $selement)) { $result = false; $errors[] = array('errno' => ZBX_API_ERROR_PARAMETERS, 'error' => 'Wrong fields for element'); break; } if (check_circle_elements_link($selement['sysmapid'], $selement['elementid'], $selement['elementtype'])) { throw new Exception(S_CIRCULAR_LINK_CANNOT_BE_CREATED . ' "' . $selement['label'] . '"'); return false; } $result = DBexecute('UPDATE sysmaps_elements ' . 'SET elementid=' . $selement['elementid'] . ', ' . ' elementtype=' . $selement['elementtype'] . ', ' . ' label=' . zbx_dbstr($selement['label']) . ', ' . ' label_location=' . $selement['label_location'] . ', ' . ' x=' . $selement['x'] . ', ' . ' y=' . $selement['y'] . ', ' . ' iconid_off=' . $selement['iconid_off'] . ', ' . ' iconid_on=' . $selement['iconid_on'] . ', ' . ' iconid_unknown=' . $selement['iconid_unknown'] . ', ' . ' iconid_maintenance=' . $selement['iconid_maintenance'] . ', ' . ' iconid_disabled=' . $selement['iconid_disabled'] . ', ' . ' url=' . zbx_dbstr($selement['url']) . ' WHERE selementid=' . $selement['selementid']); if (!$result) { self::exception(ZBX_API_ERROR_INTERNAL, 'Map update elements failed'); } $selementids[] = $selement['selementid']; } $result = self::EndTransaction($result, __METHOD__); return $selementids; } catch (APIException $e) { self::EndTransaction(false, __METHOD__); $errors = $e->getErrors(); $error = reset($errors); self::setError(__METHOD__, ZBX_API_ERROR_PARAMETERS, $error); return false; } }
function check_circle_elements_link($sysmapid, $elementid, $elementtype) { if ($elementtype != SYSMAP_ELEMENT_TYPE_MAP) { return false; } if (bccomp($sysmapid, $elementid) == 0) { return TRUE; } $db_elements = DBselect('SELECT elementid, elementtype ' . ' FROM sysmaps_elements ' . ' WHERE sysmapid=' . $elementid); while ($element = DBfetch($db_elements)) { if (check_circle_elements_link($sysmapid, $element["elementid"], $element["elementtype"])) { return TRUE; } } return false; }
function update_sysmap_element($selementid, $sysmapid, $elementid, $elementtype, $label, $x, $y, $iconid_off, $iconid_unknown, $iconid_on, $iconid_disabled, $url, $label_location) { if ($label_location < 0) { $label_location = 'null'; } if (check_circle_elements_link($sysmapid, $elementid, $elementtype)) { error("Circle link can't be created"); return FALSE; } return DBexecute('UPDATE sysmaps_elements ' . "SET elementid={$elementid},elementtype={$elementtype}," . "label=" . zbx_dbstr($label) . ",x={$x},y={$y},iconid_off={$iconid_off}," . "url=" . zbx_dbstr($url) . ",iconid_on={$iconid_on}," . "label_location={$label_location},iconid_unknown={$iconid_unknown}," . "iconid_disabled={$iconid_disabled}" . " WHERE selementid={$selementid}"); }