0)
{
$sizeX=$HTTP_GET_VARS["width"];
}
else
{
$sizeX=900;
}
$sizeY=200;
$shiftX=12;
$shiftYup=13;
$shiftYdown=7+15*2;
// Header( "Content-type: text/html");
Header( "Content-type: image/png");
Header( "Expires: Mon, 17 Aug 1998 12:51:50 GMT");
check_authorisation();
$im = imagecreate($sizeX+$shiftX+61,$sizeY+$shiftYup+$shiftYdown+10);
$red=ImageColorAllocate($im,255,0,0);
$darkred=ImageColorAllocate($im,150,0,0);
$green=ImageColorAllocate($im,0,255,0);
$darkgreen=ImageColorAllocate($im,0,150,0);
$blue=ImageColorAllocate($im,0,0,255);
$darkblue=ImageColorAllocate($im,0,0,150);
$yellow=ImageColorAllocate($im,255,255,0);
$darkyellow=ImageColorAllocate($im,150,150,0);
$cyan=ImageColorAllocate($im,0,255,255);
$black=ImageColorAllocate($im,0,0,0);
$gray=ImageColorAllocate($im,150,150,150);
$white=ImageColorAllocate($im,255,255,255);
$bg=ImageColorAllocate($im,6+6*16,7+7*16,8+8*16);
$x=imagesx($im);
$y=imagesy($im);
ImageFilledRectangle($im,0,0,$sizeX+$shiftX+61,$sizeY+$shiftYup+$shiftYdown+10,$white);
ImageRectangle($im,0,0,$x-1,$y-1,$black);
if(!check_right("Item","R",$HTTP_GET_VARS["itemid"]))
{
// show_table_header("No permissions !");
// show_footer();
ImagePng($im);
ImageDestroy($im);
exit;
}
$now = time(NULL);
$to_time=$now;
$from_time=$to_time-$period;
$from_time_now=$to_time-24*3600;
$count=array();
$min=array();
$max=array();
$avg=array();
$sql="select round(900*((clock+3*3600)%(24*3600))/(24*3600)) as i,count(*) as count,avg(value) as avg,min(value) as min,max(value) as max from history where itemid=".$HTTP_GET_VARS["itemid"]." and clock>$from_time and clock<$to_time group by 1";
// echo $sql."
";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$i=$row["i"];
$max[$i]=$row["max"];
$min[$i]=$row["min"];
$avg[$i]=$row["avg"];
$count[$i]=$row["count"];
}
$count_now=array();
$avg_now=array();
$result=DBselect("select round(900*((clock+3*3600)%(24*3600))/(24*3600)) as i,count(*) as count,avg(value) as avg,min(value) as min,max(value) as max from history where itemid=".$HTTP_GET_VARS["itemid"]." and clock>$from_time_now and clock<$to_time group by 1");
while($row=DBfetch($result))
{
$i=$row["i"];
$avg_now[$i]=$row["avg"];
$count_now[$i]=$row["count"];
}
for($i=0;$i<=$sizeY;$i+=$sizeY/5)
{
ImageDashedLine($im,$shiftX,$i+$shiftYup,$sizeX+$shiftX,$i+$shiftYup,$gray);
}
for($i=0;$i<=$sizeX;$i+=$sizeX/24)
{
ImageDashedLine($im,$i+$shiftX,$shiftYup,$i+$shiftX,$sizeY+$shiftYup,$gray);
ImageString($im, 1,$i+$shiftX-11, $sizeY+$shiftYup+5, date("H:i",-3*3600+24*3600*$i/900) , $black);
}
unset($maxY);
unset($minY);
$maxY=max($avg);
$tmp=max($avg_now);
if($tmp>$maxY)
{
$maxY=$tmp;
}
$minY=min($avg);
$tmp=min($avg_now);
if($tmp<$minY)
{
$minY=$tmp;
}
$maxX=900;
$minX=0;
if(isset($minY)&&($maxY)&&($minX!=$maxX)&&($minY!=$maxY))
{
$nodata=0;
for($i=0;$i<900;$i++)
{
if(isset($count[$i])&&$count[$i]>0)
{
/* if(!isset($trendavg))
{
$x1=$sizeX*($i-$minX)/($maxX-$minX);
$y1=$sizeY*($max[$i]-$minY)/($maxY-$minY);
$x2=$sizeX*($i-$minX)/($maxX-$minX);
$y2=$sizeY*($min[$i]-$minY)/($maxY-$minY);
$y1=$sizeY-$y1;
$y2=$sizeY-$y2;
ImageLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$bg);
}*/
/* if(!isset($trendavg))
{
$x1=$sizeX*($i-$minX)/($maxX-$minX);
$y1=$sizeY*($max[$i]-$minY)/($maxY-$minY);
$x2=$x1;
$y2=0;
$y1=$sizeY-$y1;
$y2=$sizeY-$y2;
ImageLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$blue);
}*/
$x1=$sizeX*($i-$minX)/($maxX-$minX);
$y1=$sizeY*($avg[$i]-$minY)/($maxY-$minY);
$x2=$x1;
$y2=0;
$y1=$sizeY-$y1;
$y2=$sizeY-$y2;
ImageLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$darkgreen);
/* if(!isset($trendavg))
{
$x1=$sizeX*($i-$minX)/($maxX-$minX);
$y1=$sizeY*($min[$i]-$minY)/($maxY-$minY);
$x2=$x1;
$y2=0;
$y1=$sizeY-$y1;
$y2=$sizeY-$y2;
ImageLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$green);
}*/
}
if(isset($count_now[$i])&&isset($count_now[$i-1])&&($count_now[$i]>0)&&($count_now[$i-1]>0))
{
if($i>0)
{
$x1=$sizeX*($i-$minX)/($maxX-$minX);
$y1=$sizeY*($avg_now[$i]-$minY)/($maxY-$minY);
$x2=$sizeX*($i-$minX-1)/($maxX-$minX);
$y2=$sizeY*($avg_now[$i-1]-$minY)/($maxY-$minY);
// $x2=$x1;
// $y2=0;
$y1=$sizeY-$y1;
$y2=$sizeY-$y2;
ImageLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$darkred);
// ImageLine($im,$x1+$shiftX-1,$y1+$shiftYup,$x2+$shiftX-1,$y2+$shiftYup,$darkred);
}
}
# ImageStringUp($im, 1, $x1+10, $sizeY+$shiftYup+15, $i , $red);
}
}
else
{
// ImageLine($im,$shiftX,$shiftYup+$sizeY/2,$sizeX+$shiftX,$shiftYup+$sizeY/2,$green);
}
$i=intval( 900*(($now+3*3600)%(24*3600))/(24*3600));
$x1=$sizeX*($i-$minX)/($maxX-$minX);
$y1=$sizeY*($avg[$i]-$minY)/($maxY-$minY);
$x2=$x1;
$y2=0;
$y1=$sizeY-$y1;
$y2=$sizeY-$y2;
// ImageDashedLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$black);
ImageDashedLine($im,$x1+$shiftX,$shiftYup,$x2+$shiftX,$sizeY+$shiftYup,$black);
if(isset($nodata)&&($nodata == 0))
{
$item=get_item_by_itemid($HTTP_GET_VARS["itemid"]);
for($i=0;$i<=$sizeY;$i+=$sizeY/5)
{
ImageString($im, 1, $sizeX+5+$shiftX, $sizeY-$i-4+$shiftYup, convert_units($i*($maxY-$minY)/$sizeY+$minY,$item["units"],$item["multiplier"]) , $darkred);
}
// date("dS of F Y h:i:s A",DBget_field($result,0,0));
// ImageString($im, 1,10, $sizeY+$shiftY+5, date("dS of F Y h:i:s A",$minX) , $red);
// ImageString($im, 1,$sizeX+$shiftX-168,$sizeY+$shiftY+5, date("dS of F Y h:i:s A",$maxX) , $red);
}
else
{
ImageString($im, 2,$sizeX/2 -50, $sizeY+$shiftYup+3, "NO DATA FOR THIS PERIOD" , $red);
}
ImageFilledRectangle($im,$shiftX,$sizeY+$shiftYup+19+15*0,$shiftX+5,$sizeY+$shiftYup+15+9+15*0,$darkgreen);
ImageRectangle($im,$shiftX,$sizeY+$shiftYup+19+15*0,$shiftX+5,$sizeY+$shiftYup+15+9+15*0,$black);
if($HTTP_GET_VARS["type"]=="year")
{
ImageString($im, 2,$shiftX+9,$sizeY+$shiftYup+15*0+15, "Average for last 365 days", $black);
}
else if($HTTP_GET_VARS["type"]=="month")
{
ImageString($im, 2,$shiftX+9,$sizeY+$shiftYup+15*0+15, "Average for last 30 days", $black);
}
else
{
ImageString($im, 2,$shiftX+9,$sizeY+$shiftYup+15*0+15, "Average for last 7 days", $black);
}
ImageFilledRectangle($im,$shiftX,$sizeY+$shiftYup+19+15*1,$shiftX+5,$sizeY+$shiftYup+15+9+15*1,$darkred);
ImageRectangle($im,$shiftX,$sizeY+$shiftYup+19+15*1,$shiftX+5,$sizeY+$shiftYup+15+9+15*1,$black);
ImageString($im, 2,$shiftX+9,$sizeY+$shiftYup+15*1+15, "Average for last 24 hours", $black);
// ImageString($im, 1,$shiftX, $sizeY+$shiftY+15, "AVG (LAST WEEK)" , $darkgreen);
// ImageString($im, 1,$shiftX+80, $sizeY+$shiftY+15, "AVG (TODAY)" , $darkred);
ImageStringUp($im,0,imagesx($im)-10,imagesy($im)-50, "http://www.zabbix.org", $gray);
$end_time=time(NULL);
ImageString($im, 0,imagesx($im)-100,imagesy($im)-12,"Generated in ".($end_time-$start_time)." sec", $gray);
ImagePng($im);
ImageDestroy($im);
?>