diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-03-05 13:34:23 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-03-05 13:34:23 +0000 |
| commit | f43e1b47aad7e6cc56213417e43909d7dd4a2e7e (patch) | |
| tree | bd2773a3b4a9926ffc82a9601b9b37e2e5de1d49 /frontends/php/include | |
| parent | 793897861b7e8218f1a74e718e8e4aebfed64471 (diff) | |
- added frontends/php/include/triggers.inc.php (Alexei)
- added frontends/php/include/graphs.inc.php (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@1689 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include')
| -rw-r--r-- | frontends/php/include/config.inc.php | 468 | ||||
| -rw-r--r-- | frontends/php/include/graphs.inc.php | 120 | ||||
| -rw-r--r-- | frontends/php/include/items.inc.php | 25 | ||||
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 341 |
4 files changed, 488 insertions, 466 deletions
diff --git a/frontends/php/include/config.inc.php b/frontends/php/include/config.inc.php index e7c1e12f..8b49352f 100644 --- a/frontends/php/include/config.inc.php +++ b/frontends/php/include/config.inc.php @@ -31,8 +31,10 @@ include_once "include/audit.inc.php"; include_once "include/users.inc.php"; + include_once "include/graphs.inc.php"; include_once "include/items.inc.php"; include_once "include/screens.inc.php"; + include_once "include/triggers.inc.php"; function getmicrotime() { @@ -534,22 +536,6 @@ } */ - function check_right_on_trigger($permission,$triggerid) - { - $sql="select distinct h.hostid from functions f,items i,hosts h -where h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=$triggerid"; - $result=DBselect($sql); - $ok=0; - while($row=DBfetch($result)) - { - if(check_right("Host",$permission,$row["hostid"])) - { - $ok=1; - } - } - return $ok; - } - function get_scope_description($scope) { $desc="Unknown"; @@ -685,41 +671,6 @@ where h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=$triggerid"; return $result; } - - function get_graphitem_by_gitemid($gitemid) - { - global $ERROR_MSG; - - $sql="select * from graphs_items where gitemid=$gitemid"; - $result=DBselect($sql); - if(DBnum_rows($result) == 1) - { - return DBfetch($result); - } - else - { - $ERROR_MSG="No graph item with gitemid=[$gitemid]"; - } - return $result; - } - - function get_graph_by_graphid($graphid) - { - global $ERROR_MSG; - - $sql="select * from graphs where graphid=$graphid"; - $result=DBselect($sql); - if(DBnum_rows($result) == 1) - { - return DBfetch($result); - } - else - { - $ERROR_MSG="No graph with graphid=[$graphid]"; - } - return $result; - } - function get_image_by_name($imagetype,$name) { $sql="select * from images where imagetype=$imagetype and name='$name'"; @@ -751,23 +702,6 @@ where h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=$triggerid"; return $item; } - function get_trigger_by_triggerid($triggerid) - { - global $ERROR_MSG; - - $sql="select triggerid,expression,description,status,priority,lastchange,dep_level,comments,url,value from triggers where triggerid=$triggerid"; - $result=DBselect($sql); - if(DBnum_rows($result) == 1) - { - return DBfetch($result); - } - else - { - $ERROR_MSG="No trigger with triggerid=[$triggerid]"; - } - return $trigger; - } - function select_config() { global $ERROR_MSG; @@ -1565,76 +1499,6 @@ echo "</head>"; return $exp; } - function update_trigger_comments($triggerid,$comments) - { - global $ERROR_MSG; - - if(!check_right("Trigger comment","U",$triggerid)) - { - $ERROR_MSG="Insufficient permissions"; - return 0; - } - - $comments=addslashes($comments); - $sql="update triggers set comments='$comments' where triggerid=$triggerid"; - return DBexecute($sql); - } - - # Update Trigger status - - function update_trigger_status($triggerid,$status) - { - global $ERROR_MSG; - - if(!check_right_on_trigger("U",$triggerid)) - { - $ERROR_MSG="Insufficient permissions"; - return 0; - } - add_alarm($triggerid,2); - $sql="update triggers set status=$status where triggerid=$triggerid"; - return DBexecute($sql); - } - - - # "Processor load on %s is 5" to "Processor load on www.sf.net is 5" - function expand_trigger_description_simple($triggerid) - { - $sql="select distinct t.description,h.host 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"; -// echo $sql; - $result=DBselect($sql); - $row=DBfetch($result); - -// $description=str_replace("%s",$row["host"],$row["description"]); - - $search=array("{HOSTNAME}"); - $replace=array($row["host"]); -// $description = str_replace($search, $replace,$row["description"]); - $description = str_replace("{HOSTNAME}", $row["host"],$row["description"]); - - return $description; - } - - # "Processor load on %s is 5" to "Processor load on www.sf.net is 5" - function expand_trigger_description($triggerid) - { - $description=expand_trigger_description_simple($triggerid); - $description=stripslashes(htmlspecialchars($description)); - - return $description; - } - - function update_trigger_value_to_unknown_by_hostid($hostid) - { - $sql="select distinct t.triggerid from hosts h,items i,triggers t,functions f where f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid and h.hostid=$hostid"; - $result=DBselect($sql); - while($row=DBfetch($result)) - { - $sql="update triggers set value=2 where triggerid=".$row["triggerid"]; - DBexecute($sql); - } - } - # Update Host status function update_host_status($hostid,$status) @@ -1925,26 +1789,6 @@ echo "</head>"; return add_action( $triggerid, $userid, $good, $delay, $subject, $message, $scope, $severity, $recipient, $usrgrpid); } - function delete_graphs_item($gitemid) - { - $sql="delete from graphs_items where gitemid=$gitemid"; - return DBexecute($sql); - } - - # Delete Graph - - function delete_graph($graphid) - { - $sql="delete from graphs_items where graphid=$graphid"; - $result=DBexecute($sql); - if(!$result) - { - return $result; - } - $sql="delete from graphs where graphid=$graphid"; - return DBexecute($sql); - } - # Delete System Map function delete_sysmap( $sysmapid ) @@ -2024,168 +1868,6 @@ echo "</head>"; return DBexecute($sql); } - function delete_trigger_dependency($triggerid_down,$triggerid_up) - { -// Why this was here? -// $sql="select count(*) from trigger_depends where triggerid_down=$triggerid_up and triggerid_up=$triggerid_down"; -// $result=DBexecute($sql); -// if(DBget_field($result,0,0)>0) -// { -// return FALSE; -// } - -// It was wrong - was deleting all dependencies -// $sql="select triggerid_down,triggerid_up from trigger_depends where triggerid_up=$triggerid_up or triggerid_down=$triggerid_down"; -// $result=DBexecute($sql); -// for($i=0;$i<DBnum_rows($result);$i++) -// { -// $down=DBget_field($result,$i,0); -// $up=DBget_field($result,$i,1); -// $sql="delete from trigger_depends where triggerid_up=$up and triggerid_down=$down"; -// DBexecute($sql); -// $sql="update triggers set dep_level=dep_level-1 where triggerid=$up"; -// DBexecute($sql); -// } - - $sql="select triggerid_down,triggerid_up from trigger_depends where triggerid_up=$triggerid_up and triggerid_down=$triggerid_down"; - $result=DBexecute($sql); - for($i=0;$i<DBnum_rows($result);$i++) - { - $down=DBget_field($result,$i,0); - $up=DBget_field($result,$i,1); - $sql="update triggers set dep_level=dep_level-1 where triggerid=$up"; - DBexecute($sql); - } - - $sql="delete from trigger_depends where triggerid_up=$triggerid_up and triggerid_down=$triggerid_down"; - DBexecute($sql); - - return TRUE; - } - - function insert_dependency($triggerid_down,$triggerid_up) - { - $sql="insert into trigger_depends (triggerid_down,triggerid_up) values ($triggerid_down,$triggerid_up)"; - $result=DBexecute($sql); - if(!$result) - { - return $result; - } - $sql="update triggers set dep_level=dep_level+1 where triggerid=$triggerid_up"; - $result=DBexecute($sql); - return $result; - } - - // If 1 depends on 2, and 2 depends on 3, then add dependency 1->3 - function add_additional_dependencies($triggerid_down,$triggerid_up) - { - $sql="select triggerid_down from trigger_depends where triggerid_up=$triggerid_down"; - $result=DBselect($sql); - for($i=0;$i<DBnum_rows($result);$i++) - { - $triggerid=DBget_field($result,$i,0); - insert_dependency($triggerid,$triggerid_up); - add_additional_dependencies($triggerid,$triggerid_up); - } - $sql="select triggerid_up from trigger_depends where triggerid_down=$triggerid_up"; - $result=DBselect($sql); - for($i=0;$i<DBnum_rows($result);$i++) - { - $triggerid=DBget_field($result,$i,0); - insert_dependency($triggerid_down,$triggerid); - add_additional_dependencies($triggerid_down,$triggerid); - } - } - - function add_trigger_dependency($triggerid,$depid) - { - $result=insert_dependency($triggerid,$depid);; - if(!$result) - { - return $result; - } - add_additional_dependencies($triggerid,$depid); - return $result; - } - - function delete_function_by_triggerid($triggerid) - { - $sql="delete from functions where triggerid=$triggerid"; - return DBexecute($sql); - } - - function delete_actions_by_triggerid($triggerid) - { - $sql="delete from actions where triggerid=$triggerid and scope=0"; - return DBexecute($sql); - } - - function delete_alarms_by_triggerid($triggerid) - { - $sql="delete from alarms where triggerid=$triggerid"; - return DBexecute($sql); - } - - # Delete Function and Trigger definitions by itemid - - function delete_triggers_by_itemid($itemid) - { - $sql="select triggerid from functions where itemid=$itemid"; - $result=DBselect($sql); - for($i=0;$i<DBnum_rows($result);$i++) - { - if(!delete_trigger(DBget_field($result,$i,0))) - { - return FALSE; - } - } - $sql="delete from functions where itemid=$itemid"; - return DBexecute($sql); - } - - # Delete Service definitions by triggerid - - function delete_services_by_triggerid($triggerid) - { - $sql="select serviceid from services where triggerid=$triggerid"; - $result=DBselect($sql); - for($i=0;$i<DBnum_rows($result);$i++) - { - delete_service(DBget_field($result,$i,0)); - } - return TRUE; - } - - # Delete Item definition - - function delete_item($itemid) - { -// $sql="select hostid from items where itemid=$itemid"; -// $result=DBselect($sql); -// $hostid=DBget_field($result,0,0); -// delete_sysmaps_host_by_hostid($hostid); - - $result=delete_triggers_by_itemid($itemid); - if(!$result) - { - return $result; - } - $result=delete_trends_by_itemid($itemid); - $result=delete_history_by_itemid($itemid); - $sql="delete from graphs_items where itemid=$itemid"; - if(!$result) - { - return $result; - } - $result=DBexecute($sql); - if(!$result) - { - return $result; - } - $sql="delete from items where itemid=$itemid"; - return DBexecute($sql); - } - # Add alarm function add_alarm($triggerid,$value) @@ -2226,123 +1908,6 @@ echo "</head>"; } } - # Add Trigger definition - - function add_trigger($expression,$description,$priority,$status,$comments,$url) - { - global $ERROR_MSG; - -// if(!check_right("Trigger","A",0)) -// { -// $ERROR_MSG="Insufficient permissions"; -// return 0; -// } - -# $description=addslashes($description); - $sql="insert into triggers (description,priority,status,comments,url,value) values ('$description',$priority,$status,'$comments','$url',2)"; -# echo $sql,"<br>"; - $result=DBexecute($sql); - if(!$result) - { - return $result; - } - - $triggerid=DBinsert_id($result,"triggers","triggerid"); -# echo $triggerid,"<br>"; - add_alarm($triggerid,2); - - $expression=implode_exp($expression,$triggerid); - $sql="update triggers set expression='$expression' where triggerid=$triggerid"; -# echo $sql,"<br>"; - $triggerid=DBexecute($sql); - reset_items_nextcheck($triggerid); - return $triggerid; - } - - # Delete Trigger definition - - function delete_trigger($triggerid) - { - global $ERROR_MSG; - - $sql="select count(*) from trigger_depends where triggerid_down=$triggerid or triggerid_up=$triggerid"; - $result=DBexecute($sql); - if(DBget_field($result,0,0)>0) - { - $ERROR_MSG="Delete dependencies first"; - return FALSE; - } - - $result=delete_function_by_triggerid($triggerid); - if(!$result) - { - return $result; - } - $result=delete_alarms_by_triggerid($triggerid); - if(!$result) - { - return $result; - } - $result=delete_actions_by_triggerid($triggerid); - if(!$result) - { - return $result; - } - $result=delete_services_by_triggerid($triggerid); - if(!$result) - { - return $result; - } - - $sql="update sysmaps_links set triggerid=NULL where triggerid=$triggerid"; - DBexecute($sql); - - $sql="delete from triggers where triggerid=$triggerid"; - return DBexecute($sql); - } - - # Update Trigger definition - - function update_trigger($triggerid,$expression,$description,$priority,$status,$comments,$url) - { - global $ERROR_MSG; - - if(!check_right_on_trigger("U",$triggerid)) - { - $ERROR_MSG="Insufficient permissions"; - return 0; - } - - $result=delete_function_by_triggerid($triggerid); - if(!$result) - { - return $result; - } - - $expression=implode_exp($expression,$triggerid); - add_alarm($triggerid,2); -// $sql="update triggers set expression='$expression',description='$description',priority=$priority,status=$status,comments='$comments',url='$url' where triggerid=$triggerid"; - reset_items_nextcheck($triggerid); - $sql="update triggers set expression='$expression',description='$description',priority=$priority,status=$status,comments='$comments',url='$url',value=2 where triggerid=$triggerid"; - return DBexecute($sql); - } - - # Update Graph - - function update_graph($graphid,$name,$width,$height,$yaxistype,$yaxismin,$yaxismax) - { - global $ERROR_MSG; - - if(!check_right("Graph","U",0)) - { - $ERROR_MSG="Insufficient permissions"; - return 0; - } - - $sql="update graphs set name='$name',width=$width,height=$height,yaxistype=$yaxistype,yaxismin=$yaxismin,yaxismax=$yaxismax where graphid=$graphid"; - return DBexecute($sql); - } - # Update System Map function update_sysmap($sysmapid,$name,$width,$height,$background,$label_type) @@ -2359,35 +1924,6 @@ echo "</head>"; return DBexecute($sql); } - # Add Graph - - function add_graph($name,$width,$height,$yaxistype,$yaxismin,$yaxismax) - { - global $ERROR_MSG; - - if(!check_right("Graph","A",0)) - { - $ERROR_MSG="Insufficient permissions"; - return 0; - } - - $sql="insert into graphs (name,width,height,yaxistype,yaxismin,yaxismax) values ('$name',$width,$height,$yaxistype,$yaxismin,$yaxismax)"; - $result=DBexecute($sql); - return DBinsert_id($result,"graphs","graphid"); - } - - function update_graph_item($gitemid,$itemid,$color,$drawtype,$sortorder) - { - $sql="update graphs_items set itemid=$itemid,color='$color',drawtype=$drawtype,sortorder=$sortorder where gitemid=$gitemid"; - return DBexecute($sql); - } - - function add_item_to_graph($graphid,$itemid,$color,$drawtype,$sortorder) - { - $sql="insert into graphs_items (graphid,itemid,color,drawtype,sortorder) values ($graphid,$itemid,'$color',$drawtype,$sortorder)"; - return DBexecute($sql); - } - # Add System Map function add_sysmap($name,$width,$height,$background,$label_type) diff --git a/frontends/php/include/graphs.inc.php b/frontends/php/include/graphs.inc.php new file mode 100644 index 00000000..0c2da7dd --- /dev/null +++ b/frontends/php/include/graphs.inc.php @@ -0,0 +1,120 @@ +<?php +/* +** Zabbix +** Copyright (C) 2000,2001,2002,2003,2004 Alexei Vladishev +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +**/ +?> +<?php + # Add Graph + + function add_graph($name,$width,$height,$yaxistype,$yaxismin,$yaxismax) + { + global $ERROR_MSG; + + if(!check_right("Graph","A",0)) + { + $ERROR_MSG="Insufficient permissions"; + return 0; + } + + $sql="insert into graphs (name,width,height,yaxistype,yaxismin,yaxismax) values ('$name',$width,$height,$yaxistype,$yaxismin,$yaxismax)"; + $result=DBexecute($sql); + return DBinsert_id($result,"graphs","graphid"); + } + + function update_graph_item($gitemid,$itemid,$color,$drawtype,$sortorder) + { + $sql="update graphs_items set itemid=$itemid,color='$color',drawtype=$drawtype,sortorder=$sortorder where gitemid=$gitemid"; + return DBexecute($sql); + } + + function add_item_to_graph($graphid,$itemid,$color,$drawtype,$sortorder) + { + $sql="insert into graphs_items (graphid,itemid,color,drawtype,sortorder) values ($graphid,$itemid,'$color',$drawtype,$sortorder)"; + return DBexecute($sql); + } + + # Update Graph + + function update_graph($graphid,$name,$width,$height,$yaxistype,$yaxismin,$yaxismax) + { + global $ERROR_MSG; + + if(!check_right("Graph","U",0)) + { + $ERROR_MSG="Insufficient permissions"; + return 0; + } + + $sql="update graphs set name='$name',width=$width,height=$height,yaxistype=$yaxistype,yaxismin=$yaxismin,yaxismax=$yaxismax where graphid=$graphid"; + return DBexecute($sql); + } + + function delete_graphs_item($gitemid) + { + $sql="delete from graphs_items where gitemid=$gitemid"; + return DBexecute($sql); + } + + # Delete Graph + + function delete_graph($graphid) + { + $sql="delete from graphs_items where graphid=$graphid"; + $result=DBexecute($sql); + if(!$result) + { + return $result; + } + $sql="delete from graphs where graphid=$graphid"; + return DBexecute($sql); + } + + function get_graphitem_by_gitemid($gitemid) + { + global $ERROR_MSG; + + $sql="select * from graphs_items where gitemid=$gitemid"; + $result=DBselect($sql); + if(DBnum_rows($result) == 1) + { + return DBfetch($result); + } + else + { + $ERROR_MSG="No graph item with gitemid=[$gitemid]"; + } + return $result; + } + + function get_graph_by_graphid($graphid) + { + global $ERROR_MSG; + + $sql="select * from graphs where graphid=$graphid"; + $result=DBselect($sql); + if(DBnum_rows($result) == 1) + { + return DBfetch($result); + } + else + { + $ERROR_MSG="No graph with graphid=[$graphid]"; + } + return $result; + } +?> diff --git a/frontends/php/include/items.inc.php b/frontends/php/include/items.inc.php index fc955f19..16b74f14 100644 --- a/frontends/php/include/items.inc.php +++ b/frontends/php/include/items.inc.php @@ -228,4 +228,29 @@ } return $item; } + + # Delete Item definition + + function delete_item($itemid) + { + $result=delete_triggers_by_itemid($itemid); + if(!$result) + { + return $result; + } + $result=delete_trends_by_itemid($itemid); + $result=delete_history_by_itemid($itemid); + $sql="delete from graphs_items where itemid=$itemid"; + if(!$result) + { + return $result; + } + $result=DBexecute($sql); + if(!$result) + { + return $result; + } + $sql="delete from items where itemid=$itemid"; + return DBexecute($sql); + } ?> diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php new file mode 100644 index 00000000..b02b86b7 --- /dev/null +++ b/frontends/php/include/triggers.inc.php @@ -0,0 +1,341 @@ +<?php +/* +** Zabbix +** Copyright (C) 2000,2001,2002,2003,2004 Alexei Vladishev +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +**/ +?> +<?php + function update_trigger_comments($triggerid,$comments) + { + global $ERROR_MSG; + + if(!check_right("Trigger comment","U",$triggerid)) + { + $ERROR_MSG="Insufficient permissions"; + return 0; + } + + $comments=addslashes($comments); + $sql="update triggers set comments='$comments' where triggerid=$triggerid"; + return DBexecute($sql); + } + + # Update Trigger status + + function update_trigger_status($triggerid,$status) + { + global $ERROR_MSG; + + if(!check_right_on_trigger("U",$triggerid)) + { + $ERROR_MSG="Insufficient permissions"; + return 0; + } + add_alarm($triggerid,2); + $sql="update triggers set status=$status where triggerid=$triggerid"; + return DBexecute($sql); + } + + # "Processor load on %s is 5" to "Processor load on www.sf.net is 5" + function expand_trigger_description_simple($triggerid) + { + $sql="select distinct t.description,h.host 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"; +// echo $sql; + $result=DBselect($sql); + $row=DBfetch($result); + +// $description=str_replace("%s",$row["host"],$row["description"]); + + $search=array("{HOSTNAME}"); + $replace=array($row["host"]); +// $description = str_replace($search, $replace,$row["description"]); + $description = str_replace("{HOSTNAME}", $row["host"],$row["description"]); + + return $description; + } + + # "Processor load on %s is 5" to "Processor load on www.sf.net is 5" + function expand_trigger_description($triggerid) + { + $description=expand_trigger_description_simple($triggerid); + $description=stripslashes(htmlspecialchars($description)); + + return $description; + } + + function update_trigger_value_to_unknown_by_hostid($hostid) + { + $sql="select distinct t.triggerid from hosts h,items i,triggers t,functions f where f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid and h.hostid=$hostid"; + $result=DBselect($sql); + while($row=DBfetch($result)) + { + $sql="update triggers set value=2 where triggerid=".$row["triggerid"]; + DBexecute($sql); + } + } + + function add_trigger_dependency($triggerid,$depid) + { + $result=insert_dependency($triggerid,$depid);; + if(!$result) + { + return $result; + } + add_additional_dependencies($triggerid,$depid); + return $result; + } + + # Add Trigger definition + + function add_trigger($expression,$description,$priority,$status,$comments,$url) + { + global $ERROR_MSG; + +// if(!check_right("Trigger","A",0)) +// { +// $ERROR_MSG="Insufficient permissions"; +// return 0; +// } + +# $description=addslashes($description); + $sql="insert into triggers (description,priority,status,comments,url,value) values ('$description',$priority,$status,'$comments','$url',2)"; +# echo $sql,"<br>"; + $result=DBexecute($sql); + if(!$result) + { + return $result; + } + + $triggerid=DBinsert_id($result,"triggers","triggerid"); +# echo $triggerid,"<br>"; + add_alarm($triggerid,2); + + $expression=implode_exp($expression,$triggerid); + $sql="update triggers set expression='$expression' where triggerid=$triggerid"; +# echo $sql,"<br>"; + $triggerid=DBexecute($sql); + reset_items_nextcheck($triggerid); + return $triggerid; + } + + # Delete Trigger definition + + function delete_trigger($triggerid) + { + global $ERROR_MSG; + + $sql="select count(*) from trigger_depends where triggerid_down=$triggerid or triggerid_up=$triggerid"; + $result=DBexecute($sql); + if(DBget_field($result,0,0)>0) + { + $ERROR_MSG="Delete dependencies first"; + return FALSE; + } + + $result=delete_function_by_triggerid($triggerid); + if(!$result) + { + return $result; + } + $result=delete_alarms_by_triggerid($triggerid); + if(!$result) + { + return $result; + } + $result=delete_actions_by_triggerid($triggerid); + if(!$result) + { + return $result; + } + $result=delete_services_by_triggerid($triggerid); + if(!$result) + { + return $result; + } + + $sql="update sysmaps_links set triggerid=NULL where triggerid=$triggerid"; + DBexecute($sql); + + $sql="delete from triggers where triggerid=$triggerid"; + return DBexecute($sql); + } + + # Update Trigger definition + + function update_trigger($triggerid,$expression,$description,$priority,$status,$comments,$url) + { + global $ERROR_MSG; + + if(!check_right_on_trigger("U",$triggerid)) + { + $ERROR_MSG="Insufficient permissions"; + return 0; + } + + $result=delete_function_by_triggerid($triggerid); + if(!$result) + { + return $result; + } + + $expression=implode_exp($expression,$triggerid); + add_alarm($triggerid,2); +// $sql="update triggers set expression='$expression',description='$description',priority=$priority,status=$status,comments='$comments',url='$url' where triggerid=$triggerid"; + reset_items_nextcheck($triggerid); + $sql="update triggers set expression='$expression',description='$description',priority=$priority,status=$status,comments='$comments',url='$url',value=2 where triggerid=$triggerid"; + return DBexecute($sql); + } + + function check_right_on_trigger($permission,$triggerid) + { + $sql="select distinct h.hostid from functions f,items i,hosts h +where h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=$triggerid"; + $result=DBselect($sql); + $ok=0; + while($row=DBfetch($result)) + { + if(check_right("Host",$permission,$row["hostid"])) + { + $ok=1; + } + } + return $ok; + } + + function get_trigger_by_triggerid($triggerid) + { + global $ERROR_MSG; + + $sql="select triggerid,expression,description,status,priority,lastchange,dep_level,comments,url,value from triggers where triggerid=$triggerid"; + $result=DBselect($sql); + if(DBnum_rows($result) == 1) + { + return DBfetch($result); + } + else + { + $ERROR_MSG="No trigger with triggerid=[$triggerid]"; + } + return $trigger; + } + + function delete_trigger_dependency($triggerid_down,$triggerid_up) + { +// Why this was here? +// $sql="select count(*) from trigger_depends where triggerid_down=$triggerid_up and triggerid_up=$triggerid_down"; +// $result=DBexecute($sql); +// if(DBget_field($result,0,0)>0) +// { +// return FALSE; +// } + + $sql="select triggerid_down,triggerid_up from trigger_depends where triggerid_up=$triggerid_up and triggerid_down=$triggerid_down"; + $result=DBexecute($sql); + for($i=0;$i<DBnum_rows($result);$i++) + { + $down=DBget_field($result,$i,0); + $up=DBget_field($result,$i,1); + $sql="update triggers set dep_level=dep_level-1 where triggerid=$up"; + DBexecute($sql); + } + + $sql="delete from trigger_depends where triggerid_up=$triggerid_up and triggerid_down=$triggerid_down"; + DBexecute($sql); + + return TRUE; + } + + function insert_dependency($triggerid_down,$triggerid_up) + { + $sql="insert into trigger_depends (triggerid_down,triggerid_up) values ($triggerid_down,$triggerid_up)"; + $result=DBexecute($sql); + if(!$result) + { + return $result; + } + $sql="update triggers set dep_level=dep_level+1 where triggerid=$triggerid_up"; + $result=DBexecute($sql); + return $result; + } + + // If 1 depends on 2, and 2 depends on 3, then add dependency 1->3 + function add_additional_dependencies($triggerid_down,$triggerid_up) + { + $sql="select triggerid_down from trigger_depends where triggerid_up=$triggerid_down"; + $result=DBselect($sql); + for($i=0;$i<DBnum_rows($result);$i++) + { + $triggerid=DBget_field($result,$i,0); + insert_dependency($triggerid,$triggerid_up); + add_additional_dependencies($triggerid,$triggerid_up); + } + $sql="select triggerid_up from trigger_depends where triggerid_down=$triggerid_up"; + $result=DBselect($sql); + for($i=0;$i<DBnum_rows($result);$i++) + { + $triggerid=DBget_field($result,$i,0); + insert_dependency($triggerid_down,$triggerid); + add_additional_dependencies($triggerid_down,$triggerid); + } + } + + function delete_function_by_triggerid($triggerid) + { + $sql="delete from functions where triggerid=$triggerid"; + return DBexecute($sql); + } + + function delete_actions_by_triggerid($triggerid) + { + $sql="delete from actions where triggerid=$triggerid and scope=0"; + return DBexecute($sql); + } + + function delete_alarms_by_triggerid($triggerid) + { + $sql="delete from alarms where triggerid=$triggerid"; + return DBexecute($sql); + } + + function delete_triggers_by_itemid($itemid) + { + $sql="select triggerid from functions where itemid=$itemid"; + $result=DBselect($sql); + for($i=0;$i<DBnum_rows($result);$i++) + { + if(!delete_trigger(DBget_field($result,$i,0))) + { + return FALSE; + } + } + $sql="delete from functions where itemid=$itemid"; + return DBexecute($sql); + } + + # Delete Service definitions by triggerid + + function delete_services_by_triggerid($triggerid) + { + $sql="select serviceid from services where triggerid=$triggerid"; + $result=DBselect($sql); + for($i=0;$i<DBnum_rows($result);$i++) + { + delete_service(DBget_field($result,$i,0)); + } + return TRUE; + } +?> |
