$_REQUEST['go'] = get_request('go', 'none'); $frmForm = new CForm(); $frmForm->setMethod('get'); $frmForm->addItem(new CButton('form', S_CREATE_SCRIPT, "javascript: redirect('scripts.php?form=1');")); show_table_header(S_SCRIPTS_CONFIGURATION, $frmForm); echo SBR; if (isset($_REQUEST['action'])) { if (isset($_REQUEST['save'])) { $cond = isset($_REQUEST['scriptid']) ? ' AND scriptid<>' . $_REQUEST['scriptid'] : ''; $scripts = DBfetch(DBselect('SELECT count(scriptid) as cnt FROM scripts WHERE name=' . zbx_dbstr($_REQUEST['name']) . $cond . ' and ' . DBin_node('scriptid', get_current_nodeid(false)), 1)); if ($scripts && $scripts['cnt'] > 0) { error(S_SCRIPT . SPACE . '[' . htmlspecialchars($_REQUEST['name']) . ']' . SPACE . S_ALREADY_EXISTS_SMALL); show_messages(null, S_ERROR, S_CANNOT_ADD_SCRIPT); } else { if (isset($_REQUEST['scriptid'])) { $result = update_script($_REQUEST['scriptid'], $_REQUEST['name'], $_REQUEST['command'], $_REQUEST['usrgrpid'], $_REQUEST['groupid'], $_REQUEST['access']); show_messages($result, S_SCRIPT_UPDATED, S_CANNOT_UPDATE_SCRIPT); $scriptid = $_REQUEST['scriptid']; $audit_acrion = AUDIT_ACTION_UPDATE; } else { $result = add_script($_REQUEST['name'], $_REQUEST['command'], $_REQUEST['usrgrpid'], $_REQUEST['groupid'], $_REQUEST['access']); show_messages($result, S_SCRIPT_ADDED, S_CANNOT_ADD_SCRIPT); $scriptid = $result; $audit_acrion = AUDIT_ACTION_ADD; } add_audit_if($result, $audit_acrion, AUDIT_RESOURCE_SCRIPT, ' Name [' . $_REQUEST['name'] . '] id [' . $scriptid . ']'); if ($result) { unset($_REQUEST['action']); unset($_REQUEST['form']); unset($_REQUEST['scriptid']); }
/** * Update Scripts * * @param _array $scripts * @param array $script['name'] * @param array $script['hostid'] * @return boolean */ public static function update($scripts) { global $USER_DETAILS; $scripts = zbx_toArray($scripts); $scriptids = zbx_objectValues($scripts, 'scriptid'); try { self::BeginTransaction(__METHOD__); if (USER_TYPE_SUPER_ADMIN != $USER_DETAILS['type']) { self::exception(ZBX_API_ERROR_PERMISSIONS, S_NO_PERMISSION); } $options = array('scriptids' => $scriptids, 'editable' => 1, 'output' => API_OUTPUT_EXTEND, 'preservekeys' => 1); $upd_scripts = self::get($options); foreach ($scripts as $snum => $script) { if (!isset($upd_scripts[$script['scriptid']])) { self::exception(ZBX_API_ERROR_PERMISSIONS, S_NO_PERMISSION); } } foreach ($scripts as $num => $script) { $script_db_fields = $upd_scripts[$script['scriptid']]; if (!check_db_fields($script_db_fields, $script)) { self::exception(ZBX_API_ERROR_PARAMETERS, 'Wrong fields for script'); } $result = update_script($script['scriptid'], $script['name'], $script['command'], $script['usrgrpid'], $script['groupid'], $script['host_access']); if (!$result) { self::exception(ZBX_API_ERROR_PARAMETERS, 'cannot update script'); } } self::EndTransaction(true, __METHOD__); return array('scriptids' => $scriptids); } catch (APIException $e) { self::EndTransaction(false, __METHOD__); $error = $e->getErrors(); $error = reset($error); self::setError(__METHOD__, $e->getCode(), $error); return false; } }