diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-05-31 07:41:24 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-05-31 07:41:24 +0000 |
| commit | c28d86f5ee7cddfde35cc61daa9a726e2e68509b (patch) | |
| tree | b68d2a0c6f5f3b7071c8062139573fd3d24611a6 /frontends/php | |
| parent | 4ce0c92b675da5d30bab11464ae51b7bd9b51a1a (diff) | |
- fixed permissions in IT Services (Artem/Eugene)
- fixed adding 'root' to services
git-svn-id: svn://svn.zabbix.com/trunk@4214 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php')
| -rw-r--r-- | frontends/php/include/hosts.inc.php | 2 | ||||
| -rw-r--r-- | frontends/php/include/services.inc.php | 22 | ||||
| -rw-r--r-- | frontends/php/popup.php | 26 | ||||
| -rw-r--r-- | frontends/php/services.php | 37 | ||||
| -rw-r--r-- | frontends/php/services_form.php | 4 | ||||
| -rw-r--r-- | frontends/php/srv_status.php | 16 |
6 files changed, 72 insertions, 35 deletions
diff --git a/frontends/php/include/hosts.inc.php b/frontends/php/include/hosts.inc.php index f7d7dd33..5ccae673 100644 --- a/frontends/php/include/hosts.inc.php +++ b/frontends/php/include/hosts.inc.php @@ -482,6 +482,8 @@ require_once "include/items.inc.php"; if(in_array("monitored_hosts",$options)) $with_host_status = " and h.status=".HOST_STATUS_MONITORED; + elseif(in_array('real_hosts',$options)) + $with_host_status = " and h.status<>".HOST_STATUS_TEMPLATE; else $with_host_status = ""; diff --git a/frontends/php/include/services.inc.php b/frontends/php/include/services.inc.php index 1cce729c..b54eb79b 100644 --- a/frontends/php/include/services.inc.php +++ b/frontends/php/include/services.inc.php @@ -588,7 +588,9 @@ $dt = 0; if(!isset($services[$nodeid['id']])){ continue; } - createServiceTree($services,$temp,$nodeid['id'],$services[$nodeid['id']]['serviceupid'],$rows['serviceid'],$nodeid['soft'], $nodeid['linkid']); + if(isset($services[$nodeid['id']]['serviceupid'])){ + createServiceTree($services,$temp,$nodeid['id'],$services[$nodeid['id']]['serviceupid'],$rows['serviceid'],$nodeid['soft'], $nodeid['linkid']); + } } } } else { @@ -616,7 +618,8 @@ $dt = 0; if(!isset($services[$nodeid['id']])){ continue; } - createShowServiceTree($services,$temp,$nodeid['id'],$services[$nodeid['id']]['serviceupid'],$rows['serviceid'],$nodeid['soft'], $nodeid['linkid']); + if(isset($services[$nodeid['id']]['serviceupid'])){ + createShowServiceTree($services,$temp,$nodeid['id'],$services[$nodeid['id']]['serviceupid'],$rows['serviceid'],$nodeid['soft'], $nodeid['linkid']); } } } } else { @@ -628,7 +631,20 @@ $dt = 0; } function closeform(){ - zbx_add_post_js('closeform();'); } + + function del_empty_nodes($services){ + do{ + unset($retry); + foreach($services as $id => $data){ + if(isset($data['serviceupid']) && !isset($services[$data['serviceupid']])){ + unset($services[$id]); + $retry = true; + //break; + } + } + } while(isset($retry)); + return $services; + } ?> diff --git a/frontends/php/popup.php b/frontends/php/popup.php index 29b83041..200d1dbb 100644 --- a/frontends/php/popup.php +++ b/frontends/php/popup.php @@ -117,6 +117,7 @@ include_once "include/page_header.php"; "existed_templates"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, null), "only_hostid"=> array(T_ZBX_INT, O_OPT, null, DB_ID, null), "monitored_hosts"=> array(T_ZBX_INT, O_OPT, null, IN('0,1'), null), + 'real_hosts'=> array(T_ZBX_INT, O_OPT, null, IN('0,1'), null), 'itemtype'=> array(T_ZBX_INT, O_OPT, null, null, null), "select"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null) @@ -136,6 +137,7 @@ include_once "include/page_header.php"; $srcfld2 = get_request("srcfld2", null); // second source table field [can be different from fields of source table] $monitored_hosts = get_request("monitored_hosts", 0); + $real_hosts = get_request("real_hosts", 0); $only_hostid = get_request("only_hostid", null); ?> <?php @@ -158,6 +160,9 @@ include_once "include/page_header.php"; if($monitored_hosts) $frmTitle->AddVar('monitored_hosts', 1); + if($real_hosts) + $frmTitle->AddVar('real_hosts', 1); + $frmTitle->AddVar("dstfrm", $dstfrm); $frmTitle->AddVar("dstfld1", $dstfld1); $frmTitle->AddVar("dstfld2", $dstfld2); @@ -177,6 +182,9 @@ include_once "include/page_header.php"; if($monitored_hosts) array_push($validation_param, "monitored_hosts"); + if($real_hosts) + array_push($validation_param, "real_hosts"); + if(in_array($srctbl,array("triggers","logitems","items"))) { array_push($validation_param, "always_select_first_host"); @@ -228,6 +236,7 @@ include_once "include/page_header.php"; " and g.groupid=hg.groupid and hg.hostid in (".$accessible_hosts.") ". " and hg.hostid = h.hostid ". ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ""). " order by name"); while($group = DBfetch($db_groups)) { @@ -266,7 +275,8 @@ include_once "include/page_header.php"; $sql .= DBid2nodeid("h.hostid")."=".$nodeid. " and h.hostid in (".$accessible_hosts.")". - ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""); + ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ""); $db_hosts = DBselect($sql); while($host = DBfetch($db_hosts)) @@ -308,6 +318,7 @@ include_once "include/page_header.php"; $sql .= DBid2nodeid("h.hostid")."=".$nodeid. " and h.hostid in (".$accessible_hosts.") ". ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ""). " order by h.host,h.hostid"; @@ -447,6 +458,9 @@ include_once "include/page_header.php"; if($monitored_hosts) $form->AddVar('monitored_hosts', 1); + + if($real_hosts) + $form->AddVar('real_hosts', 1); $form->AddVar('dstfrm',$dstfrm); $form->AddVar('dstfld1',$dstfld1); @@ -578,7 +592,8 @@ include_once "include/page_header.php"; " where f.itemid=i.itemid and h.hostid=i.hostid and t.triggerid=f.triggerid". " and ".DBid2nodeid("t.triggerid")."=".$nodeid. " and h.hostid not in (".$denyed_hosts.")". - ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""); + ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ""); if(isset($hostid)) $sql .= " and h.hostid=$hostid"; @@ -677,6 +692,7 @@ function add_item_variable(s_formname,x_value) (isset($hostid) ? " and ".$hostid."=i.hostid " : ""). " and i.hostid in (".$accessible_hosts.")". ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ""). " order by h.host,i.description, i.key_, i.itemid"); while($db_item = DBfetch($db_items)) @@ -717,7 +733,8 @@ function add_item_variable(s_formname,x_value) $sql = "select distinct h.host,i.* from hosts h,items i ". " where h.hostid=i.hostid and ".DBid2nodeid("i.itemid")."=".$nodeid. " and h.hostid not in (".$denyed_hosts.")". - ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""); + ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ''). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ''); if(isset($hostid)) $sql .= " and h.hostid=$hostid"; @@ -758,7 +775,8 @@ function add_item_variable(s_formname,x_value) $sql = "select distinct h.host,a.* from hosts h,applications a ". " where h.hostid=a.hostid and ".DBid2nodeid("a.applicationid")."=".$nodeid. " and h.hostid not in (".$denyed_hosts.")". - ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""); + ($monitored_hosts ? " and h.status=".HOST_STATUS_MONITORED : ""). + ($real_hosts ? " and h.status<>".HOST_STATUS_TEMPLATE : ""); if(isset($hostid)) $sql .= " and h.hostid=$hostid"; diff --git a/frontends/php/services.php b/frontends/php/services.php index 4a4ea993..9c161a77 100644 --- a/frontends/php/services.php +++ b/frontends/php/services.php @@ -36,30 +36,21 @@ include_once "include/page_header.php"; check_fields($fields); -//---------------------------------------------------------------------- - - $denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_WRITE,PERM_MODE_LT); - - if(isset($_REQUEST['serviceid']) && $_REQUEST['serviceid'] > 0){ - $query = "SELECT s.*,sl.linkid FROM services s LEFT JOIN triggers t on s.triggerid=t.triggerid ". - " LEFT JOIN functions f on t.triggerid=f.triggerid LEFT JOIN items i on f.itemid=i.itemid ". - " where (i.hostid is null or i.hostid not in (".$denyed_hosts.")) ". - " and ".DBid2nodeid("s.serviceid")."=".$ZBX_CURNODEID. - " and s.serviceid=".$_REQUEST["serviceid"]; - if( !($service = DBFetch(DBSelect($query))) ){ - access_deny(); - } - } //-------------------------------------------------------------------------- +$denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_WRITE,PERM_MODE_LT); + $query = 'SELECT distinct s.serviceid, sl.servicedownid, sl_p.serviceupid as serviceupid, - s.name caption, s.algorithm, t.triggerid, s.sortorder, sl.linkid - FROM services s - LEFT JOIN triggers t ON s.triggerid = t.triggerid - LEFT JOIN services_links sl ON s.serviceid = sl.serviceupid and NOT(sl.soft=0) - LEFT JOIN services_links sl_p ON s.serviceid = sl_p.servicedownid and sl_p.soft=0 - WHERE '.DBid2nodeid("s.serviceid").'='.$ZBX_CURNODEID.' - ORDER BY s.sortorder, sl.serviceupid, s.serviceid'; + s.name caption, s.algorithm, t.triggerid, s.sortorder, sl.linkid'. + ' FROM services s '. + ' LEFT JOIN triggers t ON s.triggerid = t.triggerid '. + ' LEFT JOIN services_links sl ON s.serviceid = sl.serviceupid and NOT(sl.soft=0) '. + ' LEFT JOIN services_links sl_p ON s.serviceid = sl_p.servicedownid and sl_p.soft=0 '. + ' LEFT JOIN functions f on t.triggerid=f.triggerid '. + ' LEFT JOIN items i ON f.itemid=i.itemid '. + ' WHERE (i.hostid is null or i.hostid not in ('.$denyed_hosts.')) '. + ' AND '.DBid2nodeid("s.serviceid").'='.$ZBX_CURNODEID. + ' ORDER BY s.sortorder, sl.serviceupid, s.serviceid'; $result=DBSelect($query); @@ -100,6 +91,10 @@ while($row = DBFetch($result)){ $treeServ=array(); createServiceTree($services,$treeServ); //return into $treeServ parametr +//permission issue +$treeServ = del_empty_nodes($treeServ); + + echo '<script src="js/services.js" type="text/javascript"></script>'; $p = new Ctag('p','yes'); diff --git a/frontends/php/services_form.php b/frontends/php/services_form.php index aa9b8aa7..1d2c0438 100644 --- a/frontends/php/services_form.php +++ b/frontends/php/services_form.php @@ -185,7 +185,7 @@ if(isset($_REQUEST['pservices'])){ $description->SetAction('javascript:
window.opener.document.forms[0].elements[\'parent_name\'].value = '.zbx_jsvalue(S_ROOT_SMALL).';
window.opener.document.forms[0].elements[\'parentname\'].value = '.zbx_jsvalue(S_ROOT_SMALL).';
- window.opener.document.forms[0].elements[\'parentid\'].value = '.zbx_jsvalue(S_ROOT_SMALL).';
+ window.opener.document.forms[0].elements[\'parentid\'].value = '.zbx_jsvalue(0).';
self.close(); return false;');
$table->AddRow(array(array($prefix,$description),S_NONE,$trigger));
@@ -661,7 +661,7 @@ if(isset($_REQUEST['sform'])){ new CCol(S_TRIGGER,'form_row_l'),
new CCol(array(
new CTextBox("trigger",$trigger,32,'yes'),
- new CButton("btn1",S_SELECT,"return PopUp('popup.php?"."dstfrm=".$frmService->GetName()."&dstfld1=triggerid&dstfld2=trigger"."&srctbl=triggers&srcfld1=triggerid&&srcfld2=description');",'T')
+ new CButton("btn1",S_SELECT,"return PopUp('popup.php?"."dstfrm=".$frmService->GetName()."&dstfld1=triggerid&dstfld2=trigger"."&srctbl=triggers&srcfld1=triggerid&srcfld2=description&real_hosts=1');",'T')
),'form_row_r')
));
$row->AddOption('id','trigger_name');
diff --git a/frontends/php/srv_status.php b/frontends/php/srv_status.php index 11030d88..0baf5e3f 100644 --- a/frontends/php/srv_status.php +++ b/frontends/php/srv_status.php @@ -66,12 +66,15 @@ include_once "include/page_header.php"; } else { $query = 'SELECT DISTINCT s.serviceid, sl.servicedownid, sl_p.serviceupid as serviceupid, s.triggerid, '. - ' s.name as caption, s.algorithm, t.description, s.sortorder, sl.linkid, s.showsla, s.goodsla, s.status '. - ' FROM services s '. - ' LEFT JOIN triggers t ON s.triggerid = t.triggerid '. - ' LEFT JOIN services_links sl ON s.serviceid = sl.serviceupid and NOT(sl.soft=0) '. - ' LEFT JOIN services_links sl_p ON s.serviceid = sl_p.servicedownid and sl_p.soft=0 '. + ' s.name as caption, s.algorithm, t.description, s.sortorder, sl.linkid, s.showsla, s.goodsla, s.status '. + ' FROM services s '. + ' LEFT JOIN triggers t ON s.triggerid = t.triggerid '. + ' LEFT JOIN services_links sl ON s.serviceid = sl.serviceupid and NOT(sl.soft=0) '. + ' LEFT JOIN services_links sl_p ON s.serviceid = sl_p.servicedownid and sl_p.soft=0 '. + ' LEFT JOIN functions f ON t.triggerid=f.triggerid '. + ' LEFT JOIN items i ON f.itemid=i.itemid '. ' WHERE '.DBid2nodeid("s.serviceid").'='.$ZBX_CURNODEID. + ' AND (i.hostid is null or i.hostid not in ('.$denyed_hosts.')) '. ' ORDER BY s.sortorder, sl.serviceupid, s.serviceid'; $result=DBSelect($query); @@ -163,6 +166,9 @@ include_once "include/page_header.php"; $treeServ = array(); createShowServiceTree($services,$treeServ); //return into $treeServ parametr + //permission issue + $treeServ = del_empty_nodes($treeServ); + echo '<script src="js/services.js" type="text/javascript"></script>'; $tree = new CTree($treeServ,array('caption' => '<b>'.S_SERVICE.'</b>', |
