/**
  * 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;
     }
 }
Beispiel #2
0
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;
}
Beispiel #3
0
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}");
}