$problem = array(); $year = date('Y'); $start = mktime(0, 0, 0, 1, 1, $year); $wday = date('w', $start); if ($wday == 0) { $wday = 7; } $start = $start - ($wday - 1) * 24 * 3600; for ($i = 0; $i < 52; $i++) { if (($period_start = $start + 7 * 24 * 3600 * $i) > time()) { break; } if (($period_end = $start + 7 * 24 * 3600 * ($i + 1)) > time()) { $period_end = time(); } $stat = calculate_service_availability($_REQUEST['serviceid'], $period_start, $period_end); $problem[$i] = $stat['problem']; $ok[$i] = $stat['ok']; $count_now[$i] = 1; } for ($i = 0; $i <= $sizeY; $i += $sizeY / 10) { DashedLine($im, $shiftX, $i + $shiftYup, $sizeX + $shiftX, $i + $shiftYup, $gray); } for ($i = 0, $period_start = $start; $i <= $sizeX; $i += $sizeX / 52, $period_start += 7 * 24 * 3600) { DashedLine($im, $i + $shiftX, $shiftYup, $i + $shiftX, $sizeY + $shiftYup, $gray); imagestringup($im, 1, $i + $shiftX - 4, $sizeY + $shiftYup + 32, date('d.M', $period_start), $black); } $maxY = max(max($problem), 100); $minY = 0; $maxX = 900; $minX = 0;
$result2 = DBselect('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 ' . ' AND ' . DBcondition('t.triggerid', $available_triggers) . ' AND ' . DBin_node('s.serviceid') . ' ORDER BY s.status DESC, t.description'); while ($row2 = DBfetch($result2)) { if (is_string($row['reason']) && $row['reason'] == '-') { $row['reason'] = new CList(null, "itservices"); } if (does_service_depend_on_the_service($row["serviceid"], $row2["serviceid"])) { $row['reason']->AddItem(new CLink(expand_trigger_description($row2["triggerid"]), "events.php?triggerid=" . $row2["triggerid"])); } } } if ($row["showsla"] == 1) { $row['sla'] = new CLink(new CImg("chart_sla.php?serviceid=" . $row["serviceid"]), "report3.php?serviceid=" . $row["serviceid"] . "&year=" . date("Y")); $now = time(NULL); $period_start = $now - 7 * 24 * 3600; $period_end = $now; $stat = calculate_service_availability($row["serviceid"], $period_start, $period_end); if ($row["goodsla"] > $stat["ok"]) { $sla_style = 'red'; } else { $sla_style = 'green'; } $row['sla2'] = array(new CSpan(sprintf("%.2f", $row['goodsla']), 'green'), '/', new CSpan(sprintf("%.2f", $stat['ok']), $sla_style)); } else { $row['sla'] = "-"; $row['sla2'] = "-"; } if (isset($services[$row['serviceid']])) { $services[$row['serviceid']] = array_merge($services[$row['serviceid']], $row); } else { $services[$row['serviceid']] = $row; }
$wd = date("w", $time); $wd = $wd == 0 ? 6 : $wd - 1; return $time + ($w * 7 - $wd) * 24 * 3600; } function format_time($t) { return date("d M Y H:i", $t); } function format_time2($t) { return format_time($t); } break; } $table->SetHeader($header); for ($t = $from; $t <= $to; $t++) { if (($start = get_time($t)) > time()) { break; } if (($end = get_time($t + 1)) > time()) { $end = time(); } $stat = calculate_service_availability($service["serviceid"], $start, $end); $ok = new CSpan(sprintf("%dd %dh %dm", $stat["ok_time"] / (24 * 3600), $stat["ok_time"] % (24 * 3600) / 3600, $stat["ok_time"] % 3600 / 60), "off"); $problems = new CSpan(sprintf("%dd %dh %dm", $stat["problem_time"] / (24 * 3600), $stat["problem_time"] % (24 * 3600) / 3600, $stat["problem_time"] % 3600 / 60), "on"); $downtime = sprintf("%dd %dh %dm", $stat["downtime_time"] / (24 * 3600), $stat["downtime_time"] % (24 * 3600) / 3600, $stat["downtime_time"] % 3600 / 60); $percentage = new CSpan(sprintf("%2.2f%%", $stat["ok"]), "off"); $table->AddRow(array(format_time($start), format_time2($end), $ok, $problems, $downtime, $percentage, $service["showsla"] == 1 ? new CSpan($service["goodsla"], $stat["ok"] >= $service["goodsla"] ? "off" : "on") : "-")); } $table->Show(); include_once "include/page_footer.php";