diff -ur zabbix-1.4.1-orig/frontends/php/chart_sla.php zabbix-1.4.1/frontends/php/chart_sla.php --- zabbix-1.4.1-orig/frontends/php/chart_sla.php 2007-06-29 22:50:30.000000000 +0200 +++ zabbix-1.4.1/frontends/php/chart_sla.php 2007-08-18 21:24:15.000000000 +0200 @@ -32,7 +32,9 @@ array(T_ZBX_INT, O_MAND,P_SYS, DB_ID, null) + "serviceid"=> array(T_ZBX_INT, O_MAND,P_SYS, DB_ID, null), + "period_start"=> array(T_ZBX_STR, O_OPT,null, null,null), + "period_end"=> array(T_ZBX_STR, O_OPT,null, null,null) ); check_fields($fields); @@ -70,8 +72,9 @@ ImageFilledRectangle($im,0,0,$sizeX,$sizeY,ImageColorAllocate($im,120,200,120)); $now=time(NULL); - $period_start=$now-7*24*3600; - $period_end=$now; + $period_start = get_request("period_start", $now-7*24*3600); + $period_end = get_request("period_end", $now); + $stat=calculate_service_availability($_REQUEST["serviceid"],$period_start,$period_end); $problem=$stat["problem"]; diff -ur zabbix-1.4.1-orig/frontends/php/include/locales/de_de.inc.php zabbix-1.4.1/frontends/php/include/locales/de_de.inc.php --- zabbix-1.4.1-orig/frontends/php/include/locales/de_de.inc.php 2007-06-29 22:50:27.000000000 +0200 +++ zabbix-1.4.1/frontends/php/include/locales/de_de.inc.php 2007-08-18 21:24:15.000000000 +0200 @@ -622,7 +622,14 @@ "S_IT_SERVICES_BIG"=> "IT DIENSTE", "S_SERVICE"=> "Dienst", "S_REASON"=> "Grund", - "S_SLA_LAST_7_DAYS"=> "SLA (letzte 7 Tage)", + 'S_SLA_TODAY'=> 'Heute', + 'S_SLA_THIS_WEEK'=> 'diese Woche', + 'S_SLA_THIS_MONTH'=> 'dieser Monat', + 'S_SLA_THIS_YEAR'=> 'dieses Jahr', + 'S_SLA_LAST_24_HOURS'=> 'letzten 24 Stunden', + 'S_SLA_LAST_7_DAYS'=> 'letzten 7 Tage', + 'S_SLA_LAST_30_DAYS'=> 'letzten 30 Tage', + 'S_SLA_LAST_365_DAYS'=> 'letzten 365 Tage', "S_PLANNED_CURRENT_SLA"=> "geplanter/aktueller SLA", "S_TRIGGER_BIG"=> "AUSLÖSER", diff -ur zabbix-1.4.1-orig/frontends/php/include/locales/en_gb.inc.php zabbix-1.4.1/frontends/php/include/locales/en_gb.inc.php --- zabbix-1.4.1-orig/frontends/php/include/locales/en_gb.inc.php 2007-06-29 22:50:27.000000000 +0200 +++ zabbix-1.4.1/frontends/php/include/locales/en_gb.inc.php 2007-08-18 21:24:15.000000000 +0200 @@ -1110,7 +1110,14 @@ 'S_SERVICE'=> 'Service', 'S_SERVICES'=> 'Services', 'S_REASON'=> 'Reason', - 'S_SLA_LAST_7_DAYS'=> 'SLA (last 7 days)', + 'S_SLA_TODAY'=> 'today', + 'S_SLA_THIS_WEEK'=> 'this week', + 'S_SLA_THIS_MONTH'=> 'this month', + 'S_SLA_THIS_YEAR'=> 'this year', + 'S_SLA_LAST_24_HOURS'=> 'last 24 hours', + 'S_SLA_LAST_7_DAYS'=> 'last 7 days', + 'S_SLA_LAST_30_DAYS'=> 'last 30 days', + 'S_SLA_LAST_365_DAYS'=> 'last 365 days', 'S_PLANNED_CURRENT_SLA'=> 'Planned/current SLA', 'S_TRIGGER_BIG'=> 'TRIGGER', diff -ur zabbix-1.4.1-orig/frontends/php/include/services.inc.php zabbix-1.4.1/frontends/php/include/services.inc.php --- zabbix-1.4.1-orig/frontends/php/include/services.inc.php 2007-06-29 22:50:28.000000000 +0200 +++ zabbix-1.4.1/frontends/php/include/services.inc.php 2007-08-18 21:24:15.000000000 +0200 @@ -275,7 +275,7 @@ ) { /* calculate period from '-1 week' to know period name for $period_start */ - for($curr = ($period_start - (7*24*36000)); $curr<=$period_end; $curr += 6*3600) + for($curr = ($period_start - (7*24*3600)); $curr<=$period_end; $curr += 6*3600) { $curr_date = getdate($curr); $from_date = getdate($ts_from); diff -ur zabbix-1.4.1-orig/frontends/php/srv_status.php zabbix-1.4.1/frontends/php/srv_status.php --- zabbix-1.4.1-orig/frontends/php/srv_status.php 2007-06-29 22:50:30.000000000 +0200 +++ zabbix-1.4.1/frontends/php/srv_status.php 2007-08-18 21:24:15.000000000 +0200 @@ -34,10 +34,13 @@ // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION $fields=array( "serviceid"=> array(T_ZBX_INT, O_OPT, P_SYS|P_NZERO, DB_ID, NULL), - "showgraph"=> array(T_ZBX_INT, O_OPT, P_SYS, IN("1")."isset({serviceid})",NULL) + "showgraph"=> array(T_ZBX_INT, O_OPT, P_SYS, IN("1")."isset({serviceid})",NULL), + "period"=> array(T_ZBX_STR, O_OPT, null, IN('"today","thisweek","thismonth","thisyear","last24h","last7days","last30days","last365days"'), NULL) ); check_fields($fields); + + $period = get_request("period", "thismonth"); ?> AddItem("today",S_SLA_TODAY); + $cmbPeriod->AddItem("thisweek",S_SLA_THIS_WEEK); + $cmbPeriod->AddItem("thismonth",S_SLA_THIS_MONTH); + $cmbPeriod->AddItem("thisyear",S_SLA_THIS_YEAR); + $cmbPeriod->AddItem("last24h",S_SLA_LAST_24_HOURS); + $cmbPeriod->AddItem("last7days",S_SLA_LAST_7_DAYS); + $cmbPeriod->AddItem("last30days",S_SLA_LAST_30_DAYS); + $cmbPeriod->AddItem("last365days",S_SLA_LAST_365_DAYS); + $form->AddItem(array(SPACE.S_PERIOD.SPACE, $cmbPeriod)); + + show_table_header(S_IT_SERVICES_BIG, $form); if(isset($service)&&isset($_REQUEST["showgraph"])){ $table = new CTable(null,'chart'); @@ -127,12 +143,51 @@ } 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; + switch($period) + { + case "today": + $period_start = mktime(0, 0, 0, date("m"), date("d"), date("Y")); + $sla_description = S_SLA_TODAY; + break; + case "thisweek": + // TODO: this is wrong if the week started last month or last year + $period_start = mktime(0, 0, 0, date("m"), date("d") - date("w"), date("Y")); + $sla_description = S_SLA_THIS_WEEK; + break; + case "thismonth": + $period_start = mktime(0, 0, 0, date("m"), 1, date("Y")); + $sla_description = S_SLA_THIS_MONTH; + break; + case "thisyear": + $period_start = mktime(0, 0, 0, 1, 1, date("Y")); + $sla_description = S_SLA_THIS_YEAR; + break; + case "last24h": + $period_start = $now-24*3600; + $sla_description = S_SLA_LAST_24_HOURS; + break; + case "last7days": + $period_start = $now-7*24*3600; + $sla_description = S_SLA_LAST_7_DAYS; + break; + case "last30days": + $period_start = $now-30*24*3600; + $sla_description = S_SLA_LAST_30_DAYS; + break; + case "last365days": + $period_start = $now-365*24*3600; + $sla_description = S_SLA_LAST_365_DAYS; + break; + default: + echo "uhm"; + } $period_end = $now; + + $row['sla'] = new CLink(new CImg("chart_sla.php?serviceid=".$row["serviceid"] + ."&period_start=".$period_start."&period_end=".$period_end), + "report3.php?serviceid=".$row["serviceid"]."&year=".date("Y")); $stat = calculate_service_availability($row["serviceid"],$period_start,$period_end); @@ -174,8 +229,8 @@ $tree = new CTree($treeServ,array('caption' => ''.S_SERVICE.'', 'status' => ''.S_STATUS.'', 'reason' => ''.S_REASON.'', - 'sla' => ''.S_SLA_LAST_7_DAYS.'', - 'sla2' => ''.nbsp(S_PLANNED_CURRENT_SLA).'', + 'sla' => 'SLA ('.$sla_description.')', + 'sla2' => ''.nbsp("SLA (".S_PLANNED_CURRENT_SLA.")").'', 'graph' => ''.S_GRAPH.'')); if($tree){