46
40
check_fields($fields);
43
$denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT);
45
if(isset($_REQUEST["serviceid"]) && $_REQUEST["serviceid"] > 0){
47
if( !($service = DBfetch(DBselect("select s.* from services s left join triggers t on s.triggerid=t.triggerid ".
48
" left join functions f on t.triggerid=f.triggerid left join items i on f.itemid=i.itemid ".
49
" where (i.hostid is null or i.hostid not in (".$denyed_hosts.")) ".
50
" and ".DBid2nodeid("s.serviceid")."=".$ZBX_CURNODEID.
51
" and s.serviceid=".$_REQUEST["serviceid"]
57
unset($_REQUEST["serviceid"]);
50
60
show_table_header(S_IT_SERVICES_BIG);
52
if(isset($_REQUEST["serviceid"])&&isset($_REQUEST["showgraph"]))
54
$table = new CTableInfo();
55
$table->AddRow(new CCol("<IMG SRC=\"chart5.php?serviceid=".$_REQUEST["serviceid"]."\" border=0/>", "center"));
62
if(isset($service)&&isset($_REQUEST["showgraph"])){
63
$table = new CTable(null,'chart');
64
$table->AddRow(new CImg("chart5.php?serviceid=".$service["serviceid"].url_param('path')));
62
$result=DBselect("select serviceid,name,triggerid,status,showsla,goodsla from services order by sortorder,name");
64
$table = new CTableInfo();
65
$table->SetHeader(array(S_SERVICE,S_STATUS,S_REASON,S_SLA_LAST_7_DAYS,nbsp(S_PLANNED_CURRENT_SLA),S_GRAPH));
66
if(isset($_REQUEST["serviceid"]))
68
$service=get_service_by_serviceid($_REQUEST["serviceid"]);
69
$srvc=new CLink($service["name"],"srv_status.php?serviceid=".$service["serviceid"],"action");
71
$status=get_service_status_description($service["status"]);
74
if($service["showsla"]==1)
76
$sla="<img src=\"chart_sla.php?serviceid=".$service["serviceid"]."\">";
80
$sla=new CSpan("-","center");
82
if($service["showsla"]==1)
85
$period_start=$now-7*24*3600;
87
$stat=calculate_service_availability($service["serviceid"],$period_start,$period_end);
89
if($service["goodsla"]>$stat["ok"])
97
$sla2=sprintf("<font color=\"00AA00\">%.2f%%</font><b>/</b><font color=\"%s\">%.2f%%</font>",$service["goodsla"],$color,$stat["ok"]);
103
$actions=new CLink(S_SHOW,"srv_status.php?serviceid=".$service["serviceid"]."&showgraph=1","action");
104
$table->addRow(array(
113
while($row=DBfetch($result))
115
if(!isset($_REQUEST["serviceid"]) && service_has_parent($row["serviceid"]))
119
if(isset($_REQUEST["serviceid"]) && service_has_no_this_parent($_REQUEST["serviceid"],$row["serviceid"]))
123
if(isset($row["triggerid"])&&!check_right_on_trigger("R",$row["triggerid"]))
127
$childs=get_num_of_service_childs($row["serviceid"]);
128
if(isset($row["triggerid"]))
130
$description=nbsp(expand_trigger_description($row["triggerid"]));
131
$description="[<a href=\"alarms.php?triggerid=".$row["triggerid"]."\">".S_TRIGGER_BIG."</a>] $description";
136
$description=$row["name"];
138
if(isset($_REQUEST["serviceid"]))
142
$service="$description";
146
$service=new CLink($description,"srv_status.php?serviceid=".$row["serviceid"],"action");
153
$service="$description";
157
$service=new CLink($description,"srv_status.php?serviceid=".$row["serviceid"],"action");
160
$status=get_service_status_description($row["status"]);
161
if($row["status"]==0)
168
$sql="select s.triggerid,s.serviceid from services s, triggers t where s.status>0 and s.triggerid is not NULL and t.triggerid=s.triggerid order by s.status desc,t.description";
169
$result2=DBselect($sql);
170
while($row2=DBfetch($result2))
172
if(does_service_depend_on_the_service($row["serviceid"],$row2["serviceid"]))
174
$description=nbsp(expand_trigger_description($row2["triggerid"]));
175
$reason=$reason."<li class=\"itservices\"><a href=\"alarms.php?triggerid=".$row2["triggerid"]."\">$description</a></li>";
178
$reason=$reason."</ul>";
181
if($row["showsla"]==1)
183
$sla="<a href=\"report3.php?serviceid=".$row["serviceid"]."&year=".date("Y")."\"><img src=\"chart_sla.php?serviceid=".$row["serviceid"]."\" border=0>";
190
if($row["showsla"]==1)
193
$period_start=$now-7*24*3600;
195
$stat=calculate_service_availability($row["serviceid"],$period_start,$period_end);
197
if($row["goodsla"]>$stat["ok"])
205
$sla2=sprintf("<font color=\"00AA00\">%.2f%%</font><b>/</b><font color=\"%s\">%.2f%%</font>",$row["goodsla"],$color,$stat["ok"]);
212
$actions=new CLink(S_SHOW,"srv_status.php?serviceid=".$row["serviceid"]."&showgraph=1","action");
213
$table->addRow(array(
68
$query = 'SELECT DISTINCT s.serviceid, sl.servicedownid, sl_p.serviceupid as serviceupid, s.triggerid, '.
69
' s.name as caption, s.algorithm, t.description, s.sortorder, sl.linkid, s.showsla, s.goodsla, s.status '.
71
' LEFT JOIN triggers t ON s.triggerid = t.triggerid '.
72
' LEFT JOIN services_links sl ON s.serviceid = sl.serviceupid and NOT(sl.soft=0) '.
73
' LEFT JOIN services_links sl_p ON s.serviceid = sl_p.servicedownid and sl_p.soft=0 '.
74
' LEFT JOIN functions f ON t.triggerid=f.triggerid '.
75
' LEFT JOIN items i ON f.itemid=i.itemid '.
76
' WHERE '.DBid2nodeid("s.serviceid").'='.$ZBX_CURNODEID.
77
' AND (i.hostid is null or i.hostid not in ('.$denyed_hosts.')) '.
78
' ORDER BY s.sortorder, sl_p.serviceupid, s.serviceid';
80
$result=DBSelect($query);
84
'0' => 0,'serviceid' => 0,
85
'1' => 0,'serviceupid' => 0,
86
'2' => '','caption' => 'root',
87
'3' => '','status' => SPACE,
88
'4' => '','reason' => SPACE,
89
'5' => '','sla' => SPACE,
90
'6' => '','sla2' => SPACE,
91
'7' => '','graph' => SPACE,
92
'7' => '','linkid'=>''
98
while($row = DBFetch($result)){
100
(empty($row['serviceupid']))?($row['serviceupid']='0'):('');
101
(empty($row['description']))?($row['description']='None'):('');
102
$row['graph'] = new CLink(S_SHOW,"srv_status.php?serviceid=".$row["serviceid"]."&showgraph=1".url_param('path'),"action");
104
if(isset($row["triggerid"]) && !empty($row["triggerid"])){
106
$url = new CLink(expand_trigger_description($row['triggerid']),'tr_events.php?triggerid='.$row['triggerid']);
107
$row['caption'] = $row['caption'].SPACE.'['.$url->ToString().']';
111
if($row["status"]==0 || (isset($service) && $service["serviceid"] == $row["serviceid"])){
114
$row['reason'] = new CList(null,"itservices");
115
$result2=DBselect("select s.triggerid,s.serviceid from services s, triggers t ".
116
" where s.status>0 and s.triggerid is not NULL and t.triggerid=s.triggerid ".
117
" and ".DBid2nodeid("s.serviceid")."=".$ZBX_CURNODEID.
118
" order by s.status desc,t.description");
120
while($row2=DBfetch($result2)){
121
if(does_service_depend_on_the_service($row["serviceid"],$row2["serviceid"])){
122
$row['reason']->AddItem(new CLink(
123
expand_trigger_description($row2["triggerid"]),
124
"tr_events.php?triggerid=".$row2["triggerid"]));
129
if($row["showsla"]==1){
130
$row['sla'] = new CLink(new CImg("chart_sla.php?serviceid=".$row["serviceid"]),
131
"report3.php?serviceid=".$row["serviceid"]."&year=".date("Y"));
134
$period_start = $now-7*24*3600;
137
$stat = calculate_service_availability($row["serviceid"],$period_start,$period_end);
139
if($row["goodsla"] > $stat["ok"]){
145
$row['sla2'] = sprintf("<font color=\"00AA00\">%.2f%%</font><b>/</b><font color=\"%s\">%.2f%%</font>",
146
$row["goodsla"], $color,$stat["ok"]);
152
if(isset($services[$row['serviceid']])){
153
$services[$row['serviceid']] = array_merge($services[$row['serviceid']],$row);
156
$services[$row['serviceid']] = $row;
159
if(isset($row['serviceupid']))
160
$services[$row['serviceupid']]['childs'][] = array('id' => $row['serviceid'], 'soft' => 0, 'linkid' => 0);
162
if(isset($row['servicedownid']))
163
$services[$row['serviceid']]['childs'][] = array('id' => $row['servicedownid'], 'soft' => 1, 'linkid' => $row['linkid']);
167
createShowServiceTree($services,$treeServ); //return into $treeServ parametr
170
$treeServ = del_empty_nodes($treeServ);
172
echo '<script src="js/services.js" type="text/javascript"></script>';
174
$tree = new CTree($treeServ,array('caption' => '<b>'.S_SERVICE.'</b>',
175
'status' => '<b>'.S_STATUS.'</b>',
176
'reason' => '<b>'.S_REASON.'</b>',
177
'sla' => '<b>'.S_SLA_LAST_7_DAYS.'</b>',
178
'sla2' => '<b>'.nbsp(S_PLANNED_CURRENT_SLA).'</b>',
179
'graph' => '<b>'.S_GRAPH.'</b>'));
182
echo $tree->CreateJS();
183
echo $tree->SimpleHTML();
185
error('Can\'t format Tree. Check logick structure in service links');
191
include_once "include/page_footer.php";