0)
{
$width=$HTTP_GET_VARS["width"];
}
else
{
$width=DBget_field($result,0,1);
}
$height=DBget_field($result,0,2);
$sizeX=$width;
$sizeY=$height;
$nodata=1;
// Header( "Content-type: text/html");
Header( "Content-type: image/png");
Header( "Expires: Mon, 17 Aug 1998 12:51:50 GMT");
check_authorisation();
$result2=DBselect("select gi.itemid,i.description,gi.color,h.host from graphs_items gi,items i,hosts h where gi.itemid=i.itemid and gi.graphid=".$HTTP_GET_VARS["graphid"]." and i.hostid=h.hostid order by gi.gitemid");
$shiftX=10;
$shiftYup=17;
$shiftYdown=7+15*DBnum_rows($result2);
$im = imagecreate($sizeX+$shiftX+61,$sizeY+$shiftYup+$shiftYdown+10+50);
$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);
$white=ImageColorAllocate($im,255,255,255);
$gray=ImageColorAllocate($im,150,150,150);
$colors=array();
$colors["Black"]=$black;
$colors["Green"]=$green;
$colors["Dark Green"]=$darkgreen;
$colors["Yellow"]=$yellow;
$colors["Dark Yellow"]=$darkyellow;
$colors["Blue"]=$blue;
$colors["Dark Blue"]=$blue;
$colors["White"]=$white;
$colors["Cyan"]=$cyan;
$colors["Red"]=$red;
$colors["Dark Red"]=$darkred;
$x=imagesx($im);
$y=imagesy($im);
ImageFilledRectangle($im,0,0,$sizeX+$shiftX+61,$sizeY+$shiftYup+$shiftYdown+10+50,$white);
ImageRectangle($im,0,0,$x-1,$y-1,$black);
// ImageRectangle($im,$shiftX+1,$shiftYup,$shiftX+$sizeX,$shiftYup+$sizeY, $black );
ImageDashedLine($im,$shiftX+1,$shiftYup,$shiftX+1,$sizeY+$shiftYup,$black);
ImageDashedLine($im,$shiftX+1,$shiftYup,$shiftX+$sizeX,$shiftYup,$black);
ImageDashedLine($im,$shiftX+$sizeX,$shiftYup,$shiftX+$sizeX,$sizeY+$shiftYup,$black);
ImageDashedLine($im,$shiftX+1,$shiftYup+$sizeY,$shiftX+$sizeX,$sizeY+$shiftYup,$black);
if(!check_right("Graph","R",$HTTP_GET_VARS["graphid"]))
{
// show_table_header("No permissions !");
// show_footer();
ImagePng($im);
ImageDestroy($im);
exit;
}
$graph=get_graph_by_graphid($HTTP_GET_VARS["graphid"]);
$str=$graph["name"];
$x=imagesx($im)/2-ImageFontWidth(4)*strlen($str)/2;
ImageString($im, 4,$x,1, $str , $darkred);
$from_time = time(NULL)-$HTTP_GET_VARS["period"]-3600*$HTTP_GET_VARS["from"];
$to_time = time(NULL)-3600*$HTTP_GET_VARS["from"];
$len=array();
$x=array();
$y=array();
$desc=array();
$color=array();
unset($maxX);
unset($maxY);
unset($minX);
unset($minY);
for($item=0;$item$from_time and clock<$to_time order by clock");
$len[$item]=0;
$x[$item]=array();
$y[$item]=array();
for($i=0;$i";
if((!isset($maxX))||($x[$item][$len[$item]]>$maxX)) { $maxX=$x[$item][$len[$item]]; }
if((!isset($minX))||($x[$item][$len[$item]]<$minX)) { $minX=$x[$item][$len[$item]]; }
if((!isset($maxY))||($y[$item][$len[$item]]>$maxY)) { $maxY=$y[$item][$len[$item]]; }
if((!isset($minY))||($y[$item][$len[$item]]<$minY)) { $minY=$y[$item][$len[$item]]; }
$len[$item]++;
}
}
if($nodata==1)
{
ImageString($im, 2,$sizeX/2-50, $sizeY+$shiftYup+3, "NO DATA FOUND FOR THIS PERIOD" , $darkred);
ImageStringUp($im,0,imagesx($im)-10,imagesy($im)-50, "http://zabbix.sourceforge.net", $gray);
ImagePng($im);
ImageDestroy($im);
exit;
}
// echo "MIN/MAX:",$minX," - ",$maxX," - ",$minY," - ",$maxY,"
";
if(isset($HTTP_GET_VARS["force_miny"]))
{
$minY = $HTTP_GET_VARS["force_miny"];
}
if(isset($HTTP_GET_VARS["force_maxy"]))
{
$maxY = $HTTP_GET_VARS["force_maxy"];
}
$my_exp = floor(log10($maxY));
$my_mant = $maxY/pow(10,$my_exp);
if ($my_mant < 1.5 )
{
$my_mant = 1.5;
$my_steps = 5;
}
elseif($my_mant < 2 )
{
$my_mant = 2;
$my_steps = 4;
}
elseif($my_mant < 3 )
{
$my_mant = 3;
$my_steps = 6;
}
elseif($my_mant < 5 )
{
$my_mant = 5;
$my_steps = 5;
}
elseif($my_mant < 8 )
{
$my_mant = 8;
$my_steps = 4;
}
else
{
$my_mant = 10;
$my_steps = 5;
}
$maxY = $my_mant*pow(10,$my_exp);
$minY = 0;
// $result2=DBselect("select itemid from graphs_items where graphid=".$HTTP_GET_VARS["graphid"]);
for($item=0;$item";
ImageLine($im,$x1+$shiftX,$y1+$shiftYup,$x2+$shiftX,$y2+$shiftYup,$colors[$color[$item]]);
$itemMin=min($y[$item][$i+1], $itemMin);
$itemMax=max($y[$item][$i+1], $itemMax);
$itemAvg+=$y[$item][$i+1];
}
$itemAvg /= $len[$item];
}
else
{
if(isset($minX))
{
ImageLine($im,$shiftX,$shiftYup+$sizeY/2,$sizeX+$shiftX,$shiftYup+$sizeY/2,$colors[$color[$item]]);
}
}
ImageFilledRectangle($im,$shiftX,$sizeY+$shiftYup+19+15*$item+45,$shiftX+5,$sizeY+$shiftYup+15+9+15*$item+45,$colors[$color[$item]]);
ImageRectangle($im,$shiftX,$sizeY+$shiftYup+19+15*$item+45,$shiftX+5,$sizeY+$shiftYup+15+9+15*$item+45,$black);
$str=sprintf("%s: %s [min:%.2f, avg:%.2f, max:%.2f]", $host[$item], $desc[$item], $itemMin, $itemAvg, $itemMax);
ImageString($im, 2,$shiftX+9,$sizeY+$shiftYup+15*$item+15+45,$str, $black);
}
$startTime=$minX;
if (($maxX-$minX) < 300)
$precTime=10;
elseif (($maxX-$minX) < 3600 )
$precTime=60;
else
$precTime=300;
if (($maxX-$minX) < 1200 )
$dateForm="H:i:s";
else
$dateForm="H:i:s";
$correctTime=$startTime % $precTime;
$stepTime=ceil(ceil(($maxX-$minX)/20)/$precTime)*(1.0*$precTime);
for($i=1;$i<$my_steps;$i++)
{
ImageDashedLine($im,$shiftX,$i/$my_steps*$sizeY+$shiftYup,$sizeX+$shiftX,$i/$my_steps*$sizeY+$shiftYup,$gray);
}
for($j=$stepTime-$correctTime;$j<=($maxX-$minX);$j+=$stepTime)
{
ImageDashedLine($im,$shiftX+($sizeX*$j)/($maxX-$minX),$shiftYup,$shiftX+($sizeX*$j)/($maxX-$minX),$sizeY+$shiftYup,$gray);
}
if($nodata == 0)
{
for($i=0;$i<=$my_steps;$i++)
{
ImageString($im, 1, $sizeX+5+$shiftX, $i/$my_steps*$sizeY+$shiftYup-4, $maxY-$i/$my_steps*($maxY-$minY) , $darkred);
}
for($j=$stepTime-$correctTime;$j<=($maxX-$minX);$j+=$stepTime)
{
ImageStringUp($im,0,$shiftX+($sizeX*$j)/($maxX-$minX),$shiftYup+$sizeY+53,date($dateForm,$startTime+$j),$black);
}
ImageString($im, 1,10, $sizeY+$shiftYup+5, date("dS of F Y H:i:s",$minX) , $darkred);
ImageString($im, 1,$sizeX+$shiftX-148,$sizeY+$shiftYup+5, date("dS of F Y H:i:s",$maxX) , $darkred);
}
else
{
ImageString($im, 2,$sizeX/2 -50, $sizeY+$shiftYup+3, "NO DATA FOR THIS PERIOD" , $red);
}
ImageStringUp($im,0,imagesx($im)-10,imagesy($im)-50, "http://zabbix.sourceforge.net", $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);
?>