diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-04-28 15:25:52 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-04-28 15:25:52 +0000 |
| commit | 4c6e81cdcb98236655c4612143a2fb74fa28b585 (patch) | |
| tree | 9c17dbd4c2e9a10ddcb4923fc40fca9110c6feea /frontends/php/scripts.php | |
| parent | 787911115963265dd4a9c8cae9178c4868c57e55 (diff) | |
| download | zabbix-4c6e81cdcb98236655c4612143a2fb74fa28b585.tar.gz zabbix-4c6e81cdcb98236655c4612143a2fb74fa28b585.tar.xz zabbix-4c6e81cdcb98236655c4612143a2fb74fa28b585.zip | |
- [DEV-154] added more flexibility to scripts (Artem)
- [DEV-156] added the link from Status of Triggers to Latest data when clicking on a host (Artem)
- [DEV-137] small improvements to GUI (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5664 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/scripts.php')
| -rw-r--r-- | frontends/php/scripts.php | 91 |
1 files changed, 76 insertions, 15 deletions
diff --git a/frontends/php/scripts.php b/frontends/php/scripts.php index 4dececf4..95875cf5 100644 --- a/frontends/php/scripts.php +++ b/frontends/php/scripts.php @@ -22,6 +22,7 @@ include_once "include/config.inc.php"; require_once "include/hosts.inc.php"; require_once "include/scripts.inc.php"; + require_once "include/users.inc.php"; $page['title'] = "S_SCRIPTS"; $page['file'] = 'scripts.php'; @@ -45,7 +46,9 @@ include_once "include/page_header.php"; // form 'name'=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'), 'command'=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'), - 'access'=> array(T_ZBX_INT, O_OPT, NULL, IN('0,1'), 'isset({save})'), + 'access'=> array(T_ZBX_INT, O_OPT, NULL, IN('0,1,2,3'), 'isset({save})'), + 'groupid'=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, 'isset({save})'), + 'usrgrpid'=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, 'isset({save})'), 'form'=> array(T_ZBX_STR, O_OPT, NULL, NULL, null), 'form_refresh'=> array(T_ZBX_INT, O_OPT, NULL, NULL, null), @@ -67,14 +70,14 @@ if(isset($_REQUEST['action'])){ else{ if(isset($_REQUEST['scriptid'])){ - $result = update_script($_REQUEST['scriptid'],$_REQUEST['name'],$_REQUEST['command'],$_REQUEST['access']); + $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['access']); + $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; @@ -117,6 +120,7 @@ if(isset($_REQUEST['action'])){ } if(isset($_REQUEST['form'])){ + $available_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY); show_table_header(S_SCRIPTS); echo SBR; @@ -126,16 +130,25 @@ if(isset($_REQUEST['form'])){ if(isset($_REQUEST['scriptid'])) $frmScr->AddVar('scriptid',$_REQUEST['scriptid']); - $name = get_request('name',''); - $command = get_request('command',''); - $access = get_request('access', SCRIPT_HOST_ACCESS_READ); - + if(!isset($_REQUEST['scriptid']) || isset($_REQUEST['form_refresh'])){ + $name = get_request('name',''); + $command = get_request('command',''); + + $usrgrpid = get_request('usrgrpid', 0); + $groupid = get_request('groupid', 0); + + $access = get_request('access', PERM_READ_ONLY); + } if(isset($_REQUEST['scriptid']) && !isset($_REQUEST['form_refresh'])){ $frmScr->AddVar('form_refresh',get_request('form_refresh',1)); if($script = get_script_by_scriptid($_REQUEST['scriptid'])){ $name = $script['name']; $command = $script['command']; + + $usrgrpid = $script['usrgrpid']; + $groupid = $script['groupid']; + $access = $script['host_access']; } } @@ -143,9 +156,38 @@ if(isset($_REQUEST['form'])){ $frmScr->AddRow(S_NAME,new CTextBox('name',$name,80)); $frmScr->AddRow(S_COMMAND,new CTextBox('command',$command,80)); - $select_acc = new CCombobox('access'); - $select_acc->AddItem(SCRIPT_HOST_ACCESS_READ,S_READ,(($access == SCRIPT_HOST_ACCESS_READ)?'yes':'no')); - $select_acc->AddItem(SCRIPT_HOST_ACCESS_WRITE,S_WRITE,(($access == SCRIPT_HOST_ACCESS_WRITE)?'yes':'no')); + $usr_groups = new CCombobox('usrgrpid',$usrgrpid); + $usr_groups->AddItem(0,S_ALL); + + $sql = 'SELECT DISTINCT ug.name, ug.usrgrpid '. + ' FROM usrgrp ug '. + ' ORDER BY ug.name'; + + $usrgrp_result = DBselect($sql); + while($usr_group=DBfetch($usrgrp_result)){ + $usr_groups->AddItem($usr_group['usrgrpid'],$usr_group['name']); + } + + $frmScr->AddRow(S_USER_GROUPS,$usr_groups); + + $host_groups = new CCombobox('groupid',$groupid); + $host_groups->AddItem(0,S_ALL); + + $sql = 'SELECT DISTINCT g.name, g.groupid '. + ' FROM groups g '. + ' WHERE g.groupid IN ('.$available_groups.') '. + ' ORDER BY g.name'; + + $grp_result = DBselect($sql); + while($group=DBfetch($grp_result)){ + $host_groups->AddItem($group['groupid'],$group['name']); + } + + $frmScr->AddRow(S_HOST_GROUPS,$host_groups); + + $select_acc = new CCombobox('access',$access); + $select_acc->AddItem(PERM_READ_ONLY,S_READ); + $select_acc->AddItem(PERM_READ_WRITE,S_WRITE); $frmScr->AddRow(S_REQUIRED_HOST.SPACE.S_PERMISSIONS_SMALL,$select_acc); @@ -165,17 +207,34 @@ else { $table=new CTableInfo(S_NO_SCRIPTS_DEFINED); $table->setHeader(array( array(new CCheckBox('all_scripts',null,"CheckAll('".$form->GetName()."','all_scripts');"),S_NAME), - S_COMMAND, S_HOST_ACCESS + S_COMMAND, + S_USER_GROUP, + S_HOST_GROUP, + S_HOST_ACCESS ) ); - $sql = 'SELECT * FROM scripts '. - ' WHERE '.DBin_node('scriptid'). - ' ORDER BY scriptid ASC'; + $sql = 'SELECT s.* '. + ' FROM scripts s '. + ' WHERE '.DBin_node('s.scriptid'). + ' ORDER BY s.scriptid ASC'; $scripts=DBselect($sql); while($script=DBfetch($scripts)){ + + $user_group_name = S_ALL; + if($script['usrgrpid'] > 0){ + $user_group = get_group_by_usrgrpid($script['usrgrpid']); + $user_group_name = $user_group['name']; + } + + $host_group_name = S_ALL; + if($script['groupid'] > 0){ + $group = get_hostgroup_by_groupid($script['groupid']); + $host_group_name = $group['name']; + } + $table->addRow(array( array( @@ -183,7 +242,9 @@ else { new CLink($script['name'],'scripts.php?form=1'.'&scriptid='.$script['scriptid'].'#form','action') ), htmlspecialchars($script['command']), - (($script['host_access'] == SCRIPT_HOST_ACCESS_READ)?S_READ:S_WRITE) + $user_group_name, + $host_group_name, + ((PERM_READ_WRITE == $script['host_access'])?S_WRITE:S_READ) )); } $qbutton = new CButtonQMessage('delete',S_DELETE_SELECTED,S_DELETE_SELECTED_SCRIPTS_Q,'1'); |
