summaryrefslogtreecommitdiffstats
path: root/frontends/php/include
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-03-05 13:34:23 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-03-05 13:34:23 +0000
commitf43e1b47aad7e6cc56213417e43909d7dd4a2e7e (patch)
treebd2773a3b4a9926ffc82a9601b9b37e2e5de1d49 /frontends/php/include
parent793897861b7e8218f1a74e718e8e4aebfed64471 (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.php468
-rw-r--r--frontends/php/include/graphs.inc.php120
-rw-r--r--frontends/php/include/items.inc.php25
-rw-r--r--frontends/php/include/triggers.inc.php341
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;
+ }
+?>