summaryrefslogtreecommitdiffstats
path: root/frontends/php
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-11-17 14:21:22 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-11-17 14:21:22 +0000
commite3a9c8732564acac5c5dce55cdfd201212752716 (patch)
tree9844116112cf4f8b9cbfdc848bfe15cc40c8626a /frontends/php
parentb206daa4f6b4ce7cc3236578c6124788e023ac74 (diff)
downloadzabbix-e3a9c8732564acac5c5dce55cdfd201212752716.tar.gz
zabbix-e3a9c8732564acac5c5dce55cdfd201212752716.tar.xz
zabbix-e3a9c8732564acac5c5dce55cdfd201212752716.zip
- added "Host group" element to maps (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3499 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php')
-rw-r--r--frontends/php/include/defines.inc.php3
-rw-r--r--frontends/php/include/forms.inc.php84
-rw-r--r--frontends/php/include/hosts.inc.php3
-rw-r--r--frontends/php/include/maps.inc.php50
-rw-r--r--frontends/php/map.php10
-rw-r--r--frontends/php/sysmap.php9
6 files changed, 131 insertions, 28 deletions
diff --git a/frontends/php/include/defines.inc.php b/frontends/php/include/defines.inc.php
index 2d282396..6b558b3c 100644
--- a/frontends/php/include/defines.inc.php
+++ b/frontends/php/include/defines.inc.php
@@ -113,7 +113,8 @@
define("SYSMAP_ELEMENT_TYPE_HOST", 0);
define("SYSMAP_ELEMENT_TYPE_MAP", 1);
- define("SYSMAP_ELEMENT_TYPE_IMAGE", 2);
+ define("SYSMAP_ELEMENT_TYPE_TRIGGER", 2);
+ define("SYSMAP_ELEMENT_TYPE_HOST_GROUP",3);
define("ITEM_TYPE_ZABBIX",0);
define("ITEM_TYPE_SNMPV1",1);
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php
index c35b82a8..227877ed 100644
--- a/frontends/php/include/forms.inc.php
+++ b/frontends/php/include/forms.inc.php
@@ -3194,6 +3194,7 @@
$cmbType = new CComboBox("elementtype",$elementtype,"submit()");
$denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT);
+ $allowed_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY);
$db_hosts = DBselect("select distinct n.name as node_name,h.hostid,h.host from hosts h,nodes n ".
" where h.hostid not in(".$denyed_hosts.")".
@@ -3206,7 +3207,8 @@
if(DBfetch($db_maps))
$cmbType->AddItem(SYSMAP_ELEMENT_TYPE_MAP, S_MAP);
- $cmbType->AddItem(SYSMAP_ELEMENT_TYPE_IMAGE, S_IMAGE);
+ $cmbType->AddItem(SYSMAP_ELEMENT_TYPE_TRIGGER, S_TRIGGER);
+ $cmbType->AddItem(SYSMAP_ELEMENT_TYPE_HOST_GROUP, S_HOST_GROUP);
$frmEl->AddRow(S_TYPE,$cmbType);
@@ -3224,9 +3226,9 @@
{
$host = "";
- $host_info = DBfetch(DBselect("select distinct n.name as node_name,h.hostid,h.host from hosts h,nodes n ".
+ $host_info = DBfetch(DBselect("select distinct n.name as node_name,h.hostid,h.host from hosts h ".
+ " left join nodes n on n.nodeid=".DBid2nodeid("h.hostid").
" where h.hostid not in(".$denyed_hosts.") and hostid=".$elementid.
- " and n.nodeid=".DBid2nodeid("h.hostid").
" order by node_name,h.host"));
if($host_info)
$host = $host_info["host"];
@@ -3260,24 +3262,62 @@
}
$frmEl->AddRow(S_MAP, $cmbMaps);
}
- elseif($elementtype==SYSMAP_ELEMENT_TYPE_IMAGE)
+ elseif($elementtype==SYSMAP_ELEMENT_TYPE_TRIGGER)
{
- $cmbTriggers= new CComboBox("elementid",$elementid);
- $cmbTriggers->AddItem(0,"-");
- $db_triggers = DBselect("select distinct n.name as node_name,h.hostid,h.host,t.*".
- " from triggers t,hosts h,items i,functions f,nodes n ".
- " where f.itemid=i.itemid and h.hostid=i.hostid and t.triggerid=f.triggerid".
- " and h.hostid not in (".$denyed_hosts.")".
- " and ".DBid2nodeid("h.hostid")."=n.nodeid".
- " order by node_name,h.host,t.description");
+ $trigger = "";
+ $trigger_info = DBfetch(DBselect("select distinct n.name as node_name,h.hostid,h.host,t.*".
+ " from triggers t left join functions f on t.triggerid=f.triggerid ".
+ " left join items i on i.itemid=f.itemid left join hosts h on h.hostid=i.hostid ".
+ " left join nodes n on n.nodeid=".DBid2nodeid("t.triggerid").
+ " where h.hostid not in (".$denyed_hosts.") and t.triggerid=".$elementid.
+ " order by node_name,h.host,t.description"));
- while($db_trigger = DBfetch($db_triggers))
+ if($trigger_info)
+ $trigger = expand_trigger_description_by_data($trigger_info);
+ else
+ $elementid=0;
+
+ if($elementid==0)
{
- $cmbTriggers->AddItem(
- $db_trigger["triggerid"],
- "(".$db_trigger['node_name'].") ".expand_trigger_description($db_trigger["triggerid"]));
+ $trigger = "";
+ $elementid = 0;
}
- $frmEl->AddRow(S_TRIGGER, $cmbTriggers);
+
+ $frmEl->AddVar("elementid",$elementid);
+ $frmEl->AddRow(S_TRIGGER, array(
+ new CTextBox("trigger",$trigger,32,'yes'),
+ new CButton("btn1",S_SELECT,"return PopUp('popup.php?dstfrm=".$frmEl->GetName().
+ "&dstfld1=elementid&dstfld2=trigger&srctbl=triggers&srcfld1=triggerid&srcfld2=description','new_win',".
+ "'width=550,height=450,resizable=1,scrollbars=1');","T")
+ ));
+ }
+ elseif($elementtype==SYSMAP_ELEMENT_TYPE_HOST_GROUP)
+ {
+ $group = "";
+
+ $group_info = DBfetch(DBselect("select distinct n.name as node_name,g.groupid,g.name from groups g ".
+ " left join nodes n on n.nodeid=".DBid2nodeid("g.groupid").
+ " where g.groupid in (".$allowed_groups.") and g.groupid=".$elementid.
+ " order by node_name,g.name"));
+
+ if($group_info)
+ $group = $group_info["name"];
+ else
+ $elementid=0;
+
+ if($elementid==0)
+ {
+ $group = "";
+ $elementid = 0;
+ }
+
+ $frmEl->AddVar("elementid",$elementid);
+ $frmEl->AddRow(S_HOST_GROUP, array(
+ new CTextBox("group",$group,32,'yes'),
+ new CButton("btn1",S_SELECT,"return PopUp('popup.php?dstfrm=".$frmEl->GetName().
+ "&dstfld1=elementid&dstfld2=group&srctbl=host_group&srcfld1=groupid&srcfld2=name','new_win',".
+ "'width=450,height=450,resizable=1,scrollbars=1');","T")
+ ));
}
$cmbIconOff = new CComboBox("iconid_off",$iconid_off);
@@ -3362,13 +3402,21 @@
$db_map = get_sysmap_by_sysmapid($db_selement["elementid"]);
$label .= ":".$db_map["name"];
}
- elseif($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_IMAGE)
+ elseif($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_TRIGGER)
{
if($db_selement["elementid"]>0)
{
$label .= ":".expand_trigger_description($db_selement["elementid"]);
}
}
+ elseif($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST_GROUP)
+ {
+ if($db_selement["elementid"]>0)
+ {
+ $db_group = DBfetch(DBselect('select name from groups where groupid='.$db_selement["elementid"]));
+ $label .= ":".$db_group['name'];
+ }
+ }
$cmbElements1->AddItem($db_selement["selementid"],$label);
$cmbElements2->AddItem($db_selement["selementid"],$label);
}
diff --git a/frontends/php/include/hosts.inc.php b/frontends/php/include/hosts.inc.php
index 46fd29ee..2b9c8384 100644
--- a/frontends/php/include/hosts.inc.php
+++ b/frontends/php/include/hosts.inc.php
@@ -328,6 +328,9 @@ require_once "include/items.inc.php";
function delete_host_group($groupid)
{
+ if(!delete_sysmaps_elements_with_groupid($groupid))
+ return false;
+
if(!DBexecute("delete from hosts_groups where groupid=$groupid"))
return false;
diff --git a/frontends/php/include/maps.inc.php b/frontends/php/include/maps.inc.php
index 7a87d0e0..ca9a8abf 100644
--- a/frontends/php/include/maps.inc.php
+++ b/frontends/php/include/maps.inc.php
@@ -49,7 +49,7 @@
case SYSMAP_ELEMENT_TYPE_MAP:
$result &= sysmap_accessiable($se_data['elementid'], PERM_READ_ONLY);
break;
- case SYSMAP_ELEMENT_TYPE_IMAGE:
+ case SYSMAP_ELEMENT_TYPE_TRIGGER:
if(!DBfetch(DBselect("select distinct t.*".
" from triggers t,items i,functions f".
" where f.itemid=i.itemid and t.triggerid=f.triggerid".
@@ -58,6 +58,13 @@
$result = false;
}
break;
+ case SYSMAP_ELEMENT_TYPE_HOST:
+ if(in_array($se_data['elementid'],
+ get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT)))
+ {
+ $result = false;
+ }
+ break;
}
}
}
@@ -262,7 +269,17 @@
function delete_sysmaps_elements_with_triggerid($triggerid)
{
$db_elements = DBselect("select selementid from sysmaps_elements".
- " where elementid=$triggerid and elementtype=".SYSMAP_ELEMENT_TYPE_IMAGE);
+ " where elementid=$triggerid and elementtype=".SYSMAP_ELEMENT_TYPE_TRIGGER);
+ while($db_element = DBfetch($db_elements))
+ {
+ delete_sysmaps_element($db_element["selementid"]);
+ }
+ return TRUE;
+ }
+ function delete_sysmaps_elements_with_groupid($groupid)
+ {
+ $db_elements = DBselect("select selementid from sysmaps_elements".
+ " where elementid=$groupid and elementtype=".SYSMAP_ELEMENT_TYPE_HOST_GROUP);
while($db_element = DBfetch($db_elements))
{
delete_sysmaps_element($db_element["selementid"]);
@@ -339,7 +356,7 @@
}
}
}
- elseif($db_element["elementtype"]==SYSMAP_ELEMENT_TYPE_IMAGE)
+ elseif($db_element["elementtype"]==SYSMAP_ELEMENT_TYPE_TRIGGER)
{
if($db_element["elementid"]>0){
$trigger=get_trigger_by_triggerid($db_element["elementid"]);
@@ -355,6 +372,26 @@
}
}
}
+ elseif($db_element["elementtype"]==SYSMAP_ELEMENT_TYPE_HOST_GROUP)
+ {
+ $db_triggers = DBselect("select distinct t.triggerid, t.priority ".
+ " from items i,functions f,triggers t,hosts h,hosts_groups hg ".
+ " where h.hostid=i.hostid".
+ " and hg.groupid=".$db_element["elementid"].
+ " and hg.hostid=h.hostid and i.itemid=f.itemid".
+ " and f.triggerid=t.triggerid and t.value=1 and t.status=0".
+ " and h.status=".HOST_STATUS_MONITORED." and i.status=0");
+
+ $trigger = DBfetch($db_triggers);
+ if($trigger)
+ {
+ for($count=1; DBfetch($db_triggers); $count++);
+
+ if ($trigger["priority"] > 3) $color=$colors["Red"];
+ else $color=$colors["Dark Yellow"];
+ $info = expand_trigger_description_simple($trigger["triggerid"]);
+ }
+ }
if($count>1)
{
@@ -401,11 +438,16 @@
$alt = "Host: ".$map["name"]." ".$alt;
}
- elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_IMAGE)
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_TRIGGER)
{
if($url=="" && $db_element["elementid"]!=0)
$url="events.php?triggerid=".$db_element["elementid"];
}
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST_GROUP)
+ {
+ if($url=="" && $db_element["elementid"]!=0)
+ $url="events.php?groupid=".$db_element["elementid"];
+ }
if($url=="") continue;
diff --git a/frontends/php/map.php b/frontends/php/map.php
index 392fb1e5..d519af31 100644
--- a/frontends/php/map.php
+++ b/frontends/php/map.php
@@ -201,13 +201,21 @@ include_once "include/page_header.php";
}
}
- elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_IMAGE && $db_element["elementid"]>0)
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_TRIGGER && $db_element["elementid"]>0)
{
if($label_type==MAP_LABEL_TYPE_NAME)
{
$label_line = expand_trigger_description_simple($db_element["elementid"]);
}
}
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST_GROUP && $db_element["elementid"]>0)
+ {
+ if($label_type==MAP_LABEL_TYPE_NAME)
+ {
+ $group = DBfetch(DBselect('select * from groups where groupid='.$db_element["elementid"]));
+ $label_line = $group["name"];
+ }
+ }
get_info_by_selementid($db_element["selementid"],$info_line, $color);
diff --git a/frontends/php/sysmap.php b/frontends/php/sysmap.php
index e4208e73..209d2779 100644
--- a/frontends/php/sysmap.php
+++ b/frontends/php/sysmap.php
@@ -38,7 +38,7 @@ include_once "include/page_header.php";
"selementid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL),
"elementid"=> array(T_ZBX_INT, O_OPT, NULL, DB_ID, 'isset({save})'),
- "elementtype"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1,2"), 'isset({save})'),
+ "elementtype"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1,2,3"), 'isset({save})'),
"label"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'),
"x"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535),'isset({save})'),
"y"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535),'isset({save})'),
@@ -193,9 +193,10 @@ include_once "include/page_header.php";
while($db_element = DBfetch($db_elements))
{
- if( $db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST) $type = "Host";
- elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_MAP) $type = "Map";
- elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_IMAGE) $type = "Image";
+ if( $db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST) $type = S_HOST;
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_MAP) $type = S_MAP;
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_TRIGGER) $type = S_TRIGGER;
+ elseif($db_element["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST_GROUP) $type = S_HOST_GROUP;
else $type = "Map element";
$table->addRow(array(