Beispiel #1
0
$_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;
     }
 }