summaryrefslogtreecommitdiffstats
path: root/frontends/php/services.php
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-23 07:34:27 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-23 07:34:27 +0000
commit28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89 (patch)
tree8281ccd48964ee0dd11c5ea689091fa3cef706fb /frontends/php/services.php
parent495799b2aa61aab23d74d7faa110a0cd09d59bf0 (diff)
downloadzabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.tar.gz
zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.tar.xz
zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.zip
- developed group permission system (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3371 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/services.php')
-rw-r--r--frontends/php/services.php391
1 files changed, 255 insertions, 136 deletions
diff --git a/frontends/php/services.php b/frontends/php/services.php
index 52692c01..985f7d31 100644
--- a/frontends/php/services.php
+++ b/frontends/php/services.php
@@ -20,39 +20,113 @@
?>
<?php
include_once "include/config.inc.php";
+ include_once "include/services.inc.php";
$page["title"] = "S_IT_SERVICES";
$page["file"] = "services.php";
- show_header($page["title"],0,0);
+include_once "include/page_header.php";
+
insert_confirm_javascript();
?>
-
<?php
- if(!check_anyright("Service","U"))
- {
- show_table_header("<font color=\"AA0000\">".S_NO_PERMISSIONS."</font>");
- show_page_footer();
- exit;
- }
- $_REQUEST["serviceid"] = get_request("serviceid",0);
- if($_REQUEST["serviceid"] == 0) unset($_REQUEST["serviceid"]);
+// VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION
+ $fields=array(
+ "path"=> array(T_ZBX_STR, O_OPT, null, null, null),
+
+ "serviceid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID,NULL),
+ "group_serviceid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID,NULL),
+
+ "linkid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID,NULL),
+ "group_linkid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID,NULL),
+
+ "name"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'),
+ "algorithm"=> array(T_ZBX_INT, O_OPT, NULL, IN('0,1,2'), 'isset({save})'),
+ "showsla"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"),null),
+ "goodsla"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,100), null),
+ "sortorder"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535), null),
+ "service_times"=> array(T_ZBX_STR, O_OPT, null, null, null),
+
+ "linktrigger"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"),null),
+ "triggerid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL),
+
+ "serviceupid"=> array(T_ZBX_INT, O_OPT, null, DB_ID, 'isset({save_link})'),
+ "servicedownid"=> array(T_ZBX_INT, O_OPT, null, DB_ID, null),
+ "soft"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"), null),
- $_REQUEST["parentid"] = get_request("parentid", 0);
+ "serverid"=> array(T_ZBX_INT, O_OPT, null, DB_ID, 'isset({add_server})'),
- update_profile("web.menu.config.last",$page["file"]);
+ "new_service_time"=> array(T_ZBX_STR, O_OPT, null, null, null),
+ "rem_service_times"=> array(T_ZBX_STR, O_OPT, null, null, null),
+
+/* actions */
+ "save_service"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+ "save_link"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+ "add_server"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+
+ "add_service_time"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+ "del_service_times"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+
+ "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+ "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
+ "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL),
+/* other */
+ "form"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL),
+ "form_copy_to"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL),
+ "form_refresh"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL)
+ );
+
+ check_fields($fields);
?>
+<?php
+ $denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_WRITE,PERM_MODE_LT);
+ if(isset($_REQUEST["serviceid"]) && $_REQUEST["serviceid"] > 0)
+ {
+ if( !($service = DBfetch(DBselect("select s.* 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"]
+ ))))
+ {
+ access_deny();
+ }
+ }
+?>
<?php
+/* ACTIONS */
+ $_REQUEST["showsla"] = get_request("showsla",0);
+ $_REQUEST["soft"] = get_request("soft", 0);
if(isset($_REQUEST["delete"]))
{
if(isset($_REQUEST["group_serviceid"]))
{
- foreach($_REQUEST["group_serviceid"] as $serviceid)
- delete_service($serviceid);
- show_messages(TRUE, S_SERVICE_DELETED, S_CANNOT_DELETE_SERVICE);
+ $group_serviceid = get_request('group_serviceid', array(-1));
+
+ if(($db_group_services = DBselect("select s.* 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 in (".implode(',',$group_serviceid).")"
+ )))
+ {
+ while($g_service_data = DBfetch($db_group_services))
+ {
+ $result = delete_service($g_service_data['serviceid']);
+
+ if(isset($service) && $g_service_data['serviceid'] == $service['serviceid'])
+ {
+ unset($service, $path);
+ }
+
+ add_audit_if($result,AUDIT_ACTION_DELETE,AUDIT_RESOURCE_IT_SERVICE,
+ ' Name ['.$g_service_data["name"].'] id ['.$g_service_data['serviceid'].']');
+ }
+ show_messages(TRUE, S_SERVICE_DELETED, S_CANNOT_DELETE_SERVICE);
+ }
}
elseif(isset($_REQUEST["group_linkid"]))
{
@@ -60,45 +134,50 @@
delete_service_link($linkid);
show_messages(TRUE, S_LINK_DELETED, S_CANNOT_DELETE_LINK);
}
- elseif(isset($_REQUEST["delete_service"]))
+ elseif(isset($_REQUEST["linkid"]))
{
- $result=delete_service($_REQUEST["serviceid"]);
- show_messages($result, S_SERVICE_DELETED, S_CANNOT_DELETE_SERVICE);
- unset($_REQUEST["serviceid"]);
- }
- elseif(isset($_REQUEST["delete_link"]))
- {
- $result=delete_service_link($_REQUEST["linkid"]);
+ $result = delete_service_link($_REQUEST["linkid"]);
show_messages($result, S_LINK_DELETED, S_CANNOT_DELETE_LINK);
unset($_REQUEST["linkid"]);
}
+ elseif(isset($_REQUEST["serviceid"]))
+ {
+ $result = delete_service($service["serviceid"]);
+ show_messages($result, S_SERVICE_DELETED, S_CANNOT_DELETE_SERVICE);
+ add_audit_if($result,AUDIT_ACTION_DELETE,AUDIT_RESOURCE_IT_SERVICE,
+ ' Name ['.$service["name"].'] id ['.$service['serviceid'].']');
+ unset($service,$path);
+ }
}
elseif(isset($_REQUEST["save_service"]))
{
$service_times = get_request('service_times',array());
- $showsla = isset($_REQUEST["showsla"]) ? 1 : 0;
- $triggerid = isset($_REQUEST["linktrigger"]) ? $_REQUEST["triggerid"] : NULL;
- if(isset($_REQUEST["serviceid"]))
+ $triggerid = isset($_REQUEST["linktrigger"]) ? $_REQUEST["triggerid"] : null;
+ if(isset($service["serviceid"]))
{
- $result = update_service($_REQUEST["serviceid"],
+ $result = update_service($service["serviceid"],
$_REQUEST["name"],$triggerid,$_REQUEST["algorithm"],
- $showsla,$_REQUEST["goodsla"],$_REQUEST["sortorder"],
+ $_REQUEST["showsla"],$_REQUEST["goodsla"],$_REQUEST["sortorder"],
$service_times);
show_messages($result, S_SERVICE_UPDATED, S_CANNOT_UPDATE_SERVICE);
+ $serviceid = $service["serviceid"];
+ $audit_acrion = AUDIT_ACTION_UPDATE;
}
else
{
$result = add_service(
$_REQUEST["name"],$triggerid,$_REQUEST["algorithm"],
- $showsla,$_REQUEST["goodsla"],$_REQUEST["sortorder"],
+ $_REQUEST["showsla"],$_REQUEST["goodsla"],$_REQUEST["sortorder"],
$service_times);
show_messages($result, S_SERVICE_ADDED, S_CANNOT_ADD_SERVICE);
+ $serviceid = $result;
+ $audit_acrion = AUDIT_ACTION_ADD;
}
+ add_audit_if($result,$audit_acrion,AUDIT_RESOURCE_IT_SERVICE,' Name ['.$_REQUEST["name"].'] id ['.$serviceid.']');
}
elseif(isset($_REQUEST["save_link"]))
{
- $_REQUEST["soft"] = isset($_REQUEST["soft"]) ? 1 : 0;
if(isset($_REQUEST["linkid"]))
{
$result = update_service_link($_REQUEST["linkid"],
@@ -113,7 +192,13 @@
}
elseif(isset($_REQUEST["add_server"]))
{
- $result=add_host_to_services($_REQUEST["serverid"],$_REQUEST["serviceid"]);
+ if(!($host_data = DBfetch(DBselect('select h.* from hosts h where '.DBid2nodeid('h.hostid').'='.$ZBX_CURNODEID.
+ ' and h.hostid not in ('.$denyed_hosts.') and h.hostid='.$_REQUEST["serverid"]))))
+ {
+ access_deny();
+ }
+ $result = add_host_to_services($_REQUEST["serverid"], $service["serviceid"]);
+ add_audit_if($result,AUDIT_ACTION_ADD,AUDIT_RESOURCE_IT_SERVICE,' Host ['.$host_data["host"].'] id ['.$_REQUEST["serverid"].']');
show_messages($result, S_TRIGGER_ADDED, S_CANNOT_ADD_TRIGGER);
}
elseif(isset($_REQUEST["add_service_time"]) && isset($_REQUEST["new_service_time"]))
@@ -152,92 +237,117 @@
}
}
?>
-
<?php
- show_table_header(S_IT_SERVICES_BIG);
+ if(isset($service))
+ {
+ $service = get_service_by_serviceid($service['serviceid']); // update date after ACTIONS */
+ }
+
+ $path = get_request('path', array());
+ if(isset($service))
+ {
+ $path[count($path)] = array('id'=>$service["serviceid"], 'name'=>$service["name"]);
+ }
+ array_unique($path);
+
+ $menu_path = array();
+ $new_path = array();
+ foreach($path as $el)
+ {
+ if(count($new_path)==0)
+ {
+ $back_name = S_ROOT_SMALL;
+ $back_id = 0;
+ }
+ else
+ {
+ $back_name = $new_path[count($new_path)-1]['name'];
+ $back_id = $new_path[count($new_path)-1]['id'];
+ }
+
+ if(isset($service) && $back_id == $service['serviceid']) break;
+
+ array_push($menu_path, unpack_object(new CLink($back_name, '?serviceid='.$back_id.url_param('new_path',false,'path'))));
+ array_push($new_path, $el);
+ }
+ $_REQUEST['path'] = $path = $new_path;
+
+ show_table_header(S_IT_SERVICES_BIG.": ".implode('/',$menu_path));
+
+ unset($menu_path, $new_path, $el);
$form = new CForm();
$form->SetName("services");
+ $form->AddVar("path", $path);
+
+ if(isset($service))
+ $form->AddVar("serviceid", $service['serviceid']);
$table = new CTableInfo();
$table->SetHeader(array(
- array(new CCheckBox("all_services",NULL,
+ array(new CCheckBox("all_services",null,
"CheckAll('".$form->GetName()."','all_services');"),
- S_ID),
- S_SERVICE,
+ S_SERVICE),
S_STATUS_CALCULATION,
S_TRIGGER
));
- $sql = "select serviceid,name,algorithm,triggerid from services where mod(serviceid,100)=$ZBX_CURNODEID order by sortorder,name";
- if(isset($_REQUEST["serviceid"]))
+ $db_services = DBselect("select distinct s.* 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 ".
+ " left join services_links sl on s.serviceid=sl.servicedownid ".
+ " where (i.hostid is null or i.hostid not in (".$denyed_hosts.")) ".
+ " and ".DBid2nodeid("s.serviceid")."=".$ZBX_CURNODEID.
+ " and (sl.serviceupid".(!isset($service) ?
+ " is NULL " :
+ "=".$service['serviceid']." or s.serviceid=".$service['serviceid'] ).") ".
+ " order by sl.serviceupid,s.sortorder,s.name");
+
+ while($db_service_data = DBfetch($db_services))
{
- $form->AddVar("serviceid",$_REQUEST["serviceid"]);
-
- $service = get_service_by_serviceid($_REQUEST["serviceid"]);
- if($service)
+ $prefix = null;
+ $trigger = "-";
+
+ $description = $db_service_data["name"]." [".get_num_of_service_childs($db_service_data["serviceid"])."]";
+
+ if(isset($service["serviceid"]))
{
- $childs=get_num_of_service_childs($service["serviceid"]);
-
- if(isset($service["triggerid"]))
- $trigger = expand_trigger_description($service["triggerid"]);
+ if($service["serviceid"] == $db_service_data["serviceid"])
+ {
+ $description = new CSpan($description, 'bold');
+ }
else
- $trigger = "-";
-
- $table->AddRow(array(
- array(
- new CCheckBox("group_serviceid[]",NULL,NULL,$_REQUEST["serviceid"]),
- $_REQUEST["serviceid"]
- ),
- new CLink(new CSpan($service["name"]." [$childs]","bold"),"services.php?serviceid=".$_REQUEST["parentid"]."#form"),
- algorithm2str($service["algorithm"]),
- $trigger
- ));
- $sql = "select s.serviceid,s.name,s.algorithm,triggerid from services s, services_links sl".
- " where s.serviceid=sl.servicedownid and sl.serviceupid=".$_REQUEST["serviceid"].
- " order by s.sortorder,s.name";
+ {
+ $prefix = " - ";
+ }
}
- else
- {
- unset($_REQUEST["serviceid"]);
- }
- }
- $db_services = DBselect($sql);
- while($service = DBfetch($db_services))
- {
- $prefix = NULL;
- if(!isset($_REQUEST["serviceid"]))
+ if(!(isset($service["serviceid"]) && $service["serviceid"] == $db_service_data["serviceid"]))
{
- if(service_has_parent($service["serviceid"]))
- continue;
+
+ $description = new CLink($description,"services.php?serviceid=".$db_service_data["serviceid"].
+ url_param('path')."#form",'action');
}
- else
+
+ if(isset($db_service_data["triggerid"]))
{
- $prefix = " - ";
+ $trigger = expand_trigger_description($db_service_data["triggerid"]);
}
- $childs=get_num_of_service_childs($service["serviceid"]);
- if(isset($service["triggerid"]))
- $trigger = expand_trigger_description($service["triggerid"]);
- else
- $trigger = "-";
-
- $parrent = get_request("serviceid",0);
$table->AddRow(array(
- array(new CCheckBox("group_serviceid[]",NULL,NULL,$service["serviceid"]),$service["serviceid"]),
- array($prefix, new CLink($service["name"]." [$childs]",
- "services.php?serviceid=".$service["serviceid"]."&parentid=$parrent#form")),
- algorithm2str($service["algorithm"]),
+ array(new CCheckBox("group_serviceid[]",null,null,$db_service_data["serviceid"]),
+ $prefix,
+ $description
+ ),
+ algorithm2str($db_service_data["algorithm"]),
$trigger
));
}
- $table->SetFooter(new CCol(new CButton("delete","Delete selected","return Confirm('".S_DELETE_SELECTED_SERVICES."');")));
+ $table->SetFooter(new CCol(new CButtonQMessage('delete',S_DELETE_SELECTED,S_DELETE_SELECTED_SERVICES,null,false)));
$form->AddItem($table);
$form->Show();
?>
<?php
- if(isset($_REQUEST["serviceid"]))
+ if(isset($service["serviceid"]))
{
echo BR;
@@ -245,12 +355,12 @@
$form = new CForm();
$form->SetName("Links");
- $form->AddVar("serviceid",$_REQUEST["serviceid"]);
- $form->AddVar("parentid",$_REQUEST["parentid"]);
+ $form->AddVar("serviceid",$service["serviceid"]);
+ $form->AddVar("path",$path);
$table = new CTableInfo();
$table->SetHeader(array(
- array(new CCheckBox("all_services",NULL,
+ array(new CCheckBox("all_services",null,
"CheckAll('".$form->GetName()."','all_services');"),
S_LINK),
S_SERVICE_1,
@@ -258,27 +368,27 @@
S_SOFT_HARD_LINK
));
- $result=DBselect("select sl.linkid, sl.soft, sl.serviceupid, sl.servicedownid,".
+ $result=DBselect("select distinct sl.linkid, sl.soft, sl.serviceupid, sl.servicedownid,".
" s1.name as serviceupname, s2.name as servicedownname".
" from services s1, services s2, services_links sl".
" where sl.serviceupid=s1.serviceid and sl.servicedownid=s2.serviceid".
- " and (sl.serviceupid=".$_REQUEST["serviceid"]." or sl.servicedownid=".$_REQUEST["serviceid"].")");
+ " and (sl.serviceupid=".$service["serviceid"]." or sl.servicedownid=".$service["serviceid"].")");
$i = 1;
while($row=DBfetch($result))
{
$table->AddRow(array(
array(
- new CCheckBox("group_linkid[]",NULL,NULL,$row["linkid"]),
+ new CCheckBox("group_linkid[]",null,null,$row["linkid"]),
new CLink(S_LINK.SPACE.$i++,
- "services.php?form=update&linkid=".$row["linkid"].url_param("serviceid"),
+ "services.php?form=update&linkid=".$row["linkid"].url_param("serviceid").url_param("path"),
"action"),
),
- new CLink($row["serviceupname"],"services.php?serviceid=".$row["serviceupid"]),
- new CLink($row["servicedownname"],"services.php?serviceid=".$row["servicedownid"]),
+ new CLink($row["serviceupname"],"services.php?serviceid=".$row["serviceupid"].url_param("path")),
+ new CLink($row["servicedownname"],"services.php?serviceid=".$row["servicedownid"].url_param("path")),
$row["soft"] == 0 ? S_HARD : S_SOFT
));
}
- $table->SetFooter(new CCol(new CButton("delete","Delete selected","return Confirm('".S_DELETE_SELECTED_LINKS."');")));
+ $table->SetFooter(new CCol(new CButtonQMessage('delete',S_DELETE_SELECTED,S_DELETE_SELECTED_SERVICES,null,false)));
$form->AddItem($table);
$form->Show();
}
@@ -289,32 +399,30 @@
$frmService = new CFormTable(S_SERVICE);
$frmService->SetHelp("web.services.service.php");
- $frmService->AddVar("parentid",$_REQUEST["parentid"]);
+ $frmService->AddVar("path",$path);
$service_times = get_request('service_times',array());
$new_service_time = get_request('new_service_time',array('type' => SERVICE_TIME_TYPE_UPTIME));
- if(isset($_REQUEST["serviceid"]))
+ if(isset($service["serviceid"]))
{
- $frmService->AddVar("serviceid",$_REQUEST["serviceid"]);
-
- $service=get_service_by_serviceid($_REQUEST["serviceid"]);
+ $frmService->AddVar("serviceid",$service["serviceid"]);
$frmService->SetTitle(S_SERVICE." \"".$service["name"]."\"");
}
- if(isset($_REQUEST["serviceid"]) && !isset($_REQUEST["form_refresh"]))
+ if(isset($service["serviceid"]) && !isset($_REQUEST["form_refresh"]))
{
- $name =$service["name"];
- $algorithm =$service["algorithm"];
- $showsla =$service["showsla"];
- $goodsla =$service["goodsla"];
- $sortorder =$service["sortorder"];
- $triggerid =$service["triggerid"];
- $linktrigger = isset($triggerid) ? 'yes' : 'no';
+ $name = $service["name"];
+ $algorithm = $service["algorithm"];
+ $showsla = $service["showsla"];
+ $goodsla = $service["goodsla"];
+ $sortorder = $service["sortorder"];
+ $triggerid = $service["triggerid"];
+ $linktrigger = isset($triggerid) ? 1 : 0;
if(!isset($triggerid)) $triggerid = 0;
- $result = DBselect('select * from services_times where serviceid='.$_REQUEST['serviceid']);
+ $result = DBselect('select * from services_times where serviceid='.$service['serviceid']);
while($db_stime = DBfetch($result))
{
$stime = array(
@@ -335,12 +443,12 @@
$sortorder = get_request("sortorder",0);
$algorithm = get_request("algorithm",0);
$triggerid = get_request("triggerid",0);
- $linktrigger = isset($_REQUEST["linktrigger"]) ? 'yes' : 'no';
+ $linktrigger = get_request("linktrigger",0);
}
- if(isset($_REQUEST["serviceid"]))
+ if(isset($service))
{
- $frmService->AddVar("serviceid",$_REQUEST["serviceid"]);
+ $frmService->AddVar("serviceid",$service["serviceid"]);
}
$frmService->AddRow(S_NAME,new CTextBox("name",$name));
@@ -350,7 +458,7 @@
$cmbAlg->AddItem(2,S_MIN_BIG);
$frmService->AddRow(S_STATUS_CALCULATION_ALGORITHM, $cmbAlg);
- $frmService->AddRow(S_SHOW_SLA, new CCheckBox("showsla",$showsla,'submit();'));
+ $frmService->AddRow(S_SHOW_SLA, new CCheckBox("showsla",$showsla,'submit();',1));
if($showsla)
$frmService->AddRow(S_ACCEPTABLE_SLA_IN_PERCENT,new CTextBox("goodsla",$goodsla,6));
@@ -379,7 +487,7 @@
$to = date('d M Y H:i', $val['to']);
break;
}
- array_push($stime_el, array(new CCheckBox("rem_service_times[]", 'no', NULL,$i),
+ array_push($stime_el, array(new CCheckBox("rem_service_times[]", 'no', null,$i),
$type,':'.SPACE, $from, SPACE.'-'.SPACE, $to,
(!empty($val['note']) ? BR.'['.htmlspecialchars($val['note']).']' : '' ),BR));
@@ -439,9 +547,9 @@
new CButton('add_service_time','add')
));
- $frmService->AddRow(S_LINK_TO_TRIGGER_Q, new CCheckBox("linktrigger",$linktrigger,"submit();"));
+ $frmService->AddRow(S_LINK_TO_TRIGGER_Q, new CCheckBox("linktrigger",$linktrigger,"submit();",1));
- if($linktrigger == 'yes')
+ if($linktrigger == 1)
{
if($triggerid > 0)
$trigger = expand_trigger_description($triggerid);
@@ -463,28 +571,28 @@
$frmService->AddRow(S_SORT_ORDER_0_999, new CTextBox("sortorder",$sortorder,3));
$frmService->AddItemToBottomRow(new CButton("save_service",S_SAVE));
- if(isset($_REQUEST["serviceid"]))
+ if(isset($service["serviceid"]))
{
$frmService->AddItemToBottomRow(SPACE);
$frmService->AddItemToBottomRow(new CButtonDelete(
"Delete selected service?",
- url_param("form").url_param("serviceid")."&delete_service=1"
+ url_param("form").url_param("serviceid").url_param("path")
));
}
$frmService->AddItemToBottomRow(SPACE);
- $frmService->AddItemToBottomRow(new CButtonCancel("&serviceid=".get_request("parentid",0)));
+ $frmService->AddItemToBottomRow(new CButtonCancel(url_param('serviceid').url_param('path')));
$frmService->Show();
?>
<?php
- if(isset($_REQUEST["serviceid"]))
+ if(isset($service["serviceid"]))
{
echo BR;
$frmLink = new CFormTable(S_LINK_TO);
$frmLink->SetHelp("web.services.link.php");
- $frmLink->AddVar("serviceid",$_REQUEST["serviceid"]);
- $frmLink->AddVar("parentid",$_REQUEST["parentid"]);
+ $frmLink->AddVar("serviceid",$service["serviceid"]);
+ $frmLink->AddVar("path",$path);
if(isset($_REQUEST["linkid"]))
{
@@ -497,14 +605,13 @@
}
else
{
- $serviceupid = get_request("serviceupid",$_REQUEST["serviceid"]);
+ $serviceupid = get_request("serviceupid",$service["serviceid"]);
$servicedownid = get_request("servicedownid",0);
$soft = get_request("soft",1);
}
- $frmLink->AddVar("serviceupid",$_REQUEST["serviceid"]);
+ $frmLink->AddVar("serviceupid",$service["serviceid"]);
- $service = get_service_by_serviceid($_REQUEST["serviceid"]);
$name = $service["name"];
if(isset($service["triggerid"]))
$name .= ": ".expand_trigger_description($service["triggerid"]);
@@ -512,10 +619,18 @@
$cmbServices = new CComboBox("servicedownid",$servicedownid);
$result=DBselect("select serviceid,triggerid,name from services where serviceid<>$serviceupid order by name");
+
+ $result = DBselect("select s.* 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 <> ".$serviceupid);
+
while($row=Dbfetch($result))
{
if(DBfetch(DBselect("select linkid from services_links".
- " where servicedownid<>$servicedownid and serviceupid=$serviceupid and servicedownid=".$row["serviceid"])))
+ " where (servicedownid<>$servicedownid and serviceupid=$serviceupid and servicedownid=".$row["serviceid"].") ".
+ " or (servicedownid=".$row["serviceid"]." and soft=0) ")))
continue;
$name = $row["name"];
@@ -527,7 +642,7 @@
$frmLink->AddRow(S_SERVICE_2, $cmbServices);
- $frmLink->AddRow(S_SOFT_LINK_Q, new CCheckBox("soft",$soft));
+ $frmLink->AddRow(S_SOFT_LINK_Q, new CCheckBox("soft",$soft,null,1));
$frmLink->AddItemToBottomRow(new CButton("save_link",S_SAVE));
if(isset($_REQUEST["linkid"]))
@@ -535,27 +650,29 @@
$frmLink->AddItemToBottomRow(SPACE);
$frmLink->AddItemToBottomRow(new CButtonDelete(
"Delete selected services linkage?",
- url_param("form").url_param("linkid")."&delete_link=1".url_param("serviceid")
+ url_param("form").url_param("linkid").url_param("serviceid").url_param('path')
));
}
$frmLink->AddItemToBottomRow(SPACE);
- $frmLink->AddItemToBottomRow(new CButtonCancel(url_param("serviceid")));
+ $frmLink->AddItemToBottomRow(new CButtonCancel(url_param("serviceid").url_param("path")));
$frmLink->Show();
}
?>
<?php
- if(isset($_REQUEST["serviceid"]))
+ if(isset($service["serviceid"]))
{
echo BR;
$frmDetails = new CFormTable(S_ADD_SERVER_DETAILS);
$frmDetails->SetHelp("web.services.server.php");
- $frmDetails->AddVar("serviceid",$_REQUEST["serviceid"]);
- $frmDetails->AddVar("parentid",$_REQUEST["parentid"]);
+ $frmDetails->AddVar("serviceid",$service["serviceid"]);
+ $frmDetails->AddVar("path",$path);
$cmbServers = new CComboBox("serverid");
- $result=DBselect("select hostid,host from hosts where mod(hostid,100)=$ZBX_CURNODEID order by host");
+ $result=DBselect("select hostid,host from hosts where ".DBid2nodeid("hostid")."=".$ZBX_CURNODEID.
+ " and hostid not in (".$denyed_hosts.") ".
+ " order by host");
while($row=DBfetch($result))
{
$cmbServers->AddItem($row["hostid"],$row["host"]);
@@ -569,5 +686,7 @@
?>
<?php
- show_page_footer();
+
+include_once "include/page_footer.php";
+
?>