summaryrefslogtreecommitdiffstats
path: root/frontends/php
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-04-23 09:18:47 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-04-23 09:18:47 +0000
commitbe2359ca3780418cc77e8449f79d8c1290bd8ee3 (patch)
tree09aac2796f2653238253a7736f98e1e85c858d45 /frontends/php
parent9a5879720db8f0c101623e9ae3c6a7e78199571f (diff)
downloadzabbix-be2359ca3780418cc77e8449f79d8c1290bd8ee3.tar.gz
zabbix-be2359ca3780418cc77e8449f79d8c1290bd8ee3.tar.xz
zabbix-be2359ca3780418cc77e8449f79d8c1290bd8ee3.zip
- [DEV-159] added automatic selection first group and host in WEB monitoring (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5647 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php')
-rw-r--r--frontends/php/httpmon.php111
-rw-r--r--frontends/php/include/hosts.inc.php33
2 files changed, 89 insertions, 55 deletions
diff --git a/frontends/php/httpmon.php b/frontends/php/httpmon.php
index 970f8929..0b163361 100644
--- a/frontends/php/httpmon.php
+++ b/frontends/php/httpmon.php
@@ -48,42 +48,40 @@ include_once "include/page_header.php";
check_fields($fields);
validate_sort_and_sortorder();
- validate_group_with_host(PERM_READ_ONLY,array("allow_all_hosts","always_select_first_host","monitored_hosts"));
+ $options = array('allow_all_hosts','monitored_hosts');//,'always_select_first_host'
+
+ $_REQUEST['groupid'] = get_request('groupid',get_profile('web.latest.groupid',-1));
+ if($_REQUEST['groupid'] == -1) array_push($options,'always_select_first_host');
+
+// validate_group_with_host(PERM_READ_ONLY,array('allow_all_hosts','always_select_first_host','monitored_hosts'));
?>
<?php
$_REQUEST["applications"] = get_request("applications",get_profile("web.httpmon.applications",array()),PROFILE_TYPE_ARRAY);
- if(isset($_REQUEST["open"]))
- {
- if(!isset($_REQUEST["applicationid"]))
- {
+ if(isset($_REQUEST["open"])){
+ if(!isset($_REQUEST["applicationid"])){
$_REQUEST["applications"] = array();
$show_all_apps = 1;
}
- elseif(!uint_in_array($_REQUEST["applicationid"],$_REQUEST["applications"]))
- {
+ else if(!uint_in_array($_REQUEST["applicationid"],$_REQUEST["applications"])){
array_push($_REQUEST["applications"],$_REQUEST["applicationid"]);
}
- } elseif(isset($_REQUEST["close"]))
- {
- if(!isset($_REQUEST["applicationid"]))
- {
+ }
+ else if(isset($_REQUEST["close"])){
+ if(!isset($_REQUEST["applicationid"])){
$_REQUEST["applications"] = array();
}
- elseif(($i=array_search($_REQUEST["applicationid"], $_REQUEST["applications"])) !== FALSE)
- {
+ else if(($i=array_search($_REQUEST["applicationid"], $_REQUEST["applications"])) !== FALSE){
unset($_REQUEST["applications"][$i]);
}
}
/* limit opened application count */
- while(count($_REQUEST["applications"]) > 25)
- {
+ while(count($_REQUEST["applications"]) > 25){
array_shift($_REQUEST["applications"]);
}
-
update_profile("web.httpmon.applications",$_REQUEST["applications"],PROFILE_TYPE_ARRAY);
?>
<?php
@@ -91,46 +89,66 @@ include_once "include/page_header.php";
$form = new CForm();
$form->SetMethod('get');
- $cmbGroup = new CComboBox("groupid",$_REQUEST["groupid"],"submit();");
+ $cmbGroup = new CComboBox("groupid",null,"submit();");
$cmbGroup->AddItem(0,S_ALL_SMALL);
$accessible_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_LIST);
$accessible_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_LIST);
- $result=DBselect('select distinct g.groupid,g.name from groups g, hosts_groups hg, hosts h, '.
- ' applications a, httptest ht where g.groupid in ('.$accessible_groups.') '.
- ' and hg.groupid=g.groupid and h.status='.HOST_STATUS_MONITORED.
- ' and h.hostid=a.hostid and hg.hostid=h.hostid'.
- ' and ht.applicationid=a.applicationid and ht.status='.HTTPTEST_STATUS_ACTIVE.
- " order by g.name");
- while($row=DBfetch($result))
- {
+ $result=DBselect('SELECT DISTINCT g.groupid,g.name '.
+ ' FROM groups g, hosts_groups hg, hosts h, applications a, httptest ht '.
+ ' WHERE g.groupid in ('.$accessible_groups.') '.
+ ' AND hg.groupid=g.groupid '.
+ ' AND h.status='.HOST_STATUS_MONITORED.
+ ' AND h.hostid=a.hostid '.
+ ' AND hg.hostid=h.hostid'.
+ ' AND ht.applicationid=a.applicationid '.
+ ' AND ht.status='.HTTPTEST_STATUS_ACTIVE.
+ ' ORDER BY g.name');
+ while($row=DBfetch($result)){
+ if($_REQUEST['groupid'] == -1){
+ $_REQUEST['groupid'] = $row['groupid'];
+ }
$cmbGroup->AddItem(
$row['groupid'],
- get_node_name_by_elid($row['groupid']).$row['name']
+ get_node_name_by_elid($row['groupid']).$row['name'],
+ ($_REQUEST['groupid'] == $row['groupid'])?1:0
);
}
+
+// Supposed to be here
+ validate_group_with_host(PERM_READ_ONLY,$options);
+
$form->AddItem(S_GROUP.SPACE);
$form->AddItem($cmbGroup);
$_REQUEST["hostid"] = get_request("hostid",0);
$cmbHosts = new CComboBox("hostid",$_REQUEST["hostid"],"submit();");
-
- if(isset($_REQUEST["groupid"]) && $_REQUEST["groupid"] > 0)
- {
- $sql='select distinct h.hostid,h.host from hosts_groups hg, hosts h,applications a,httptest ht '.
- ' where h.status='.HOST_STATUS_MONITORED.' and h.hostid=a.hostid and hg.hostid=h.hostid '.
- ' and hg.groupid='.$_REQUEST["groupid"].' and h.hostid in ('.$accessible_hosts.') '.
- ' and a.applicationid=ht.applicationid and ht.status='.HTTPTEST_STATUS_ACTIVE.
- ' group by h.hostid,h.host order by h.host';
+ $cmbHosts->AddItem(0,S_ALL_SMALL);
+
+ if(isset($_REQUEST["groupid"]) && $_REQUEST["groupid"] > 0){
+ $sql='SElECT DISTINCT h.hostid,h.host '.
+ ' FROM hosts_groups hg, hosts h,applications a,httptest ht '.
+ ' WHERE h.status='.HOST_STATUS_MONITORED.
+ ' AND h.hostid=a.hostid '.
+ ' AND hg.hostid=h.hostid '.
+ ' AND hg.groupid='.$_REQUEST["groupid"].
+ ' AND h.hostid in ('.$accessible_hosts.') '.
+ ' AND a.applicationid=ht.applicationid '.
+ ' AND ht.status='.HTTPTEST_STATUS_ACTIVE.
+ ' GROUP BY h.hostid,h.host'.
+ ' ORDER BY h.host';
}
- else
- {
- $cmbHosts->AddItem(0,S_ALL_SMALL);
- $sql='select distinct h.hostid,h.host from hosts h,applications a,httptest ht '.
- ' where h.status='.HOST_STATUS_MONITORED.' and h.hostid=a.hostid and ht.status='.HTTPTEST_STATUS_ACTIVE.
- ' and ht.applicationid=a.applicationid and h.hostid in ('.$accessible_hosts.') '.
- ' group by h.hostid,h.host order by h.host';
+ else{
+ $sql='SELECT DISTINCT h.hostid,h.host '.
+ ' FROM hosts h,applications a,httptest ht '.
+ ' WHERE h.status='.HOST_STATUS_MONITORED.
+ ' AND h.hostid=a.hostid '.
+ ' AND ht.status='.HTTPTEST_STATUS_ACTIVE.
+ ' AND ht.applicationid=a.applicationid '.
+ ' AND h.hostid in ('.$accessible_hosts.') '.
+ ' GROUP BY h.hostid,h.host '.
+ ' ORDER BY h.host';
}
$result=DBselect($sql);
@@ -176,9 +194,9 @@ include_once "include/page_header.php";
$any_app_exist = false;
if($_REQUEST["hostid"] > 0)
- $compare_host = " and h.hostid=".$_REQUEST["hostid"];
+ $compare_host = " AND h.hostid=".$_REQUEST["hostid"];
else
- $compare_host = " and h.hostid in (".$accessible_hosts.") ";
+ $compare_host = " AND h.hostid in (".$accessible_hosts.") ";
$db_applications = DBselect('SELECT DISTINCT h.host,h.hostid,a.* '.
' FROM applications a,hosts h '.
@@ -190,7 +208,7 @@ include_once "include/page_header.php";
$db_httptests = DBselect('select wt.*,a.name as application,h.host,h.hostid from httptest wt '.
' left join applications a on wt.applicationid=a.applicationid '.
' left join hosts h on h.hostid=a.hostid'.
- ' where a.applicationid='.$db_app["applicationid"].' and wt.status <> 1'.
+ ' where a.applicationid='.$db_app["applicationid"].' AND wt.status <> 1'.
order_by('wt.name','h.host'));
$app_rows = array();
@@ -288,9 +306,6 @@ include_once "include/page_header.php";
$form->AddItem($table);
$form->Show();
-?>
-<?php
include_once "include/page_footer.php"
-
-?>
+?> \ No newline at end of file
diff --git a/frontends/php/include/hosts.inc.php b/frontends/php/include/hosts.inc.php
index ff63677a..b64af77f 100644
--- a/frontends/php/include/hosts.inc.php
+++ b/frontends/php/include/hosts.inc.php
@@ -698,7 +698,7 @@ require_once "include/items.inc.php";
*/
function get_correct_group_and_host($a_groupid=null, $a_hostid=null, $perm=PERM_READ_WRITE, $options = array()){
if(!is_array($options)){
- fatal_error("Incorrest options for get_correct_group_and_host");
+ fatal_error("Incorrect options for get_correct_group_and_host");
}
global $USER_DETAILS;
@@ -738,7 +738,24 @@ require_once "include/items.inc.php";
}
else{
$groupid = $a_groupid;
+
+ if(($groupid < 0) && str_in_array('always_select_first_group',$options)){
+ $with_node = ' AND '.DBin_node('g.groupid', get_current_nodeid(!$only_current_node));
+ $sql = 'SELECT DISTINCT g.name,g.groupid '.
+ ' FROM groups g, hosts_groups hg, hosts h'.$item_table.
+ ' WHERE hg.groupid=g.groupid '.
+ ' AND h.hostid=hg.hostid '.
+ ' AND h.hostid IN ('.$available_hosts.') '.
+ $with_host_status.
+ $with_items.
+ $with_node.
+ ' ORDER BY g.name';
+//SDI($groupid);
+ $groupid=($grp = DBfetch(DBselect($sql,1)))?$grp['groupid']:0;
+//SDI($groupid);
+ }
+
if($groupid > 0){
$with_node = ' AND '.DBin_node('g.groupid', get_current_nodeid(!$only_current_node));
@@ -760,10 +777,10 @@ require_once "include/items.inc.php";
else{
$hostid = $a_hostid;
/* is not 'All' selected */
- if(!($hostid == 0 && $allow_all_hosts == 1)) {
+ if(!(($hostid == 0) && ($allow_all_hosts == 1))) {
$group_table = '';
$witth_group = '';
-
+
if($groupid != 0){
$with_node = ' AND '.DBin_node('hg.hostid', get_current_nodeid(!$only_current_node));
@@ -805,8 +822,7 @@ require_once "include/items.inc.php";
$hostid = 0;
}
}
- if(($hostid < 0) || ($hostid == 0 && $always_select_first_host == 1)) /* incorrect host */
- {
+ if(($hostid < 0) || ($hostid == 0 && $always_select_first_host == 1)) /* incorrect host */{
$hostid = $first_hostid_in_group;
}
}
@@ -884,8 +900,11 @@ require_once "include/items.inc.php";
if(!in_node($_REQUEST["groupid"])) $_REQUEST["groupid"] = 0;
- $result = get_correct_group_and_host($_REQUEST["groupid"],null,$perm,$options);
- $_REQUEST["groupid"] = $result["groupid"];
+ if(str_in_array('always_select_first_group',$options) && ($_REQUEST['groupid'] == 0))
+ $_REQUEST['groupid'] = -1;
+
+ $result = get_correct_group_and_host($_REQUEST['groupid'],null,$perm,$options);
+ $_REQUEST["groupid"] = $result["groupid"];
update_profile($group_var,$_REQUEST["groupid"]);
}