diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-11-17 14:21:22 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-11-17 14:21:22 +0000 |
| commit | e3a9c8732564acac5c5dce55cdfd201212752716 (patch) | |
| tree | 9844116112cf4f8b9cbfdc848bfe15cc40c8626a /frontends/php | |
| parent | b206daa4f6b4ce7cc3236578c6124788e023ac74 (diff) | |
| download | zabbix-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.php | 3 | ||||
| -rw-r--r-- | frontends/php/include/forms.inc.php | 84 | ||||
| -rw-r--r-- | frontends/php/include/hosts.inc.php | 3 | ||||
| -rw-r--r-- | frontends/php/include/maps.inc.php | 50 | ||||
| -rw-r--r-- | frontends/php/map.php | 10 | ||||
| -rw-r--r-- | frontends/php/sysmap.php | 9 |
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( |
