summaryrefslogtreecommitdiffstats
path: root/frontends/php/include/forms.inc.php
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-23 07:34:27 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-23 07:34:27 +0000
commit28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89 (patch)
tree8281ccd48964ee0dd11c5ea689091fa3cef706fb /frontends/php/include/forms.inc.php
parent495799b2aa61aab23d74d7faa110a0cd09d59bf0 (diff)
downloadzabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.tar.gz
zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.tar.xz
zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.zip
- developed group permission system (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3371 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/forms.inc.php')
-rw-r--r--frontends/php/include/forms.inc.php943
1 files changed, 625 insertions, 318 deletions
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php
index a8b1044c..e7831b22 100644
--- a/frontends/php/include/forms.inc.php
+++ b/frontends/php/include/forms.inc.php
@@ -23,14 +23,20 @@
include_once "include/defines.inc.php";
include_once "include/classes/graph.inc.php";
+ include_once "include/users.inc.php";
include_once "include/db.inc.php";
+ function insert_node_form()
+ {
+ SDI('TODO'); /* TODO node form realization */
+ }
+
function insert_new_message_form()
{
global $USER_DETAILS;
global $_REQUEST;
- $db_acks = get_acknowledges_by_alarmid($_REQUEST["alarmid"]);
+ $db_acks = get_acknowledges_by_eventid($_REQUEST["eventid"]);
if(!DBfetch($db_acks))
{
$title = S_ACKNOWLEDGE_ALARM_BY;
@@ -44,15 +50,18 @@
$frmMsg= new CFormTable($title." \"".$USER_DETAILS["alias"]."\"");
$frmMsg->SetHelp("manual.php");
- $frmMsg->AddVar("alarmid",get_request("alarmid",0));
+ $frmMsg->AddVar("eventid",get_request("eventid",0));
$frmMsg->AddRow(S_MESSAGE, new CTextArea("message","",80,6));
$frmMsg->AddItemToBottomRow(new CButton("save",$btn_txt));
+ $frmMsg->AddItemToBottomRow(new CButton("cancel",S_CANCEL));
- $frmMsg->Show();
+ $frmMsg->Show(false);
SetFocus($frmMsg->GetName(),"message");
+
+ $frmMsg->Destroy();
}
# Insert form for User
@@ -61,6 +70,9 @@
$frm_title = S_USER;
if(isset($userid))
{
+ global $USER_DETAILS;
+ if($userid == $USER_DETAILS['userid']) $profile = 1;
+
$user=get_user_by_userid($userid);
$frm_title = S_USER." \"".$user["alias"]."\"";
}
@@ -70,41 +82,86 @@
$alias = $user["alias"];
$name = $user["name"];
$surname = $user["surname"];
- $password = "";
+ $password = null;
+ $password1 = null;
+ $password2 = null;
$url = $user["url"];
$autologout = $user["autologout"];
$lang = $user["lang"];
$refresh = $user["refresh"];
+ $user_type = $user["type"];
+
$user_groups = array();
+ $user_medias = array();
+
+ $db_user_groups = DBselect('select g.* from usrgrp g, users_groups ug'.
+ ' where ug.usrgrpid=g.usrgrpid and ug.userid='.$userid);
- $db_user_groups = DBselect('select g.* from usrgrp g, users_groups ug where ug.usrgrpid=g.usrgrpid and ug.userid='.$userid);
while($db_group = DBfetch($db_user_groups))
{
$user_groups[$db_group['usrgrpid']] = $db_group['name'];
}
+
+ $db_medias = DBselect('select m.* from media m where m.userid='.$userid);
+ while($db_media = DBfetch($db_medias))
+ {
+ array_push($user_medias,
+ array( 'mediatypeid' => $db_media['mediatypeid'],
+ 'period' => $db_media['period'],
+ 'sendto' => $db_media['sendto'],
+ 'severity' => $db_media['severity'],
+ 'active' => $db_media['active']
+ )
+ );
+ }
+
+ $new_group_id = 0;
+ $new_group_name = '';
}
else
{
$alias = get_request("alias","");
$name = get_request("name","");
$surname = get_request("surname","");
- $password = "";
+ $password = null;
+ $password1 = get_request("password1", null);
+ $password2 = get_request("password2", null);
$url = get_request("url","");
$autologout = get_request("autologout","900");
$lang = get_request("lang","en_gb");
$refresh = get_request("refresh","30");
+ $user_type = get_request("user_type",USER_TYPE_ZABBIX_USER);;
$user_groups = get_request("user_groups",array());
+ $change_password = get_request("change_password", null);
+
+ $user_medias = get_request("user_medias", array());
+
+ $new_group_id = get_request('new_group_id', 0);
+ $new_group_name = get_request('new_group_name', '');
+ }
+
+ $perm_details = get_request('perm_details',0);
+
+ $media_types = array();
+ $media_type_ids = array();
+ foreach($user_medias as $one_media) $media_type_ids[$one_media['mediatypeid']] = 1;
+
+ if(count($media_type_ids) > 0)
+ {
+ $db_media_types = DBselect('select mt.mediatypeid,mt.description from media_type mt'.
+ ' where mt.mediatypeid in ('.implode(',',array_keys($media_type_ids)).')');
+
+ while($db_media_type = DBfetch($db_media_types))
+ {
+ $media_types[$db_media_type['mediatypeid']] = $db_media_type['description'];
+ }
}
$frmUser = new CFormTable($frm_title);
+ $frmUser->SetName('user_form');
$frmUser->SetHelp("web.users.php");
$frmUser->AddVar("config",get_request("config",0));
- if($profile==0)
- $frmUser->SetAction("users.php");
- else
- $frmUser->SetAction("profile.php");
-
if(isset($userid)) $frmUser->AddVar("userid",$userid);
if($profile==0)
@@ -114,15 +171,92 @@
$frmUser->AddRow(S_SURNAME, new CTextBox("surname",$surname,20));
}
- $frmUser->AddRow(S_PASSWORD, new CPassBox("password1",$password,20));
- $frmUser->AddRow(S_PASSWORD_ONCE_AGAIN, new CPassBox("password2",$password,20));
+ if(!isset($userid) || isset($change_password))
+ {
+ $frmUser->AddRow(S_PASSWORD, new CPassBox("password1",$password1,20));
+ $frmUser->AddRow(S_PASSWORD_ONCE_AGAIN, new CPassBox("password2",$password2,20));
+ if(isset($change_password))
+ $frmUser->AddVar('change_password', $change_password);
+ }
+ else
+ {
+ $frmUser->AddRow(S_PASSWORD, new CButton("change_password", S_CHANGE_PASSWORD));
+ }
- foreach($user_groups as $groupid => $group_name)
+ if($profile==0)
{
- $frmUser->AddRow(S_GROUPS, $group_name);
+ global $USER_DETAILS;
+
+ $frmUser->AddVar('user_groups',$user_groups);
+
+ if(isset($userid) && ($USER_DETAILS['userid'] == $userid))
+ {
+ $frmUser->AddVar('user_type',$user_type);
+ }
+ else
+ {
+ $cmbUserType = new CComboBox('user_type', $user_type, $perm_details ? 'submit();' : null);
+ $cmbUserType->AddItem(USER_TYPE_ZABBIX_USER, user_type2str(USER_TYPE_ZABBIX_USER));
+ $cmbUserType->AddItem(USER_TYPE_ZABBIX_ADMIN, user_type2str(USER_TYPE_ZABBIX_ADMIN));
+ $cmbUserType->AddItem(USER_TYPE_SUPPER_ADMIN, user_type2str(USER_TYPE_SUPPER_ADMIN));
+ $frmUser->AddRow(S_USER_TYPE, $cmbUserType);
+ }
+
+ $lstGroups = new CListBox('user_groups_to_del[]');
+ $lstGroups->options['style'] = 'width: 270px';
+
+ foreach($user_groups as $groupid => $group_name)
+ {
+ $lstGroups->AddItem($groupid, $group_name);
+ }
+
+ $frmUser->AddRow(S_GROUPS,
+ array(
+ $lstGroups,
+ BR,
+ new CButton('add_group',S_ADD,
+ "return PopUp('popup_usrgrp.php?dstfrm=".$frmUser->GetName().
+ "&list_name=user_groups_to_del[]&var_name=user_groups','new_group',".
+ "'width=450,height=450,resizable=1,scrollbars=1');"),
+ SPACE,
+ (count($user_groups) > 0) ? new CButton('del_user_group',S_DELETE_SELECTED) : null
+ ));
+
+ $frmUser->AddVar('user_medias', $user_medias);
+
+ $media_table = new CTable(S_NO_MEDIA_DEFINED);
+ foreach($user_medias as $id => $one_media)
+ {
+ if(!isset($one_media["active"]) || $one_media["active"]==0)
+ {
+ $status = new CLink(S_ENABLED,'#','enabled');
+ $status->OnClick("return create_var('".$frmUser->GetName()."','disable_media',".$id.", true);");
+ }
+ else
+ {
+ $status = new CLink(S_DISABLED,'#','disabled');
+ $status->OnClick("return create_var('".$frmUser->GetName()."','enable_media',".$id.", true);");
+ }
+
+ $media_table->AddRow(array(
+ new CCheckBox('user_medias_to_del[]',null,null,$id),
+ new CSpan($media_types[$one_media['mediatypeid']], 'nowrap'),
+ new CSpan($one_media['sendto'], 'nowrap'),
+ new CSpan($one_media['period'], 'nowrap'),
+ media_severity2str($one_media['severity']),
+ $status)
+ );
+ }
+ $frmUser->AddRow(S_MEDIA, array($media_table,
+ new CButton('add_media',S_ADD,
+ 'return PopUp("popup_media.php?dstfrm='.$frmUser->GetName().'","new_media",'.
+ '"width=550,height=400,resizable=1,scrollbars=1");'),
+ SPACE,
+ (count($user_medias) > 0) ? new CButton('del_user_media',S_DELETE_SELECTED) : null
+ ));
}
- $cmbLang = new CcomboBox('lang',$lang);
+ $cmbLang = new CComboBox('lang',$lang);
$cmbLang->AddItem("en_gb",S_ENGLISH_GB);
$cmbLang->AddItem("cn_zh",S_CHINESE_CN);
$cmbLang->AddItem("fr_fr",S_FRENCH_FR);
@@ -138,9 +272,60 @@
$frmUser->AddRow(S_AUTO_LOGOUT_IN_SEC, new CTextBox("autologout",$autologout,5));
$frmUser->AddRow(S_URL_AFTER_LOGIN, new CTextBox("url",$url,50));
$frmUser->AddRow(S_SCREEN_REFRESH, new CTextBox("refresh",$refresh,5));
+
+
+ if($profile==0)
+ {
+ $frmUser->AddVar('perm_details', $perm_details);
+
+ $link = new CLink($perm_details ? S_HIDE : S_SHOW ,'#','action');
+ $link->OnClick("return create_var('".$frmUser->GetName()."','perm_details',".($perm_details ? 0 : 1).", true);");
+ $resources_list = array(
+ S_RIGHTS_OF_RESOURCES,
+ SPACE.'(',$link,')'
+ );
+ $frmUser->AddSpanRow($resources_list,'right_header');
+
+ if($perm_details)
+ {
+ $group_ids = array_keys($user_groups);
+ if(count($group_ids) == 0) $group_ids = array(-1);
+ $db_rights = DBselect('select * from rights r where r.groupid in ('.implode(',',$group_ids).')');
+
+ $tmp_perm = array();
+ while($db_right = DBfetch($db_rights))
+ {
+ if(isset($tmp_perm[$db_right['type']][$db_right['id']]))
+ {
+ $tmp_perm[$db_right['type']][$db_right['id']] =
+ min($tmp_perm[$db_right['type']][$db_right['id']],
+ $db_right['permission']);
+ }
+ else
+ {
+ $tmp_perm[$db_right['type']][$db_right['id']] = $db_right['permission'];
+ }
+ }
+
+ $user_rights = array();
+ foreach($tmp_perm as $type => $res)
+ {
+ foreach($res as $id => $perm)
+ {
+ array_push($user_rights, array(
+ 'type' => $type,
+ 'id' => $id,
+ 'permission' => $perm
+ ));
+ }
+ }
+
+ $frmUser->AddSpanRow(get_rights_of_elements_table($user_rights, $user_type));
+ }
+ }
$frmUser->AddItemToBottomRow(new CButton('save',S_SAVE));
- if(isset($userid))
+ if(isset($userid) && $profile == 0)
{
$frmUser->AddItemToBottomRow(SPACE);
$frmUser->AddItemToBottomRow(new CButtonDelete("Delete selected user?",
@@ -151,102 +336,149 @@
$frmUser->Show();
}
- # Insert form for User permissions
- function insert_permissions_form()
- {
- global $_REQUEST;
-
- $frmPerm = new CFormTable("New permission","users.php");
- $frmPerm->SetHelp("web.users.php");
-
- $frmPerm->AddVar("userid",$_REQUEST["userid"]);
- $frmPerm->AddVar("config",get_request("config",0));
-
- $cmbRes = new CComboBox("right");
- $cmbRes->AddItem("Configuration of Zabbix","Configuration of Zabbix");
- $cmbRes->AddItem("Default permission","Default permission");
- $cmbRes->AddItem("Graph","Graph");
- $cmbRes->AddItem("Host","Host");
- $cmbRes->AddItem("Screen","Screen");
- $cmbRes->AddItem("Service","IT Service");
- $cmbRes->AddItem("Item","Item");
- $cmbRes->AddItem("Network map","Network map");
- $cmbRes->AddItem("Trigger comment","Trigger comment");
- $cmbRes->AddItem("User","User");
- $cmbRes->AddItem("Application","Application");
- $frmPerm->AddRow(S_RESOURCE,$cmbRes);
-
- $cmbPerm = new CComboBox("permission");
- $cmbPerm->AddItem("R","Read-only");
- $cmbPerm->AddItem("U","Read-write");
- $cmbPerm->AddItem("H","Hide");
- $cmbPerm->AddItem("A","Add");
- $frmPerm->AddRow(S_PERMISSION,$cmbPerm);
-
- $frmPerm->AddRow("Resource ID (0 for all)",new CTextBox("id",0));
- $frmPerm->AddItemToBottomRow(new CButton("register","add permission"));
- $frmPerm->Show();
- }
-
# Insert form for User Groups
- function insert_usergroups_form($usrgrpid)
+ function insert_usergroups_form()
{
global $_REQUEST;
global $ZBX_CURNODEID;
$frm_title = S_USER_GROUP;
- if(isset($usrgrpid))
+ if(isset($_REQUEST["usrgrpid"]))
{
- $usrgrp=get_usergroup_by_groupid($usrgrpid);
- $frm_title = S_USER_GROUP." \"".$usrgrp["name"]."\"";
+ $usrgrp = get_group_by_usrgrpid($_REQUEST["usrgrpid"]);
+ $frm_title = S_USER_GROUP." \"".$usrgrp["name"]."\"";
}
- $users = get_request("users",array());
- if(isset($usrgrpid) && !isset($_REQUEST["form_refresh"]))
+ if(isset($_REQUEST["usrgrpid"]) && !isset($_REQUEST["form_refresh"]))
{
$name = $usrgrp["name"];
+
+ $group_users = array();
$db_users=DBselect("select distinct u.userid,u.alias from users u,users_groups ug ".
- "where u.userid=ug.userid and ug.usrgrpid=".$usrgrpid.
+ "where u.userid=ug.userid and ug.usrgrpid=".$_REQUEST["usrgrpid"].
" order by alias");
while($db_user=DBfetch($db_users))
+ $group_users[$db_user["userid"]] = $db_user['alias'];
+
+ $group_rights = array();
+ $sqls = array(
+ 'select r.*i,n.name as name from rights r, nodes n where r.groupid='.$_REQUEST["usrgrpid"].
+ ' and r.type='.RESOURCE_TYPE_NODE.' and r.id=n.nodeid',
+ 'select r.*i, CONCAT(n.name,":",g.name) as name from rights r, groups g, nodes n'.
+ ' where r.groupid='.$_REQUEST["usrgrpid"].' and n.nodeid='.DBid2nodeid('g.groupid').
+ ' and r.type='.RESOURCE_TYPE_GROUP.' and r.id=g.groupid',
+
+ );
+ foreach($sqls as $sql)
{
- if(in_array($db_user["userid"], $users)) continue;
- array_push($users,$db_user["userid"]);
+ $db_rights = DBselect($sql);
+ while($db_right = DBfetch($db_rights))
+ {
+ $group_rights[$db_right['name']] = array(
+ 'type' => $db_right['type'],
+ 'permission' => $db_right['permission'],
+ 'id' => $db_right['id']
+ );
+ }
}
}
else
{
- $name = get_request("gname","");
+ $name = get_request("gname","");
+ $group_users = get_request("group_users",array());
+ $group_rights = get_request("group_rights",array());
}
+ $perm_details = get_request('perm_details', 0);
+
+ ksort($group_rights);
$frmUserG = new CFormTable($frm_title,"users.php");
$frmUserG->SetHelp("web.users.groups.php");
- $frmUserG->AddVar("config",get_request("config",2));
- if(isset($usrgrpid))
+ $frmUserG->AddVar("config",get_request("config",1));
+
+ if(isset($_REQUEST["usrgrpid"]))
{
- $frmUserG->AddVar("usrgrpid",$usrgrpid);
+ $frmUserG->AddVar("usrgrpid",$_REQUEST["usrgrpid"]);
}
- $frmUserG->AddRow(S_GROUP_NAME,new CTextBox("gname",$name,30));
+ $grName = new CTextBox("gname",$name,49);
+ $grName->options['style'] = 'width: 250px';
+ $frmUserG->AddRow(S_GROUP_NAME,$grName);
- $form_row = array();
- $db_users=DBselect("select distinct userid,alias from users".
- " where mod(userid,100)=".$ZBX_CURNODEID.
- " order by alias");
- while($db_user=DBfetch($db_users))
+ $frmUserG->AddVar('group_rights', $group_rights);
+
+ $frmUserG->AddVar('group_users', $group_users);
+
+ $lstUsers = new CListBox('group_users_to_del[]');
+ $lstUsers->options['style'] = 'width: 250px';
+
+ foreach($group_users as $userid => $alias)
{
- array_push($form_row,
- array(
- new CCheckBox("users[]",
- in_array($db_user["userid"],$users) ? 'yes' : 'no',
- NULL, /* action */
- $db_user["userid"]), /* value */
- $db_user["alias"]
- ),
- BR);
+ $lstUsers->AddItem($userid, $alias);
}
- $frmUserG->AddRow(S_USERS,$form_row);
-
+
+ $frmUserG->AddRow(S_USERS,
+ array(
+ $lstUsers,
+ BR,
+ new CButton('add_user',S_ADD,
+ "return PopUp('popup_users.php?dstfrm=".$frmUserG->GetName().
+ "&list_name=group_users_to_del[]&var_name=group_users','new_user',".
+ "'width=450,height=450,resizable=1,scrollbars=1');"),
+ (count($group_users) > 0) ? new CButton('del_group_user',S_DELETE_SELECTED) : null
+ ));
+
+ $table_Rights = new CTable(S_NO_RIGHTS_DEFINED,'right_table');
+
+ $lstWrite = new CListBox('right_to_del[read_write][]' ,null ,20);
+ $lstRead = new CListBox('right_to_del[read_only][]' ,null ,20);
+ $lstDeny = new CListBox('right_to_del[deny][]' ,null ,20);
+
+ foreach($group_rights as $name => $element_data)
+ {
+ if($element_data['permission'] == PERM_DENY) $lstDeny->AddItem($name, $name);
+ elseif ($element_data['permission'] == PERM_READ_ONLY) $lstRead->AddItem($name, $name);
+ elseif ($element_data['permission'] == PERM_READ_WRITE) $lstWrite->AddItem($name, $name);
+
+ }
+
+ $table_Rights->SetHeader(array(S_READ_WRITE, S_READ_ONLY, S_DENY),'header');
+ $table_Rights->AddRow(array(new CCol($lstWrite,'read_write'), new CCol($lstRead,'read_only'), new CCol($lstDeny,'deny')));
+ $table_Rights->AddRow(array(
+ array(new CButton('add_read_write',S_ADD,
+ "return PopUp('popup_right.php?dstfrm=".$frmUserG->GetName().
+ "&permission=".PERM_READ_WRITE."','new_right',".
+ "'width=450,height=450,resizable=1,scrollbars=1');"),
+ new CButton('del_read_write',S_DELETE_SELECTED)),
+ array( new CButton('add_read_only',S_ADD,
+ "return PopUp('popup_right.php?dstfrm=".$frmUserG->GetName().
+ "&permission=".PERM_READ_ONLY."','new_right',".
+ "'width=450,height=450,resizable=1,scrollbars=1');"),
+ new CButton('del_read_only',S_DELETE_SELECTED)),
+ array(new CButton('add_deny',S_ADD,
+ "return PopUp('popup_right.php?dstfrm=".$frmUserG->GetName().
+ "&permission=".PERM_DENY."','new_right',".
+ "'width=450,height=450,resizable=1,scrollbars=1');"),
+ new CButton('del_deny',S_DELETE_SELECTED))
+ ));
+
+ $frmUserG->AddRow(S_RIGHTS,$table_Rights);
+
+ $frmUserG->AddVar('perm_details', $perm_details);
+
+ $link = new CLink($perm_details ? S_HIDE : S_SHOW ,'#','action');
+ $link->OnClick("return create_var('".$frmUserG->GetName()."','perm_details',".($perm_details ? 0 : 1).", true);");
+ $resources_list = array(
+ S_RIGHTS_OF_RESOURCES,
+ SPACE.'(',$link,')'
+ );
+ $frmUserG->AddSpanRow($resources_list,'right_header');
+
+ if($perm_details)
+ {
+ $frmUserG->AddSpanRow(get_rights_of_elements_table($group_rights));
+ }
+
$frmUserG->AddItemToBottomRow(new CButton("save",S_SAVE));
if(isset($_REQUEST["usrgrpid"]))
{
@@ -259,11 +491,84 @@
$frmUserG->Show();
}
+ function get_rights_of_elements_table($rights=array(),$user_type=USER_TYPE_ZABBIX_USER)
+ {
+ $table = new CTable('S_NO_ACCESSIBLE_RESOURCES', 'right_table');
+ $table->SetHeader(array(SPACE, S_READ_WRITE, S_READ_ONLY, S_DENY),'header');
+
+ $lst['node']['label'] = S_NODES;
+ $lst['node']['read_write'] = new CListBox('nodes_write' ,null ,6);
+ $lst['node']['read_only'] = new CListBox('nodes_read' ,null ,6);
+ $lst['node']['deny'] = new CListBox('nodes_deny' ,null ,6);
+
+ $nodes = get_accessible_nodes_by_rights($rights, $user_type, PERM_DENY, PERM_MODE_GE, PERM_RES_DATA_ARRAY);
+
+ foreach($nodes as $node)
+ {
+ switch($node['permission'])
+ {
+ case PERM_READ_ONLY: $list_name='read_only'; break;
+ case PERM_READ_WRITE: $list_name='read_write'; break;
+ default: $list_name='deny'; break;
+ }
+ $lst['node'][$list_name]->AddItem($node['nodeid'],$node['name']);
+ }
+
+ $lst['group']['label'] = S_HOST_GROUPS;
+ $lst['group']['read_write'] = new CListBox('groups_write' ,null ,10);
+ $lst['group']['read_only'] = new CListBox('groups_read' ,null ,10);
+ $lst['group']['deny'] = new CListBox('groups_deny' ,null ,10);
+
+ $groups = get_accessible_groups_by_rights($rights, $user_type, PERM_DENY, PERM_MODE_GE, PERM_RES_DATA_ARRAY);
+
+ foreach($groups as $group)
+ {
+ switch($group['permission'])
+ {
+ case PERM_READ_ONLY: $list_name='read_only'; break;
+ case PERM_READ_WRITE: $list_name='read_write'; break;
+ default: $list_name='deny'; break;
+ }
+ $lst['group'][$list_name]->AddItem($group['groupid'],$group['node_name'].':'.$group['name']);
+ }
+
+ $lst['host']['label'] = S_HOSTS;
+ $lst['host']['read_write'] = new CListBox('hosts_write' ,null ,15);
+ $lst['host']['read_only'] = new CListBox('hosts_read' ,null ,15);
+ $lst['host']['deny'] = new CListBox('hosts_deny' ,null ,15);
+
+ $hosts = get_accessible_hosts_by_rights($rights, $user_type, PERM_DENY, PERM_MODE_GE, PERM_RES_DATA_ARRAY);
+ foreach($hosts as $host)
+ {
+ switch($host['permission'])
+ {
+ case PERM_READ_ONLY: $list_name='read_only'; break;
+ case PERM_READ_WRITE: $list_name='read_write'; break;
+ default: $list_name='deny'; break;
+ }
+ $lst['host'][$list_name]->AddItem($host['hostid'],$host['node_name'].':'.$host['host']);
+ }
+
+ foreach($lst as $name => $lists)
+ {
+ $row = new CRow();
+ foreach($lists as $class => $list_obj)
+ {
+ $row->AddItem(new CCol($list_obj, $class));
+ }
+ $table->AddRow($row);
+ }
+
+ return $table;
+ }
+
# Insert form for Item information
function insert_item_form()
{
global $_REQUEST;
+ global $USER_DETAILS;
+ global $ZBX_CURNODEID;
$frmItem = new CFormTable(S_ITEM,"items.php");
$frmItem->SetHelp("web.items.item.php");
@@ -276,7 +581,7 @@
$description = get_request("description" ,"");
$key = get_request("key" ,"");
- $host = get_request("host", NULL);
+ $host = get_request("host", null);
$delay = get_request("delay" ,30);
$history = get_request("history" ,90);
$status = get_request("status" ,0);
@@ -378,7 +683,7 @@
array_push($delay_flex_el,
array(
- new CCheckBox("rem_delay_flex[]", 'no', NULL,$i),
+ new CCheckBox("rem_delay_flex[]", 'no', null,$i),
$val["delay"],
" sec at ",
$val["period"]
@@ -476,11 +781,11 @@
$frmItem->AddRow(S_KEY, array(new CTextBox("key",$key,40), $btnSelect));
$cmbValType = new CComboBox("value_type",$value_type,"submit()");
- $cmbValType->AddItem(ITEM_VALUE_TYPE_UINT64, S_NUMERIC_UINT64);
- $cmbValType->AddItem(ITEM_VALUE_TYPE_FLOAT, S_NUMERIC_FLOAT);
- $cmbValType->AddItem(ITEM_VALUE_TYPE_STR, S_CHARACTER);
- $cmbValType->AddItem(ITEM_VALUE_TYPE_LOG, S_LOG);
- $cmbValType->AddItem(ITEM_VALUE_TYPE_TEXT, S_TEXT);
+ $cmbValType->AddItem(ITEM_VALUE_TYPE_UINT64, S_NUMERIC_UINT64);
+ $cmbValType->AddItem(ITEM_VALUE_TYPE_FLOAT, S_NUMERIC_FLOAT);
+ $cmbValType->AddItem(ITEM_VALUE_TYPE_STR, S_CHARACTER);
+ $cmbValType->AddItem(ITEM_VALUE_TYPE_LOG, S_LOG);
+ $cmbValType->AddItem(ITEM_VALUE_TYPE_TEXT, S_TEXT);
$frmItem->AddRow(S_TYPE_OF_INFORMATION,$cmbValType);
if( ($value_type==ITEM_VALUE_TYPE_FLOAT) || ($value_type==ITEM_VALUE_TYPE_UINT64))
@@ -527,7 +832,7 @@
$frmItem->AddRow(S_KEEP_HISTORY_IN_DAYS, array(
new CTextBox("history",$history,8),
- (!isset($_REQUEST["itemid"])) ? NULL :
+ (!isset($_REQUEST["itemid"])) ? null :
new CButton("del_history",
"Clean history",
"return Confirm('History cleaning can take a long time. Continue?');")
@@ -567,7 +872,7 @@
{
$cmbMap = new CComboBox("valuemapid",$valuemapid);
$cmbMap->AddItem(0,S_AS_IS);
- $db_valuemaps = DBselect("select * from valuemaps");
+ $db_valuemaps = DBselect("select * from valuemaps where ".DBid2nodeid("valuemapid")."=".$ZBX_CURNODEID);
while($db_valuemap = DBfetch($db_valuemaps))
$cmbMap->AddItem($db_valuemap["valuemapid"],$db_valuemap["name"]);
@@ -618,20 +923,12 @@
$cmbGroups = new CComboBox("add_groupid",$add_groupid);
- $groups=DBselect("select groupid,name from groups order by name");
+ $groups=DBselect("select distinct groupid,name from groups ".
+ "where groupid in (".get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY,null,null,$ZBX_CURNODEID).") ".
+ " order by name");
while($group=DBfetch($groups))
{
-// Check if at least one host with read permission exists for this group
- $hosts=DBselect("select h.hostid,h.host from hosts h,hosts_groups hg".
- " where hg.groupid=".$group["groupid"]." and hg.hostid=h.hostid".
- " and h.status<>".HOST_STATUS_DELETED." group by h.hostid,h.host".
- " order by h.host");
- while($host=DBfetch($hosts))
- {
- if(!check_right("Host","U",$host["hostid"])) continue;
- $cmbGroups->AddItem($group["groupid"],$group["name"]);
- break;
- }
+ $cmbGroups->AddItem($group["groupid"],$group["name"]);
}
$frmItem->AddRow(S_GROUP,$cmbGroups);
@@ -664,7 +961,7 @@
return;
}
- $frmCopy = new CFormTable(count($group_itemid).' '.S_X_ELEMENTS_COPY_TO_DOT_DOT_DOT,NULL,'post',NULL,'form_copy_to');
+ $frmCopy = new CFormTable(count($group_itemid).' '.S_X_ELEMENTS_COPY_TO_DOT_DOT_DOT,null,'post',null,'form_copy_to');
$frmCopy->SetHelp('web.items.copyto.php');
$frmCopy->AddVar($elements_array_name, $group_itemid);
@@ -702,7 +999,7 @@
array_push($target_list,array(
new CCheckBox('copy_targetid[]',
in_array($target['target_id'], $copy_targetid),
- NULL,
+ null,
$target['target_id']),
SPACE,
$target['target_name'],
@@ -733,9 +1030,11 @@
$frmLogin->AddRow('Login name', new CTextBox('name'));
$frmLogin->AddRow('Password', new CPassBox('password'));
$frmLogin->AddItemToBottomRow(new CButton('enter','Enter'));
- $frmLogin->Show();
+ $frmLogin->Show(false);
SetFocus($frmLogin->GetName(),"name");
+
+ $frmLogin->Destroy();
}
# Insert form for Trigger
@@ -794,7 +1093,7 @@
foreach($dependences as $val){
array_push($dep_el,
array(
- new CCheckBox("rem_dependence[]", 'no', NULL, strval($val)),
+ new CCheckBox("rem_dependence[]", 'no', null, strval($val)),
expand_trigger_description($val)
),
BR);
@@ -808,32 +1107,31 @@
$frmTrig->AddRow("The trigger depends on",$dep_el);
/* end dependences */
+ global $USER_DETAILS;
/* new dependence */
- $cmbDepID = new CComboBox("new_dependence");
- if(isset($_REQUEST["triggerid"]))
- $sql="select t.triggerid,t.description from triggers t".
- " where t.triggerid!=".$_REQUEST["triggerid"]." order by t.description";
- else
- $sql="select t.triggerid,t.description from triggers t order by t.description";
+ $frmTrig->AddVar('new_dependence','0');
- $db_trigs=DBselect($sql);
- while($db_trig=DBfetch($db_trigs))
- {
- $cmbDepID->AddItem($db_trig["triggerid"],
- expand_trigger_description($db_trig["triggerid"]));
- }
- $frmTrig->AddRow("New dependency",array(
- $cmbDepID,SPACE,
- new CButton("add_dependence","add")));
+ $txtCondVal = new CTextBox('trigger','',50);
+ $txtCondVal->SetReadonly('yes');
+
+ $btnSelect = new CButton('btn1',S_SELECT,
+ "return PopUp('popup.php?dstfrm=".$frmTrig->GetName().
+ "&dstfld1=new_dependence&dstfld2=trigger&srctbl=triggers&srcfld1=triggerid&srcfld2=description','new_win',".
+ "'width=600,height=450,resizable=1,scrollbars=1');");
+
+ $btnSelect->SetAccessKey('T');
+ $frmTrig->AddRow("New dependency",array($txtCondVal,
+ $btnSelect, BR,
+ new CButton("add_dependence","add")
+ ));
+
/* end new dwpendence */
$cmbPrior = new CComboBox("priority",$priority);
- $cmbPrior->AddItem(0,"Not classified");
- $cmbPrior->AddItem(1,"Information");
- $cmbPrior->AddItem(2,"Warning");
- $cmbPrior->AddItem(3,"Average");
- $cmbPrior->AddItem(4,"High");
- $cmbPrior->AddItem(5,"Disaster");
+ for($i = 0; $i <= 5; $i++)
+ {
+ $cmbPrior->AddItem($i,get_severity_description($i));
+ }
$frmTrig->AddRow(S_SEVERITY,$cmbPrior);
$frmTrig->AddRow(S_COMMENTS,new CTextArea("comments",$comments,70,7));
@@ -855,14 +1153,16 @@
function insert_trigger_comment_form($triggerid)
{
- $trigger=get_trigger_by_triggerid($triggerid);
- $comments=stripslashes($trigger["comments"]);
+ $trigger = DBfetch(DBselect('select t.*, h.* from triggers t, functions f, items i, hosts h '.
+ ' where t.triggerid='.$triggerid.' and f.triggerid=t.triggerid and f.itemid=i.itemid '.
+ ' and i.hostid=h.hostid '));
- $frmComent = new CFormTable(S_COMMENTS." for \"".expand_trigger_description_simple($triggerid)."\"");
+ $frmComent = new CFormTable(S_COMMENTS." for ".$trigger['host']." : \"".expand_trigger_description_by_data($trigger)."\"");
$frmComent->SetHelp("web.tr_comments.comments.php");
$frmComent->AddVar("triggerid",$triggerid);
- $frmComent->AddRow(S_COMMENTS,new CTextArea("comments",$comments,100,25));
- $frmComent->AddItemToBottomRow(new CButton("register","update"));
+ $frmComent->AddRow(S_COMMENTS,new CTextArea("comments",stripslashes($trigger["comments"]),100,25));
+ $frmComent->AddItemToBottomRow(new CButton("save",S_SAVE));
+ $frmComent->AddItemToBottomRow(new CButton("cancel",S_CANCEL));
$frmComent->Show();
}
@@ -915,8 +1215,8 @@
$cmbGType->AddItem(GRAPH_TYPE_STACKED,S_STACKED);
$frmGraph->AddRow(S_GRAPH_TYPE,$cmbGType);
- $frmGraph->AddRow(S_SHOW_WORKING_TIME,new CCheckBox("showworkperiod",$showworkperiod,NULL,1));
- $frmGraph->AddRow(S_SHOW_TRIGGERS,new CCheckBox("showtriggers",$showtriggers,NULL,1));
+ $frmGraph->AddRow(S_SHOW_WORKING_TIME,new CCheckBox("showworkperiod",$showworkperiod,null,1));
+ $frmGraph->AddRow(S_SHOW_TRIGGERS,new CCheckBox("showtriggers",$showtriggers,null,1));
$cmbYType = new CComboBox("yaxistype",$yaxistype,"submit()");
$cmbYType->AddItem(GRAPH_YAXIS_TYPE_CALCULATED,S_CALCULATED);
@@ -955,22 +1255,19 @@
$db_graph = get_graph_by_graphid($_REQUEST["graphid"]);
- $db_hosts = get_hosts_by_graphid($_REQUEST["graphid"]);
- $db_host = DBfetch($db_hosts);
- if(!$db_host)
- {
- // empty graph, can contain any item
- $host_condition = " and h.status in(".HOST_STATUS_MONITORED.",".HOST_STATUS_TEMPLATE.")";
- }
- else
+
+ $db_host = DBfetch(get_hosts_by_graphid($_REQUEST["graphid"]));
+
+ $host_condition = "";
+ if($db_host)
{
if($db_host["status"]==HOST_STATUS_TEMPLATE)
{// graph for template must use only one host
- $host_condition = " and h.hostid=".$db_host["hostid"];
+ $host_condition = "&only_hostid=".$db_host["hostid"];
}
else
{
- $host_condition = " and h.status in(".HOST_STATUS_MONITORED.")";
+ $host_condition = "&monitored_hosts=1";
}
}
@@ -1012,17 +1309,26 @@
$frmGItem->AddVar("gitemid",$_REQUEST["gitemid"]);
}
- $cmbItems = new CComboBox("itemid", $itemid);
- $result=DBselect("select h.host,i.description,i.itemid,i.key_ from hosts h,items i".
- " where h.hostid=i.hostid".
- $host_condition.
- " and i.status=".ITEM_STATUS_ACTIVE." order by h.host,i.description");
- while($row=DBfetch($result))
+ $description = '';
+ if($itemid > 0)
{
- $cmbItems->AddItem($row["itemid"],
- $row["host"].":".SPACE.item_description($row["description"],$row["key_"]));
+ $description = DBfetch(DBselect("select * from items where itemid=".$itemid));
+ $description = $description['description'];
}
- $frmGItem->AddRow(S_PARAMETER, $cmbItems);
+
+ $frmGItem->AddVar('itemid',$itemid);
+
+ $txtCondVal = new CTextBox('description',$description,50);
+ $txtCondVal->SetReadonly('yes');
+
+ $btnSelect = new CButton('btn1',S_SELECT,
+ "return PopUp('popup.php?dstfrm=".$frmGItem->GetName().
+ "&dstfld1=itemid&dstfld2=description&".
+ "srctbl=items&srcfld1=itemid&srcfld2=description".$host_condition."','new_win',".
+ "'width=600,height=450,resizable=1,scrollbars=1');");
+
+ $btnSelect->SetAccessKey('T');
+ $frmGItem->AddRow(S_PARAMETER ,array($txtCondVal,$btnSelect));
if($db_graph["graphtype"] == GRAPH_TYPE_NORMAL)
{
@@ -1214,7 +1520,7 @@
{
array_push($valuemap_el,
array(
- new CCheckBox("rem_value[]", 'no', NULL, $i),
+ new CCheckBox("rem_value[]", 'no', null, $i),
$value["value"].SPACE.RARR.SPACE.$value["newvalue"]
),
BR);
@@ -1254,8 +1560,9 @@
function insert_action_form()
{
global $_REQUEST;
+ global $ZBX_CURNODEID;
- $uid=NULL;
+ $uid=null;
$frmAction = new CFormTable(S_ACTION,'actionconf.php');
$frmAction->SetHelp('web.actions.action.php');
@@ -1343,7 +1650,7 @@
{
array_push($cond_el,
array(
- new CCheckBox("rem_condition[]", 'no', NULL,$i),
+ new CCheckBox("rem_condition[]", 'no', null,$i),
get_condition_desc(
$val["type"],
$val["operator"],
@@ -1416,13 +1723,18 @@
// add condition value
if($new_condition_type == CONDITION_TYPE_GROUP)
{
- $cmbCondVal = new CComboBox('new_condition_value');
- $groups = DBselect("select groupid,name from groups order by name");
- while($group = DBfetch($groups))
- {
- $cmbCondVal->AddItem($group["groupid"],$group["name"]);
- }
- array_push($rowCondition,$cmbCondVal);
+ $frmAction->AddVar('new_condition_value','0');
+
+ $txtCondVal = new CTextBox('group','',20);
+ $txtCondVal->SetReadonly('yes');
+
+ $btnSelect = new CButton('btn1',S_SELECT,
+ "return PopUp('popup.php?dstfrm=".$frmAction->GetName().
+ "&dstfld1=new_condition_value&dstfld2=group&srctbl=host_group&srcfld1=groupid&srcfld2=name','new_win',".
+ "'width=450,height=450,resizable=1,scrollbars=1');");
+ $btnSelect->SetAccessKey('T');
+
+ array_push($rowCondition, $txtCondVal, $btnSelect);
}
else if($new_condition_type == CONDITION_TYPE_HOST)
{
@@ -1471,12 +1783,9 @@
else if($new_condition_type == CONDITION_TYPE_TRIGGER_SEVERITY)
{
$cmbCondVal = new CComboBox('new_condition_value');
- $cmbCondVal->AddItem(0,S_NOT_CLASSIFIED);
- $cmbCondVal->AddItem(1,S_INFORMATION);
- $cmbCondVal->AddItem(2,S_WARNING);
- $cmbCondVal->AddItem(3,S_AVERAGE);
- $cmbCondVal->AddItem(4,S_HIGH);
- $cmbCondVal->AddItem(5,S_DISASTER);
+ foreach(array(0,1,2,3,4,5) as $id)
+ $cmbCondVal->AddItem($id,get_severity_description($id));
+
array_push($rowCondition,$cmbCondVal);
}
// add condition button
@@ -1501,8 +1810,9 @@
$cmbGroups = new CComboBox('userid', $uid);
- $sql="select usrgrpid,name from usrgrp order by name";
- $groups=DBselect($sql);
+ $groups = DBselect("select usrgrpid,name from usrgrp ".
+ " where ".Dbid2nodeid("usrgrpid")."=".$ZBX_CURNODEID.
+ " order by name");
while($group=DBfetch($groups))
{
$cmbGroups->AddItem($group['usrgrpid'],$group['name']);
@@ -1514,8 +1824,9 @@
{
$cmbUser = new CComboBox('userid', $uid);
- $sql="select userid,alias from users order by alias";
- $users=DBselect($sql);
+ $users=DBselect("select userid,alias from users ".
+ " where ".Dbid2nodeid("userid")."=".$ZBX_CURNODEID.
+ " order by alias");
while($user=DBfetch($users))
{
$cmbUser->AddItem($user['userid'],$user['alias']);
@@ -1583,26 +1894,27 @@
if(isset($_REQUEST["mediatypeid"]) && !isset($_REQUEST["form_refresh"]))
{
- $result=DBselect("select mediatypeid,type,description,smtp_server,smtp_helo,smtp_email,exec_path,gsm_modem from media_type where mediatypeid=".$_REQUEST["mediatypeid"]);
- $row=DBfetch($result);
- $mediatypeid=$row["mediatypeid"];
- $type=@iif(isset($_REQUEST["type"]),$_REQUEST["type"],$row["type"]);
- $description=$row["description"];
- $smtp_server=$row["smtp_server"];
- $smtp_helo=$row["smtp_helo"];
- $smtp_email=$row["smtp_email"];
- $exec_path=$row["exec_path"];
- $gsm_modem=$row["gsm_modem"];
+ $result = DBselect("select mediatypeid,type,description,smtp_server,smtp_helo,smtp_email,exec_path,gsm_modem ".
+ "from media_type where mediatypeid=".$_REQUEST["mediatypeid"]);
+
+ $row = DBfetch($result);
+ $mediatypeid = $row["mediatypeid"];
+ $type = get_request("type",$row["type"]);
+ $description = $row["description"];
+ $smtp_server = $row["smtp_server"];
+ $smtp_helo = $row["smtp_helo"];
+ $smtp_email = $row["smtp_email"];
+ $exec_path = $row["exec_path"];
+ $gsm_modem = $row["gsm_modem"];
}
- $frmMeadia = new CFormTable(S_MEDIA,"config.php");
+ $frmMeadia = new CFormTable(S_MEDIA);
$frmMeadia->SetHelp("web.config.medias.php");
if(isset($_REQUEST["mediatypeid"]))
{
$frmMeadia->AddVar("mediatypeid",$_REQUEST["mediatypeid"]);
}
- $frmMeadia->AddVar("config",1);
$frmMeadia->AddRow(S_DESCRIPTION,new CTextBox("description",$description,30));
$cmbType = new CComboBox("type",$type,"submit()");
@@ -1640,10 +1952,10 @@
{
$frmMeadia->AddItemToBottomRow(SPACE);
$frmMeadia->AddItemToBottomRow(new CButtonDelete(S_DELETE_SELECTED_MEDIA,
- url_param("form").url_param("config").url_param("mediatypeid")));
+ url_param("form").url_param("mediatypeid")));
}
$frmMeadia->AddItemToBottomRow(SPACE);
- $frmMeadia->AddItemToBottomRow(new CButtonCancel(url_param("config")));
+ $frmMeadia->AddItemToBottomRow(new CButtonCancel());
$frmMeadia->Show();
}
@@ -1688,7 +2000,7 @@
if($imageid > 0)
{
$frmImages->AddRow(S_IMAGE,new CLink(
- new CImg("image.php?width=640&height=480&imageid=".$imageid,"no image",NULL),
+ new CImg("image.php?width=640&height=480&imageid=".$imageid,"no image",null),
"image.php?imageid=".$row["imageid"]));
}
@@ -1754,6 +2066,7 @@
function& get_screen_item_form()
{
global $_REQUEST;
+ global $USER_DETAILS;
$form = new CFormTable(S_SCREEN_CELL_CONFIGURATION,"screenedit.php#form");
$form->SetHelp("web.screenedit.cell.php");
@@ -1822,16 +2135,20 @@
if($resourcetype == SCREEN_RESOURCE_GRAPH)
{
// User-defined graph
- $result=DBselect("select graphid,name from graphs order by name");
+ $result = DBselect("select distinct g.graphid,g.name,n.name as node_name ".
+ " from graphs g, nodes n, graphs_items gi, items i, hosts h ".
+ " where n.nodeid=".DBid2nodeid("g.graphid")." and g.graphid=gi.graphid ".
+ " and gi.itemid=i.itemid and h.hostid=i.hostid".
+ " and i.hostid not in (".get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT).")".
+ " order by node_name,host,name,graphid");
$cmbGraphs = new CComboBox("resourceid",$resourceid);
while($row=DBfetch($result))
{
- $db_hosts = get_hosts_by_graphid($row["graphid"]);
- $db_host = DBfetch($db_hosts);
+ $db_host = DBfetch(get_hosts_by_graphid($row["graphid"]));
if($db_host)
{
- $name = $db_host["host"].":".$row["name"];
+ $name = "(".$row["node_name"].") ".$db_host["host"].":".$row["name"];
}
else
{
@@ -1845,17 +2162,18 @@
elseif($resourcetype == SCREEN_RESOURCE_SIMPLE_GRAPH)
{
// Simple graph
- $result=DBselect("select h.host,i.description,i.itemid,i.key_".
- " from hosts h,items i where h.hostid=i.hostid".
+ $result=DBselect("select n.name as node_name,h.host,i.description,i.itemid,i.key_".
+ " from hosts h,items i,nodes n where h.hostid=i.hostid and n.nodeid=".DBid2nodeid("i.itemid").
" and h.status=".HOST_STATUS_MONITORED." and i.status=".ITEM_STATUS_ACTIVE.
- " order by h.host,i.description");
+ " and i.hostid not in (".get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT).")".
+ " order by node_name,h.host,i.description");
$cmbItems = new CCombobox("resourceid",$resourceid);
while($row=DBfetch($result))
{
$description_=item_description($row["description"],$row["key_"]);
- $cmbItems->AddItem($row["itemid"],$row["host"].": ".$description_);
+ $cmbItems->AddItem($row["itemid"],"(".$row["node_name"].") ".$row["host"].": ".$description_);
}
$form->AddRow(S_PARAMETER,$cmbItems);
@@ -1863,12 +2181,15 @@
elseif($resourcetype == SCREEN_RESOURCE_MAP)
{
// Map
- $result=DBselect("select sysmapid,name from sysmaps order by name");
+ $result=DBselect("select n.name as node_name, s.sysmapid,s.name from sysmaps s, nodes n".
+ " where n.nodeid=".DBid2nodeid("s.sysmapid").
+ " order by name ");
$cmbMaps = new CComboBox("resourceid",$resourceid);
while($row=DBfetch($result))
{
- $cmbMaps->AddItem($row["sysmapid"],$row["name"]);
+ if(!sysmap_accessiable($row["sysmapid"],PERM_READ_ONLY)) continue;
+ $cmbMaps->AddItem($row["sysmapid"],"(".$row["node_name"].") ".$row["name"]);
}
$form->AddRow(S_MAP,$cmbMaps);
@@ -1876,16 +2197,17 @@
elseif($resourcetype == SCREEN_RESOURCE_PLAIN_TEXT)
{
// Plain text
- $result=DBselect("select h.host,i.description,i.itemid,i.key_".
- " from hosts h,items i where h.hostid=i.hostid".
+ $result=DBselect("select n.name as node_name,h.host,i.description,i.itemid,i.key_".
+ " from hosts h,items i,nodes n where h.hostid=i.hostid and n.nodeid=".DBid2nodeid("i.itemid").
" and h.status=".HOST_STATUS_MONITORED." and i.status=".ITEM_STATUS_ACTIVE.
- " order by h.host,i.description");
+ " and i.hostid not in (".get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT).")".
+ " order by node_name,h.host,i.description");
$cmbHosts = new CComboBox("resourceid",$resourceid);
while($row=DBfetch($result))
{
$description_=item_description($row["description"],$row["key_"]);
- $cmbHosts->AddItem($row["itemid"],$row["host"].": ".$description_);
+ $cmbHosts->AddItem($row["itemid"],"(".$row["node_name"].") ".$row["host"].": ".$description_);
}
@@ -1910,25 +2232,14 @@
$cmbGroup = new CComboBox("resourceid",$resourceid);
$cmbGroup->AddItem(0,S_ALL_SMALL);
- $result=DBselect("select groupid,name from groups order by name");
+ $result=DBselect("select distinct n.name as node_name,g.groupid,g.name from groups g,nodes n,hosts_groups hg,hosts h ".
+ " where g.groupid in (".get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY).")".
+ " and n.nodeid=".DBid2nodeid("g.groupid")." and g.groupid=hg.groupid and hg.hostid=h.hostid ".
+ " and h.status=".HOST_STATUS_MONITORED.
+ " order by node_name,g.name");
while($row=DBfetch($result))
{
- $cmbGroup = new CComboBox("resourceid",$resourceid);
-
- $cmbGroup->AddItem(0,S_ALL_SMALL);
- $result=DBselect("select groupid,name from groups order by name");
- while($row=DBfetch($result))
- {
- $result2=DBselect("select h.hostid,h.host from hosts h,items i,hosts_groups hg where".
- " h.status=".HOST_STATUS_MONITORED." and h.hostid=i.hostid and hg.groupid=".$row["groupid"].
- " and hg.hostid=h.hostid group by h.hostid,h.host order by h.host");
- while($row2=DBfetch($result2))
- {
- if(!check_right("Host","R",$row2["hostid"])) continue;
- $cmbGroup->AddItem($row["groupid"],$row["name"]);
- break;
- }
- }
+ $cmbGroup->AddItem($row["groupid"],"(".$row["node_name"].") ".$row["name"]);
}
$form->AddRow(S_GROUP,$cmbGroup);
@@ -1936,12 +2247,15 @@
elseif($resourcetype == SCREEN_RESOURCE_SCREEN)
{
$cmbScreens = new CComboBox("resourceid",$resourceid);
- $result=DBselect("select screenid,name from screens");
+ $result=DBselect("select distinct n.name as node_name,s.screenid,s.name from screens s,nodes n ".
+ " where n.nodeid=".DBid2nodeid("s.screenid").
+ " order by node_name,s.name");
while($row=DBfetch($result))
{
+ if(!screen_accessiable($row["screenid"], PERM_READ_ONLY)) continue;
if(check_screen_recursion($_REQUEST["screenid"],$row["screenid"]))
continue;
- $cmbScreens->AddItem($row["screenid"],$row["name"]);
+ $cmbScreens->AddItem($row["screenid"],"(".$row["node_name"].") ".$row["name"]);
}
@@ -2018,7 +2332,7 @@
if(isset($_REQUEST["screenitemid"]))
{
$form->AddItemToBottomRow(SPACE);
- $form->AddItemToBottomRow(new CButtonDelete(NULL,
+ $form->AddItemToBottomRow(new CButtonDelete(null,
url_param("form").url_param("screenid").url_param("screenitemid")));
}
$form->AddItemToBottomRow(SPACE);
@@ -2027,46 +2341,25 @@
}
function insert_media_form()
- {
- global $_REQUEST;
+ { /* NOTE: only NEW media is acessed */
- $severity = get_request("severity",array());
+ global $_REQUEST;
+ global $ZBX_CURNODEID;
- if(isset($_REQUEST["mediaid"]) && !isset($_REQUEST["form_refresh"]))
- {
- $media=get_media_by_mediaid($_REQUEST["mediaid"]);
+ $severity = get_request("severity",array(0,1,2,3,4,5));
+ $sendto = get_request("sendto","");
+ $mediatypeid = get_request("mediatypeid",0);
+ $active = get_request("active",0);
+ $period = get_request("period","1-7,00:00-23:59");
- $sendto = $media["sendto"];
- $mediatypeid = $media["mediatypeid"];
- $active = $media["active"];
- $period = $media["period"];
+ $frmMedia = new CFormTable(S_NEW_MEDIA);
+ $frmMedia->SetHelp("web.media.php");
- if($media["severity"] & 1) array_push($severity,0);
- if($media["severity"] & 2) array_push($severity,1);
- if($media["severity"] & 4) array_push($severity,2);
- if($media["severity"] & 8) array_push($severity,3);
- if($media["severity"] & 16) array_push($severity,4);
- if($media["severity"] & 32) array_push($severity,5);
- }
- else
- {
- $sendto = get_request("sendto","");
- $mediatypeid = get_request("mediatypeid",0);
- $active = get_request("active",0);
- $period = get_request("period","1-7,00:00-23:59");
- }
-
- $frmMedia = new CFormTable(S_NEW_MEDIA,"media.php");
- $frmMedia->SetHelp("web.media.media.php");
-
- $frmMedia->AddVar("userid",$_REQUEST["userid"]);
- if(isset($_REQUEST["mediaid"]))
- {
- $frmMedia->AddVar("mediaid",$_REQUEST["mediaid"]);
- }
+ $frmMedia->AddVar("dstfrm",$_REQUEST["dstfrm"]);
$cmbType = new CComboBox("mediatypeid",$mediatypeid);
- $types=DBselect("select mediatypeid,description from media_type order by type");
+ $types=DBselect("select mediatypeid,description from media_type".
+ " where ".DBid2nodeid("mediatypeid")."=".$ZBX_CURNODEID." order by type");
while($type=DBfetch($types))
{
$cmbType->AddItem($type["mediatypeid"],$type["description"]);
@@ -2076,14 +2369,6 @@
$frmMedia->AddRow(S_SEND_TO,new CTextBox("sendto",$sendto,20));
$frmMedia->AddRow(S_WHEN_ACTIVE,new CTextBox("period",$period,48));
-
- $label[0] = S_NOT_CLASSIFIED;
- $label[1] = S_INFORMATION;
- $label[2] = S_WARNING;
- $label[3] = S_AVERAGE;
- $label[4] = S_HIGH;
- $label[5] = S_DISASTER;
-
$frm_row = array();
for($i=0; $i<=5; $i++){
array_push($frm_row,
@@ -2091,9 +2376,9 @@
new CCheckBox(
"severity[]",
in_array($i,$severity)?'yes':'no',
- NULL, /* action */
+ null, /* action */
$i), /* value */
- $label[$i]
+ get_severity_description($i)
),
BR);
}
@@ -2104,15 +2389,9 @@
$cmbStat->AddItem(1,S_DISABLED);
$frmMedia->AddRow("Status",$cmbStat);
- $frmMedia->AddItemToBottomRow(new CButton("save", S_SAVE));
- if(isset($_REQUEST["mediaid"]))
- {
- $frmMedia->AddItemToBottomRow(SPACE);
- $frmMedia->AddItemToBottomRow(new CButtonDelete(S_DELETE_SELECTED_MEDIA_Q,
- url_param("form").url_param("userid").url_param("mediaid")));
- }
+ $frmMedia->AddItemToBottomRow(new CButton("add", S_ADD));
$frmMedia->AddItemToBottomRow(SPACE);
- $frmMedia->AddItemToBottomRow(new CButtonCancel(url_param("userid")));
+ $frmMedia->AddItemToBottomRow(new CButton('cancel',S_CANCEL,'window.close();'));
$frmMedia->Show();
}
@@ -2128,7 +2407,7 @@
$frmHouseKeep->AddRow(S_DO_NOT_KEEP_ACTIONS_OLDER_THAN,
new CTextBox("alert_history",$config["alert_history"],8));
$frmHouseKeep->AddRow(S_DO_NOT_KEEP_EVENTS_OLDER_THAN,
- new CTextBox("alarm_history",$config["alarm_history"],8));
+ new CTextBox("event_history",$config["event_history"],8));
$frmHouseKeep->AddItemToBottomRow(new CButton("save",S_SAVE));
$frmHouseKeep->Show();
}
@@ -2141,7 +2420,7 @@
$frmHouseKeep->SetHelp("web.config.workperiod.php");
$frmHouseKeep->AddVar("config",get_request("config",7));
$frmHouseKeep->AddVar("alert_history",$config["alert_history"]);
- $frmHouseKeep->AddVar("alarm_history",$config["alarm_history"]);
+ $frmHouseKeep->AddVar("event_history",$config["event_history"]);
$frmHouseKeep->AddVar("refresh_unsupported",$config["refresh_unsupported"]);
$frmHouseKeep->AddRow(S_WORKING_TIME,
new CTextBox("work_period",$config["work_period"],35));
@@ -2157,7 +2436,7 @@
$frmHouseKeep->SetHelp("web.config.other.php");
$frmHouseKeep->AddVar("config",get_request("config",5));
$frmHouseKeep->AddVar("alert_history",$config["alert_history"]);
- $frmHouseKeep->AddVar("alarm_history",$config["alarm_history"]);
+ $frmHouseKeep->AddVar("event_history",$config["event_history"]);
$frmHouseKeep->AddVar("work_period",$config["work_period"]);
$frmHouseKeep->AddRow(S_REFRESH_UNSUPPORTED_ITEMS,
new CTextBox("refresh_unsupported",$config["refresh_unsupported"],8));
@@ -2167,7 +2446,8 @@
function insert_host_form($show_only_tmp=0)
{
-
+ global $ZBX_CURNODEID;
+ global $USER_DETAILS;
global $_REQUEST;
$groups= get_request("groups",array());
@@ -2215,7 +2495,10 @@
$templateid = $db_host["templateid"];
// add groups
- $db_groups=DBselect("select groupid from hosts_groups where hostid=".$_REQUEST["hostid"]);
+ $db_groups=DBselect("select distinct groupid from hosts_groups where hostid=".$_REQUEST["hostid"].
+ " and groupid in (".
+ get_accessible_groups_by_user($USER_DETAILS,PERM_READ_LIST,null,null,$ZBX_CURNODEID).
+ ") ");
while($db_group=DBfetch($db_groups)){
if(in_array($db_group["groupid"],$groups)) continue;
array_push($groups, $db_group["groupid"]);
@@ -2263,14 +2546,18 @@
$frmHost->AddRow(S_NAME,new CTextBox("host",$host,20));
$frm_row = array();
- $db_groups=DBselect("select distinct groupid,name from groups order by name");
+
+ $db_groups=DBselect("select distinct groupid,name from groups ".
+ " where groupid in (".
+ get_accessible_groups_by_user($USER_DETAILS,PERM_READ_LIST,null,null,$ZBX_CURNODEID).
+ ") order by name");
while($db_group=DBfetch($db_groups))
{
array_push($frm_row,
array(
new CCheckBox("groups[]",
in_array($db_group["groupid"],$groups) ? 'yes' : 'no',
- NULL,
+ null,
$db_group["groupid"]
),
$db_group["name"]
@@ -2333,6 +2620,7 @@
$cmbHosts->AddItem(0,"...");
$hosts=DBselect("select host,hostid from hosts where status in (".HOST_STATUS_TEMPLATE.")".
+ " and hostid in (".get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_LIST,null,null,$ZBX_CURNODEID).") ".
" order by host");
while($host=DBfetch($hosts))
{
@@ -2476,7 +2764,7 @@
# Insert host profile ReadOnly form
function insert_host_profile_form()
{
- $frmHostP = new CFormTable(S_HOST_PROFILE,"hosts.php");
+ $frmHostP = new CFormTable(S_HOST_PROFILE);
$frmHostP->SetHelp("web.host_profile.php");
$result=DBselect("select * from hosts_profiles where hostid=".$_REQUEST["hostid"]);
@@ -2513,6 +2801,7 @@
{
$frmHostP->AddSpanRow("Profile for this host is missing","form_row_c");
}
+ $frmHostP->AddItemToBottomRow(new CButtonCancel(url_param("groupid")));
$frmHostP->Show();
}
@@ -2590,6 +2879,7 @@
function insert_map_form()
{
global $_REQUEST;
+ global $ZBX_CURNODEID;
$frm_title = "New system map";
@@ -2604,7 +2894,7 @@
$name = $row["name"];
$width = $row["width"];
$height = $row["height"];
- $background = $row["background"];
+ $backgroundid = $row["backgroundid"];
$label_type = $row["label_type"];
$label_location = $row["label_location"];
}
@@ -2613,7 +2903,7 @@
$name = get_request("name","");
$width = get_request("width",800);
$height = get_request("height",600);
- $background = get_request("background","");
+ $backgroundid = get_request("backgroundid",0);
$label_type = get_request("label_type",0);
$label_location = get_request("label_location",0);
}
@@ -2629,11 +2919,13 @@
$frmMap->AddRow(S_WIDTH,new CTextBox("width",$width,5));
$frmMap->AddRow(S_HEIGHT,new CTextBox("height",$height,5));
- $cmbImg = new CComboBox("background",$background);
- $cmbImg->AddItem('',"No image...");
- $result=DBselect("select name from images where imagetype=2 order by name");
+ $cmbImg = new CComboBox("backgroundid",$backgroundid);
+ $cmbImg->AddItem(0,"No image...");
+ $result=DBselect("select * from images where imagetype=2 and ".DBid2nodeid("imageid")."=".$ZBX_CURNODEID." order by name");
while($row=DBfetch($result))
- $cmbImg->AddItem($row["name"],$row["name"]);
+ {
+ $cmbImg->AddItem($row["imageid"],$row["name"]);
+ }
$frmMap->AddRow(S_BACKGROUND_IMAGE,$cmbImg);
$cmbLabel = new CComboBox("label_type",$label_type);
@@ -2668,6 +2960,9 @@
function insert_map_element_form()
{
+ global $ZBX_CURNODEID;
+ global $USER_DETAILS;
+
$frmEl = new CFormTable("New map element","sysmap.php");
$frmEl->SetHelp("web.sysmap.host.php");
$frmEl->AddVar("sysmapid",$_REQUEST["sysmapid"]);
@@ -2687,9 +2982,9 @@
$label = $element["label"];
$x = $element["x"];
$y = $element["y"];
- $icon = $element["icon"];
$url = $element["url"];
- $icon_on = $element["icon_on"];
+ $iconid_off = $element["iconid_off"];
+ $iconid_on = $element["iconid_on"];
$label_location = $element["label_location"];
if(is_null($label_location)) $label_location = -1;
}
@@ -2700,16 +2995,21 @@
$label = get_request("label", "");
$x = get_request("x", 0);
$y = get_request("y", 0);
- $icon = get_request("icon", "");
$url = get_request("url", "");
- $icon_on = get_request("icon_on", "");
+ $iconid_off = get_request("iconid_off", 0);
+ $iconid_on = get_request("iconid_on", 0);
$label_location = get_request("label_location", "-1");
}
$cmbType = new CComboBox("elementtype",$elementtype,"submit()");
- $db_hosts = DBselect("select hostid from hosts");
- if(DBfetch($db_hosts))
+ $denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT);
+
+ $db_hosts = DBselect("select distinct n.name as node_name,h.hostid,h.host from hosts h,nodes n ".
+ " where h.hostid not in(".$denyed_hosts.")".
+ " and n.nodeid=".DBid2nodeid("h.hostid").
+ " order by node_name,h.host");
+ if($db_hosts)
$cmbType->AddItem(SYSMAP_ELEMENT_TYPE_HOST, S_HOST);
$db_maps = DBselect("select sysmapid from sysmaps where sysmapid!=".$_REQUEST["sysmapid"]);
@@ -2733,10 +3033,11 @@
if($elementtype==SYSMAP_ELEMENT_TYPE_HOST)
{
$host = "";
- $host_info = 0;
- $db_hosts = DBselect("select host from hosts where hostid=$elementid");
- $host_info = DBfetch($db_hosts);
+ $host_info = DBfetch(DBselect("select distinct n.name as node_name,h.hostid,h.host from hosts h,nodes n ".
+ " where h.hostid not in(".$denyed_hosts.") and hostid=".$elementid.
+ " and n.nodeid=".DBid2nodeid("h.hostid").
+ " order by node_name,h.host"));
if($host_info)
$host = $host_info["host"];
else
@@ -2744,10 +3045,8 @@
if($elementid==0)
{
- $db_hosts = DBselect("select hostid,host from hosts",1);
- $db_host = DBfetch($db_hosts);
- $host = $db_host["host"];
- $elementid = $db_host["hostid"];
+ $host = "";
+ $elementid = 0;
}
$frmEl->AddVar("elementid",$elementid);
@@ -2761,10 +3060,13 @@
elseif($elementtype==SYSMAP_ELEMENT_TYPE_MAP)
{
$cmbMaps = new CComboBox("elementid",$elementid);
- $db_maps = DBselect("select sysmapid,name from sysmaps");
+ $db_maps = DBselect("select distinct n.name as node_name,s.sysmapid,s.name from sysmaps s,nodes n ".
+ " where ".DBid2nodeid("s.sysmapid")."=n.nodeid".
+ " order by node_name,s.name");
while($db_map = DBfetch($db_maps))
{
- $cmbMaps->AddItem($db_map["sysmapid"],$db_map["name"]);
+ if(!sysmap_accessiable($db_map["sysmapid"],PERM_READ_ONLY)) continue;
+ $cmbMaps->AddItem($db_map["sysmapid"],"(".$db_map['node_name'].") ".$db_map["name"]);
}
$frmEl->AddRow(S_MAP, $cmbMaps);
}
@@ -2772,27 +3074,32 @@
{
$cmbTriggers= new CComboBox("elementid",$elementid);
$cmbTriggers->AddItem(0,"-");
- $db_triggers = DBselect("select triggerid from triggers");
+ $db_triggers = DBselect("select distinct n.name as node_name,h.hostid,h.host,t.*".
+ " from triggers t,hosts h,items i,functions f,nodes n ".
+ " where f.itemid=i.itemid and h.hostid=i.hostid and t.triggerid=f.triggerid".
+ " and h.hostid not in (".$denyed_hosts.")".
+ " and ".DBid2nodeid("h.hostid")."=n.nodeid".
+ " order by node_name,h.host,t.description");
+
while($db_trigger = DBfetch($db_triggers))
{
$cmbTriggers->AddItem(
$db_trigger["triggerid"],
- expand_trigger_description($db_trigger["triggerid"]));
+ "(".$db_trigger['node_name'].") ".expand_trigger_description($db_trigger["triggerid"]));
}
$frmEl->AddRow(S_TRIGGER, $cmbTriggers);
}
- $cmbIcon = new CComboBox("icon",$icon);
- $result=DBselect("select name from images where imagetype=1 order by name");
+ $cmbIconOff = new CComboBox("iconid_off",$iconid_off);
+ $cmbIconOn = new CComboBox("iconid_on",$iconid_on);
+ $result = DBselect("select * from images where imagetype=1 and ".DBid2nodeid("imageid")."=".$ZBX_CURNODEID." order by name");
while($row=DBfetch($result))
- $cmbIcon->AddItem($row["name"],$row["name"]);
- $frmEl->AddRow("Icon (OFF)",$cmbIcon);
-
- $cmbIcon = new CComboBox("icon_on",$icon_on);
- $result=DBselect("select name from images where imagetype=1 order by name");
- while($row=DBfetch($result))
- $cmbIcon->AddItem($row["name"],$row["name"]);
- $frmEl->AddRow("Icon (ON)",$cmbIcon);
+ {
+ $cmbIconOff->AddItem($row["imageid"],$row["name"]);
+ $cmbIconOn->AddItem($row["imageid"],$row["name"]);
+ }
+ $frmEl->AddRow("Icon (OFF)",$cmbIconOff);
+ $frmEl->AddRow("Icon (ON)",$cmbIconOn);
$frmEl->AddRow("Coordinate X", new CTextBox("x", $x, 5));
$frmEl->AddRow("Coordinate Y", new CTextBox("y", $y, 5));