diff options
Diffstat (limited to 'frontends/php')
-rw-r--r-- | frontends/php/dashboard.php | 1 | ||||
-rw-r--r-- | frontends/php/events.php | 2 | ||||
-rw-r--r-- | frontends/php/include/blocks.inc.php | 15 | ||||
-rw-r--r-- | frontends/php/include/config.inc.php | 2 | ||||
-rw-r--r-- | frontends/php/include/forms.inc.php | 1 | ||||
-rw-r--r-- | frontends/php/include/page_header.php | 24 | ||||
-rw-r--r-- | frontends/php/include/perm.inc.php | 83 | ||||
-rw-r--r-- | frontends/php/include/profiles.inc.php | 23 | ||||
-rw-r--r-- | frontends/php/nodes.php | 51 |
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); |