summaryrefslogtreecommitdiffstats
path: root/frontends/php
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/php')
-rw-r--r--frontends/php/dashboard.php1
-rw-r--r--frontends/php/events.php2
-rw-r--r--frontends/php/include/blocks.inc.php15
-rw-r--r--frontends/php/include/config.inc.php2
-rw-r--r--frontends/php/include/forms.inc.php1
-rw-r--r--frontends/php/include/page_header.php24
-rw-r--r--frontends/php/include/perm.inc.php83
-rw-r--r--frontends/php/include/profiles.inc.php23
-rw-r--r--frontends/php/nodes.php51
9 files changed, 115 insertions, 87 deletions
diff --git a/frontends/php/dashboard.php b/frontends/php/dashboard.php
index e73c9ea3..4fe6be53 100644
--- a/frontends/php/dashboard.php
+++ b/frontends/php/dashboard.php
@@ -206,7 +206,6 @@ include_once "include/page_header.php";
show_table_header($text,SPACE);
//-------------
-
$left_tab = new CTable();
$left_tab->SetCellPadding(3);
diff --git a/frontends/php/events.php b/frontends/php/events.php
index 37b4cdfb..9f4a89b1 100644
--- a/frontends/php/events.php
+++ b/frontends/php/events.php
@@ -309,7 +309,7 @@ include_once "include/page_header.php";
' AND '.DBcondition('e.objectid', $trigger_list).
$sql_cond.
order_by('e.clock');
-//SDI($sql);
+
$result = DBselect($sql,10*($_REQUEST['start']+PAGE_SIZE));
}
diff --git a/frontends/php/include/blocks.inc.php b/frontends/php/include/blocks.inc.php
index 1846b9a5..b0c45a24 100644
--- a/frontends/php/include/blocks.inc.php
+++ b/frontends/php/include/blocks.inc.php
@@ -28,8 +28,7 @@ require_once "include/maps.inc.php";
function make_favorite_graphs(){
$table = new CTableInfo();
- $fav_graphs = get_multi_profile('web.favorite.graphids');
-
+ $fav_graphs = get_favorites('web.favorite.graphids');
foreach($fav_graphs as $key => $favorite){
$source = $favorite['source'];
@@ -85,7 +84,7 @@ return $table;
function make_favorite_screens(){
$table = new CTableInfo();
- $fav_screens = get_multi_profile('web.favorite.screenids');
+ $fav_screens = get_favorites('web.favorite.screenids');
foreach($fav_screens as $key => $favorite){
$source = $favorite['source'];
@@ -137,7 +136,7 @@ return $table;
function make_favorite_maps(){
$table = new CTableInfo();
- $fav_sysmaps = get_multi_profile('web.favorite.sysmapids');
+ $fav_sysmaps = get_favorites('web.favorite.sysmapids');
foreach($fav_sysmaps as $key => $favorite){
@@ -476,7 +475,6 @@ function make_latest_issues(){
' AND h.status='.HOST_STATUS_MONITORED.
' AND t.value='.TRIGGER_VALUE_TRUE.
' ORDER BY t.lastchange DESC';
-
$result = DBselect($sql);
while($row=DBfetch($result)){
@@ -511,7 +509,6 @@ function make_latest_issues(){
' AND t.triggerid=e.objectid '.
' AND e.value='.TRIGGER_VALUE_TRUE.
' ORDER by e.object DESC, e.objectid DESC, e.eventid DESC';
-
$res_events = DBSelect($event_sql,1);
while($row_event=DBfetch($res_events)){
@@ -764,7 +761,7 @@ function make_graph_menu(&$menu,&$submenu){
function make_graph_submenu(){
$graphids = array();
- $fav_graphs = get_multi_profile('web.favorite.graphids');
+ $fav_graphs = get_favorites('web.favorite.graphids');
foreach($fav_graphs as $key => $favorite){
@@ -847,7 +844,7 @@ function make_sysmap_menu(&$menu,&$submenu){
function make_sysmap_submenu(){
$sysmapids = array();
- $fav_sysmaps = get_multi_profile('web.favorite.sysmapids');
+ $fav_sysmaps = get_favorites('web.favorite.sysmapids');
foreach($fav_sysmaps as $key => $favorite){
@@ -914,7 +911,7 @@ function make_screen_menu(&$menu,&$submenu){
function make_screen_submenu(){
$screenids = array();
- $fav_screens = get_multi_profile('web.favorite.screenids');
+ $fav_screens = get_favorites('web.favorite.screenids');
foreach($fav_screens as $key => $favorite){
$source = $favorite['source'];
diff --git a/frontends/php/include/config.inc.php b/frontends/php/include/config.inc.php
index a6389bae..6dbd676a 100644
--- a/frontends/php/include/config.inc.php
+++ b/frontends/php/include/config.inc.php
@@ -234,7 +234,7 @@ function TODO($msg) { echo "TODO: ".$msg.SBR; } // DEBUG INFO!!!
$ZBX_CURMASTERID = $node_data['masterid'];
}
- $ZBX_NODES = get_accessible_nodes_by_user($USER_DETAILS, PERM_READ_LIST, null, PERM_RES_DATA_ARRAY);
+ $ZBX_NODES = get_accessible_nodes_by_user($USER_DETAILS, PERM_READ_LIST, PERM_RES_DATA_ARRAY);
if ( !isset($ZBX_NODES[$ZBX_CURRENT_NODEID]) ){
$denyed_page_requested = true;
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php
index 8ae10f7b..3ee181ca 100644
--- a/frontends/php/include/forms.inc.php
+++ b/frontends/php/include/forms.inc.php
@@ -1150,7 +1150,6 @@
$lst['node']['deny'] = new CListBox('nodes_deny' ,null ,6);
$nodes = get_accessible_nodes_by_rights($rights, $user_type, PERM_DENY, PERM_RES_DATA_ARRAY);
-
foreach($nodes as $node){
switch($node['permission']){
case PERM_READ_ONLY: $list_name='read_only'; break;
diff --git a/frontends/php/include/page_header.php b/frontends/php/include/page_header.php
index 4640657f..8cbcc843 100644
--- a/frontends/php/include/page_header.php
+++ b/frontends/php/include/page_header.php
@@ -321,7 +321,7 @@ COpt::profiling_start("page");
}
}
- if ( isset($page_exist) &&
+ if (isset($page_exist) &&
( isset($sub['forse_disable_subnodes']) || isset($sub_pages['forse_disable_subnodes']) ) &&
!defined('ZBX_DISABLE_SUBNODES'))
{
@@ -494,29 +494,23 @@ COpt::compare_files_with_menu($ZBX_MENU);
$node_form = null;
- if(ZBX_DISTRIBUTED)
- {
+ if(ZBX_DISTRIBUTED){
$lst_nodes = new CComboBox('switch_node', get_current_nodeid(false), "submit()");
- $db_nodes = DBselect(
- 'select * from nodes '.
- ' where nodeid in ('.
- get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST).
- ') '.
- ' order by name '
+ $db_nodes = DBselect('SELECT * '.
+ ' FROM nodes '.
+ ' WHERE nodeid IN ('.get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST).') '.
+ ' ORDER BY name '
);
- while($node_data = DBfetch($db_nodes))
- {
+ while($node_data = DBfetch($db_nodes)){
$lst_nodes->AddItem($node_data['nodeid'],$node_data['name']);
}
- if( $lst_nodes->ItemsCount() > 1 )
- {
+ if($lst_nodes->ItemsCount() > 1){
$node_form = new CForm();
$node_form->AddItem(array(S_CURRENT_NODE,$lst_nodes));
unset($lst_nodes);
- if ( !defined('ZBX_DISABLE_SUBNODES') )
- {
+ if(!defined('ZBX_DISABLE_SUBNODES')){
global $ZBX_WITH_SUBNODES;
$cmd_show_subnodes = new CComboBox('show_subnodes', !empty($ZBX_WITH_SUBNODES) ? 1 : 0, "submit()");
diff --git a/frontends/php/include/perm.inc.php b/frontends/php/include/perm.inc.php
index 04b5c6f4..0e4c0033 100644
--- a/frontends/php/include/perm.inc.php
+++ b/frontends/php/include/perm.inc.php
@@ -404,19 +404,32 @@ function get_accessible_nodes_by_user(&$user_data,$perm,$perm_res=null,$nodeid=n
//COpt::counter_up('perm_nodes['.$userid.','.$perm.','.$perm_mode.','.$perm_res.','.$nodeid.']');
//COpt::counter_up('perm');
- $available_hosts = get_accessible_hosts_by_user($user_data,$perm,PERM_RES_IDS_ARRAY,$nodeid);
- foreach($available_hosts as $id => $hostid){
- $node_data[id2nodeid($hostid)] = id2nodeid($hostid);
+ if(USER_TYPE_SUPER_ADMIN == $user_type){
+ $nodes = DBselect('SELECT nodeid FROM nodes');
+ while($node = DBfetch($nodes)){
+ $node_data[$node['nodeid']] = $node;
+ $node_data[$node['nodeid']]['permission'] = PERM_READ_WRITE;
+ }
}
+ else{
+ $available_hosts = get_accessible_hosts_by_user($user_data,$perm,PERM_RES_DATA_ARRAY,$nodeid);
+ foreach($available_hosts as $id => $host){
+ $nodeid = id2nodeid($host['hostid']);
+ $permission = (isset($node_data[$nodeid]) && ($permission < $node_data[$nodeid]['permission']))?$node_data[$nodeid]['permission']:$host['permission'];
- switch($perm_res){
- case PERM_RES_DATA_ARRAY:
- foreach($node_data as $nodeid => $node){
- $node = DBfetch(DBselect('SELECT * FROM nodes WHERE nodeid='.$nodeid));
+ $node_data[$nodeid]['nodeid'] = $nodeid;
+ $node_data[$nodeid]['permission'] = $permission;
+ }
+ }
+
+ foreach($node_data as $nodeid => $node){
+ switch($perm_res){
+ case PERM_RES_DATA_ARRAY:
+ $db_node = DBfetch(DBselect('SELECT * FROM nodes WHERE nodeid='.$nodeid));
if(!ZBX_DISTRIBUTED){
if(!$node){
- $node = array(
+ $db_node = array(
'nodeid' => $ZBX_LOCALNODEID,
'name' => 'local',
'permission' => PERM_READ_WRITE,
@@ -428,12 +441,13 @@ function get_accessible_nodes_by_user(&$user_data,$perm,$perm_res=null,$nodeid=n
}
}
- $result[$nodeid] = $node;
- }
- break;
- default:
- $result = $node_data;
- break;
+ $result[$nodeid] = array_merge($db_node,$node);
+
+ break;
+ default:
+ $result[$nodeid] = $nodeid;
+ break;
+ }
}
if($perm_res == PERM_RES_STRING_LINE) {
@@ -605,20 +619,28 @@ function get_accessible_nodes_by_rights(&$rights,$user_type,$perm,$perm_res=null
//COpt::counter_up('perm_nodes['.$userid.','.$perm.','.$perm_mode.','.$perm_res.','.$nodeid.']');
//COpt::counter_up('perm');
+//SDI(get_accessible_hosts_by_rights($rights,$user_type,$perm,PERM_RES_DATA_ARRAY,$nodeid));
+ $available_hosts = get_accessible_hosts_by_rights($rights,$user_type,$perm,PERM_RES_DATA_ARRAY,$nodeid);
+ foreach($available_hosts as $id => $host){
+ $nodeid = id2nodeid($host['hostid']);
+ $permission = $host['permission'];
+
+ if(isset($node_data[$nodeid]) && ($permission < $node_data[$nodeid]['permission'])){
+ $permission = $node_data[$nodeid]['permission'];
+ }
- $available_hosts = get_accessible_hosts_by_rights($rights,$user_type,$perm,PERM_RES_IDS_ARRAY,$nodeid);
- foreach($available_hosts as $id => $hostid){
- $node_data[id2nodeid($hostid)] = id2nodeid($hostid);
+ $node_data[$nodeid]['nodeid'] = $nodeid;
+ $node_data[$nodeid]['permission'] = $permission;
}
-
- switch($perm_res){
- case PERM_RES_DATA_ARRAY:
- foreach($node_data as $nodeid => $node){
- $node = DBfetch(DBselect('SELECT * FROM nodes WHERE nodeid='.$nodeid));
+
+ foreach($node_data as $nodeid => $node){
+ switch($perm_res){
+ case PERM_RES_DATA_ARRAY:
+ $db_node = DBfetch(DBselect('SELECT * FROM nodes WHERE nodeid='.$nodeid));
if(!ZBX_DISTRIBUTED){
if(!$node){
- $node = array(
+ $db_node = array(
'nodeid' => $ZBX_LOCALNODEID,
'name' => 'local',
'permission' => PERM_READ_WRITE,
@@ -630,14 +652,15 @@ function get_accessible_nodes_by_rights(&$rights,$user_type,$perm,$perm_res=null
}
}
- $result[$nodeid] = $node;
- }
- break;
- default:
- $result = $node_data;
- break;
- }
+ $result[$nodeid] = array_merge($db_node,$node);
+ break;
+ default:
+ $result[$nodeid] = $nodeid;
+ break;
+ }
+ }
+
if($perm_res == PERM_RES_STRING_LINE) {
if(count($result) == 0)
$result = '-1';
diff --git a/frontends/php/include/profiles.inc.php b/frontends/php/include/profiles.inc.php
index 47f94164..6436916b 100644
--- a/frontends/php/include/profiles.inc.php
+++ b/frontends/php/include/profiles.inc.php
@@ -328,9 +328,26 @@ return $result;
/********* END USER HISTORY **********/
/********** USER FAVORITES ***********/
+/********** USER FAVORITES ***********/
+// Author: Aly
+function get_favorites($favobj,$nodeid=null){
+ $fav = get_multi_profile($favobj);
+
+ if(is_null($nodeid))
+ $nodeid = get_current_nodeid();
+
+ if(!is_array($nodeid))
+ $nodeid = array($nodeid);
+
+ foreach($fav as $key => $favorite){
+ if(!uint_in_array(id2nodeid($favorite['value']),$nodeid)) unset($fav[$key]);
+ }
+
+return $fav;
+}
// Author: Aly
function add2favorites($favobj,$favid,$source=null){
- $favorites = get_multi_profile($favobj);
+ $favorites = get_favorites($favobj);
$favorites[] = array('value' => $favid);
@@ -340,7 +357,7 @@ return $result;
// Author: Aly
function rm4favorites($favobj,$favid,$favcnt=null,$source=null){
- $favorites = get_multi_profile($favobj);
+ $favorites = get_favorites($favobj);
$favcnt = (is_null($favcnt))?0:$favcnt;
if($favid == 0) $favcnt = ZBX_FAVORITES_ALL;
@@ -362,7 +379,7 @@ return $result;
// Author: Aly
function infavorites($favobj,$favid,$source=null){
- $favorites = get_multi_profile($favobj);
+ $favorites = get_favorites($favobj);
if(!empty($favorites)){
foreach($favorites as $id => $favorite){
if(bccomp($favid,$favorite['value']) == 0){
diff --git a/frontends/php/nodes.php b/frontends/php/nodes.php
index 32412cb8..f0a3a10d 100644
--- a/frontends/php/nodes.php
+++ b/frontends/php/nodes.php
@@ -57,63 +57,63 @@ include_once "include/page_header.php";
check_fields($fields);
validate_sort_and_sortorder();
- $accessible_nodes = get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST,PERM_RES_IDS_ARRAY, get_current_nodeid(true));
+ $available_nodes = get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST,PERM_RES_IDS_ARRAY, get_current_nodeid(true));
- if ( 0 == count($accessible_nodes) )
- {
+ if (0 == count($available_nodes) ){
access_deny();
}
- $accessible_nodes = implode(',', $accessible_nodes);
+ $available_nodes = implode(',', $available_nodes);
?>
<?php
- if(isset($_REQUEST['save']))
- {
+ if(isset($_REQUEST['save'])){
$result = false;
- if(isset($_REQUEST['nodeid']))
- { /* update */
+ if(isset($_REQUEST['nodeid'])){
+/* update */
$audit_action = AUDIT_ACTION_UPDATE;
+ DBstart();
$result = update_node($_REQUEST['nodeid'],$_REQUEST['new_nodeid'],
$_REQUEST['name'], $_REQUEST['timezone'], $_REQUEST['ip'], $_REQUEST['port'],
$_REQUEST['slave_history'], $_REQUEST['slave_trends']);
+ $result = DBend($result);
$nodeid = $_REQUEST['nodeid'];
show_messages($result, S_NODE_UPDATED, S_CANNOT_UPDATE_NODE);
}
- else
- { /* add */
+ else{
+/* add */
$audit_action = AUDIT_ACTION_ADD;
- $result = add_node($_REQUEST['new_nodeid'],
+
+ DBstart();
+ $nodeid = add_node($_REQUEST['new_nodeid'],
$_REQUEST['name'], $_REQUEST['timezone'], $_REQUEST['ip'], $_REQUEST['port'],
$_REQUEST['slave_history'], $_REQUEST['slave_trends'], $_REQUEST['node_type']);
- $nodeid = $result;
-
+ $result = DBend($nodeid);
show_messages($result, S_NODE_ADDED, S_CANNOT_ADD_NODE);
}
add_audit_if($result,$audit_action,AUDIT_RESOURCE_NODE,'Node ['.$_REQUEST['name'].'] id ['.$nodeid.']');
- if($result)
- {
+ if($result){
unset($_REQUEST['form']);
}
}
- elseif(isset($_REQUEST['delete']))
- {
+ else if(isset($_REQUEST['delete'])){
$node_data = get_node_by_nodeid($_REQUEST['nodeid']);
+
+ DBstart();
$result = delete_node($_REQUEST['nodeid']);
+ $result = DBend($result);
show_messages($result, S_NODE_DELETED, S_CANNOT_DELETE_NODE);
+
add_audit_if($result,AUDIT_ACTION_DELETE,AUDIT_RESOURCE_NODE,'Node ['.$node_data['name'].'] id ['.$node_data['nodeid'].']');
- if($result)
- {
+ if($result){
unset($_REQUEST['form'],$node_data);
}
}
?>
<?php
- if(isset($_REQUEST["form"]))
- {
+ if(isset($_REQUEST["form"])){
insert_node_form();
}
- else
- {
+ else{
$form = new CForm();
$form->AddItem(new CButton('form',S_NEW_NODE));
show_table_header(S_NODES_BIG,$form);
@@ -129,11 +129,10 @@ include_once "include/page_header.php";
$db_nodes = DBselect('SELECT n.* '.
' FROM nodes n'.
- ' WHERE n.nodeid in ('.$accessible_nodes.') '.
+ ' WHERE n.nodeid in ('.$available_nodes.') '.
order_by('n.nodeid,n.name,n.nodetype,n.timezone,n.ip','n.masterid')
);
- while($row=DBfetch($db_nodes))
- {
+ while($row=DBfetch($db_nodes)){
$node_type = detect_node_type($row);
$node_type_name = node_type2str($node_type);