diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-02-01 13:58:10 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-02-01 13:58:10 +0000 |
| commit | 6615cce7aaf92edabdcc33d9db91ff01c4fdbe0a (patch) | |
| tree | a9434cd259b71f620727795613d5af3fd798b3e6 /frontends/php/include | |
| parent | 91da2b8621634e300ce35b00230ec30f9e5aadb5 (diff) | |
| download | zabbix-6615cce7aaf92edabdcc33d9db91ff01c4fdbe0a.tar.gz zabbix-6615cce7aaf92edabdcc33d9db91ff01c4fdbe0a.tar.xz zabbix-6615cce7aaf92edabdcc33d9db91ff01c4fdbe0a.zip | |
- [HAN-2] merged rev.5301:5304 of 1.4/ (Artem) [improved speed on coping triggers to host]
- [DEV-103] fixes to users group jsmenu (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5305 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include')
| -rw-r--r-- | frontends/php/include/perm.inc.php | 6 | ||||
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 102 | ||||
| -rw-r--r-- | frontends/php/include/users.inc.php | 10 |
3 files changed, 74 insertions, 44 deletions
diff --git a/frontends/php/include/perm.inc.php b/frontends/php/include/perm.inc.php index 10522455..46afb302 100644 --- a/frontends/php/include/perm.inc.php +++ b/frontends/php/include/perm.inc.php @@ -399,8 +399,10 @@ COpt::counter_up('perm'); $do_break = true; - if(is_array($nodeid) && !uint_in_array($node_data['nodeid'],$nodeid)) continue; - else if(!is_array($nodeid) && (bccomp($node_data['nodeid'] ,$nodeid) != 0)) continue; + if(isset($nodeid) && is_array($nodeid)){ + if(!uint_in_array($node_data['nodeid'],$nodeid)) continue; + } + else if(isset($nodeid) && (bccomp($node_data['nodeid'] ,$nodeid) != 0)) continue; } else { diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index d0b8dcf2..e0587c19 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -353,34 +353,18 @@ * retrive selection of triggers by hostid * * Author: - * Eugene Grigorjev (eugene.grigorjev@zabbix.com) + * Aly * * Comments: * */ - function get_triggers_by_hostid($hostid, $show_mixed = "yes") - { - $db_triggers = DBselect("select distinct t.* from triggers t, functions f, items i". - " where i.hostid=$hostid and f.itemid=i.itemid and f.triggerid=t.triggerid"); - - if($show_mixed == "yes") - return $db_triggers; - - $triggers = array(); - while($db_trigger = DBfetch($db_triggers)) - { - $db_hosts = get_hosts_by_triggerid($db_trigger["triggerid"]); - if(DBfetch($db_hosts)) - { - array_push($triggers,$db_trigger["triggerid"]); - } - } - $sql = "select distinct * from triggers where triggerid=0"; - foreach($triggers as $triggerid) - { - $sql .= " or triggerid=$triggerid"; - } - return DBselect($sql); + function get_triggers_by_hostid($hostid){ + $db_triggers = DBselect('SELECT DISTINCT t.* '. + ' FROM triggers t, functions f, items i '. + ' WHERE i.hostid='.$hostid. + ' AND f.itemid=i.itemid '. + ' AND f.triggerid=t.triggerid'); + return $db_triggers; } function get_triggers_by_templateid($triggerid) @@ -790,17 +774,28 @@ get_trigger_dependences_by_triggerid($triggerid), $hostid); - $host_triggers = get_triggers_by_hostid($hostid, "no"); - while($host_trigger = DBfetch($host_triggers)) - { - if($host_trigger["templateid"] != 0) continue; - if(cmp_triggers($triggerid, $host_trigger["triggerid"])) continue; - + $sql='SELECT t2.triggerid, t2.expression '. + ' FROM triggers t2, functions f1, functions f2, items i1, items i2 '. + ' WHERE f1.triggerid='.$triggerid. + ' AND i1.itemid=f1.itemid '. + ' AND f2.function=f1.function '. + ' AND f2.parameter=f1.parameter '. + ' AND i2.itemid=f2.itemid '. + ' AND i2.key_=i1.key_ '. + ' AND i2.hostid='.$hostid. + ' AND t2.triggerid=f2.triggerid '. + ' AND t2.templateid=0 '; + + $host_triggers = DBSelect($sql); + while($host_trigger = DBfetch($host_triggers)){ + if(cmp_triggers_exressions($triggerid, $host_trigger["triggerid"])) continue; // link not linked trigger with same expression + return update_trigger( $host_trigger["triggerid"], NULL, // expression $trigger["description"], + $trigger["type"], $trigger["priority"], NULL, // status $trigger["comments"], @@ -809,14 +804,13 @@ $copy_mode ? 0 : $triggerid); } - $newtriggerid=get_dbid("triggers","triggerid"); + $newtriggerid=get_dbid('triggers','triggerid'); - $result = DBexecute("insert into triggers". - " (triggerid,description,type,priority,status,comments,url,value,expression,templateid)". - " values ($newtriggerid,".zbx_dbstr($trigger['description']).','.$trigger['type'].','.$trigger['priority'].','. - $trigger['status'].','.zbx_dbstr($trigger['comments']).','. - zbx_dbstr($trigger["url"]).",2,'{???:???}',". - ($copy_mode ? 0 : $triggerid).")"); + $result = DBexecute('INSERT INTO triggers'. + ' (triggerid,description,type,priority,status,comments,url,value,expression,templateid)'. + ' VALUES ('.$newtriggerid.','.zbx_dbstr($trigger['description']).','.$trigger['type'].','.$trigger['priority'].','. + $trigger["status"].','.zbx_dbstr($trigger["comments"]).','. + zbx_dbstr($trigger["url"]).",2,'{???:???}',".($copy_mode ? 0 : $triggerid).')'); if(!$result) return $result; @@ -1555,12 +1549,44 @@ } return TRUE; } + + /* + * Function: cmp_triggers_exressions + * + * Description: + * Warning: function compares ONLY expressions,there is no check on functions and items + * + * Author: + * Aly + * + * Comments: + * + */ + function cmp_triggers_exressions($triggerid1, $triggerid2) // compare EXPRESSION !!! + { + $trig1 = get_trigger_by_triggerid($triggerid1); + $trig2 = get_trigger_by_triggerid($triggerid2); + + $trig_fnc1 = get_functions_by_triggerid($triggerid1); + $expr1 = $trig1["expression"]; + while($fnc1 = DBfetch($trig_fnc1)){ + $trig_fnc2 = get_functions_by_triggerid($triggerid2); + while($fnc2 = DBfetch($trig_fnc2)){ + $expr1 = str_replace( + "{".$fnc1["functionid"]."}", + "{".$fnc2["functionid"]."}", + $expr1); + break; + } + } + return strcmp($expr1,$trig2["expression"]); + } /* * Function: cmp_triggers * * Description: - * compate triggers by expression + * compare triggers by expression * * Author: * Eugene Grigorjev (eugene.grigorjev@zabbix.com) diff --git a/frontends/php/include/users.inc.php b/frontends/php/include/users.inc.php index 4c2e8ae1..4e83a47d 100644 --- a/frontends/php/include/users.inc.php +++ b/frontends/php/include/users.inc.php @@ -412,11 +412,11 @@ { while($tmp = DBFetch($res)) $grp_list.= "'".$tmp['usrgrpid']."'".','; } - $grp_list=rtrim($grp_list,',').')'; + $grp_list.="'0')"; $res = DBselect('SELECT DISTINCT g.usrgrpid, g.name, g.gui_access, g.users_status'. ' FROM usrgrp g'. - ' WHERE g.usrgrpid NOT IN'.$grp_list. + ' WHERE g.usrgrpid NOT IN '.$grp_list. ' AND '.DBin_node('g.usrgrpid', get_current_nodeid(false)). ' ORDER BY g.name'); @@ -481,7 +481,8 @@ { while($tmp = DBFetch($res)) $grp_list.= "'".$tmp['usrgrpid']."'".','; } - $grp_list=rtrim($grp_list,',').')'; + $grp_list.="'0')"; +// $grp_list=rtrim($grp_list,',').')'; $res = DBselect('SELECT DISTINCT g.usrgrpid, g.name'. ' FROM usrgrp g'. @@ -532,7 +533,8 @@ { while($tmp = DBFetch($res)) $grp_list.= "'".$tmp['usrgrpid']."'".','; } - $grp_list=rtrim($grp_list,',').')'; + $grp_list.="'0')"; +// $grp_list=rtrim($grp_list,',').')'; $res = DBselect('SELECT DISTINCT g.usrgrpid, g.name'. ' FROM usrgrp g'. |
