summaryrefslogtreecommitdiffstats
path: root/frontends/php/include/maps.inc.php
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-04-02 11:44:34 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-04-02 11:44:34 +0000
commit908fda905acd739d8d2376ffb33f7e5a63faf26c (patch)
tree55f16bf5ae2a95e9dbbf6266f17be864f2d2db32 /frontends/php/include/maps.inc.php
parent82e68eabae069748d6691cab742f5fde436a56cb (diff)
downloadzabbix-908fda905acd739d8d2376ffb33f7e5a63faf26c.tar.gz
zabbix-908fda905acd739d8d2376ffb33f7e5a63faf26c.tar.xz
zabbix-908fda905acd739d8d2376ffb33f7e5a63faf26c.zip
- improvements in permissions (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5577 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/maps.inc.php')
-rw-r--r--frontends/php/include/maps.inc.php43
1 files changed, 23 insertions, 20 deletions
diff --git a/frontends/php/include/maps.inc.php b/frontends/php/include/maps.inc.php
index ceb490d0..d598ba76 100644
--- a/frontends/php/include/maps.inc.php
+++ b/frontends/php/include/maps.inc.php
@@ -83,20 +83,18 @@
$result = false;
- if($db_result = DBselect('select * from sysmaps_elements where sysmapid='.$sysmapid.
- ' and '.DBin_node('sysmapid', get_current_nodeid($perm))))
+ if($db_result = DBselect('SELECT * '.
+ ' FROM sysmaps_elements '.
+ ' WHERE sysmapid='.$sysmapid.
+ ' AND '.DBin_node('sysmapid', get_current_nodeid($perm))))
{
$result = true;
-
- $denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT);
+ $available_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY);
- while(($se_data = DBfetch($db_result)) && $result)
- {
- switch($se_data['elementtype'])
- {
+ while(($se_data = DBfetch($db_result)) && $result){
+ switch($se_data['elementtype']){
case SYSMAP_ELEMENT_TYPE_HOST:
- if(uint_in_array($se_data['elementid'],explode(',',$denyed_hosts)))
- {
+ if(!uint_in_array($se_data['elementid'],explode(',',$available_hosts))){
$result = false;
}
break;
@@ -104,21 +102,26 @@
$result &= sysmap_accessiable($se_data['elementid'], PERM_READ_ONLY);
break;
case SYSMAP_ELEMENT_TYPE_TRIGGER:
- if( DBfetch(DBselect('select triggerid from triggers where triggerid='.$se_data['elementid'])) &&
- !DBfetch(DBselect('SELECT DISTINCT t.*'.
+ if(DBfetch(DBselect('SELECT triggerid FROM triggers WHERE triggerid='.$se_data['elementid']))){
+ $sql = 'SELECT DISTINCT t.triggerid'.
' FROM triggers t,items i,functions f'.
' WHERE f.itemid=i.itemid '.
' AND t.triggerid=f.triggerid'.
- ' AND i.hostid NOT IN ('.$denyed_hosts.') '.
- ' AND t.triggerid='.$se_data['elementid'])))
- {
- $result = false;
- }
+ ' AND i.hostid NOT IN ('.$available_hosts.') '.
+ ' AND t.triggerid='.$se_data['elementid'];
+ if(DBfetch(DBselect($sql,1))){
+ $result = false;
+ }
+ }
break;
case SYSMAP_ELEMENT_TYPE_HOST_GROUP:
- if( DBfetch(DBselect('SELECT groupid FROM groups WHERE groupid='.$se_data['elementid'])) &&
- uint_in_array($se_data['elementid'],get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT, PERM_RES_IDS_ARRAY)))
- {
+ $available_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY, null, PERM_RES_IDS_ARRAY);
+
+ $sql = 'SELECT groupid '.
+ ' FROM groups '.
+ ' WHERE groupid='.$se_data['elementid'];
+
+ if(DBfetch(DBselect($sql,1)) && !uint_in_array($se_data['elementid'],$available_groups)){
$result = false;
}
break;