diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-10-23 07:34:27 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-10-23 07:34:27 +0000 |
| commit | 28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89 (patch) | |
| tree | 8281ccd48964ee0dd11c5ea689091fa3cef706fb /frontends/php/services.php | |
| parent | 495799b2aa61aab23d74d7faa110a0cd09d59bf0 (diff) | |
| download | zabbix-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.php | 391 |
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"; + ?> |
