add: pChart lib - no more usage of google api. There has to be the wp-content/cache writable for images add: test-folder for later use new: class agents, new isBot-functionality within this class, old function is deprecated, uses an ini-file with botnames
		
			
				
	
	
		
			131 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			4,8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			131 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			4,8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
|  /*
 | |
|      pSplit - class to draw spline splitted charts
 | |
| 
 | |
|      Version     : 2.1.3
 | |
|      Made by     : Jean-Damien POGOLOTTI
 | |
|      Last Update : 09/09/11
 | |
| 
 | |
|      This file can be distributed under the license you can find at :
 | |
| 
 | |
|                        http://www.pchart.net/license
 | |
| 
 | |
|      You can find the whole class documentation on the pChart web site.
 | |
|  */
 | |
| 
 | |
|  define("TEXT_POS_TOP"		, 690001);
 | |
|  define("TEXT_POS_RIGHT"	, 690002);
 | |
| 
 | |
|  /* pSplit class definition */
 | |
|  class pSplit
 | |
|   {
 | |
|    var $pChartObject;
 | |
| 
 | |
|    /* Class creator */
 | |
|    function pSplit()
 | |
|     { }
 | |
| 
 | |
|    /* Create the encoded string */
 | |
|    function drawSplitPath($Object,$Values,$Format="")
 | |
|     {
 | |
|      $this->pChartObject = $Object;
 | |
| 
 | |
|      $Spacing		= isset($Format["Spacing"]) ? $Format["Spacing"] : 20;
 | |
|      $TextPadding	= isset($Format["TextPadding"]) ? $Format["TextPadding"] : 2;
 | |
|      $TextPos		= isset($Format["TextPos"]) ? $Format["TextPos"] : TEXT_POS_TOP;
 | |
|      $Surrounding       = isset($Format["Surrounding"]) ? $Format["Surrounding"] : NULL;
 | |
|      $Force		= isset($Format["Force"]) ? $Format["Force"] : 70;
 | |
|      $Segments		= isset($Format["Segments"]) ? $Format["Segments"] : 15;
 | |
|      $FontSize		= $Object->FontSize;
 | |
|      $X1		= $Object->GraphAreaX1;
 | |
|      $Y1		= $Object->GraphAreaY1;
 | |
|      $X2		= $Object->GraphAreaX2;
 | |
|      $Y2		= $Object->GraphAreaY2;
 | |
| 
 | |
|      /* Data Processing */
 | |
|      $Data    = $Values->getData();
 | |
|      $Palette = $Values->getPalette();
 | |
| 
 | |
|      $LabelSerie = $Data["Abscissa"];
 | |
|      $DataSerie  = "";
 | |
| 
 | |
|      foreach($Data["Series"] as $SerieName => $Value)
 | |
|       { if ( $SerieName != $LabelSerie && $DataSerie == "" ) { $DataSerie = $SerieName; } }
 | |
| 
 | |
|      $DataSerieSum   = array_sum($Data["Series"][$DataSerie]["Data"]);
 | |
|      $DataSerieCount = count($Data["Series"][$DataSerie]["Data"]);
 | |
| 
 | |
|      /* Scale Processing */
 | |
|      if ( $TextPos == TEXT_POS_RIGHT )
 | |
|       $YScale     = (($Y2-$Y1) - (($DataSerieCount+1)*$Spacing)) / $DataSerieSum;
 | |
|      else
 | |
|       $YScale     = (($Y2-$Y1) - ($DataSerieCount*$Spacing)) / $DataSerieSum;
 | |
|      $LeftHeight = $DataSerieSum * $YScale;
 | |
| 
 | |
|      /* Re-compute graph width depending of the text mode choosen */
 | |
|      if ( $TextPos == TEXT_POS_RIGHT )
 | |
|       {
 | |
|        $MaxWidth = 0;
 | |
|        foreach($Data["Series"][$LabelSerie]["Data"] as $Key => $Label)
 | |
|         {
 | |
|          $Boundardies = $Object->getTextBox(0,0,$Object->FontName,$Object->FontSize,0,$Label);
 | |
|          if ( $Boundardies[1]["X"] > $MaxWidth ) { $MaxWidth = $Boundardies[1]["X"] + $TextPadding*2; }
 | |
|         }
 | |
|        $X2 = $X2 - $MaxWidth;
 | |
|       }
 | |
| 
 | |
|      /* Drawing */
 | |
|      $LeftY    = ((($Y2-$Y1) / 2) + $Y1) - ($LeftHeight/2);
 | |
|      $RightY   = $Y1;
 | |
|      $VectorX  = (($X2-$X1) / 2);
 | |
| 
 | |
|      foreach($Data["Series"][$DataSerie]["Data"] as $Key => $Value)
 | |
|       {
 | |
|        if ( isset($Data["Series"][$LabelSerie]["Data"][$Key]) )
 | |
|         $Label = $Data["Series"][$LabelSerie]["Data"][$Key];
 | |
|        else
 | |
|         $Label = "-";
 | |
| 
 | |
|        $LeftY1 = $LeftY;
 | |
|        $LeftY2 = $LeftY + $Value * $YScale;
 | |
| 
 | |
|        $RightY1 = $RightY + $Spacing;
 | |
|        $RightY2 = $RightY + $Spacing + $Value * $YScale;;
 | |
| 
 | |
|        $Settings = array("R"=>$Palette[$Key]["R"],"G"=>$Palette[$Key]["G"],"B"=>$Palette[$Key]["B"],"Alpha"=>$Palette[$Key]["Alpha"],"NoDraw"=>TRUE,"Segments"=>$Segments,"Surrounding"=>$Surrounding);
 | |
| 
 | |
|        $PolyGon = "";
 | |
| 
 | |
|        $Angle    = $Object->getAngle($X2,$RightY1,$X1,$LeftY1);
 | |
|        $VectorX1 = cos(deg2rad($Angle+90)) * $Force + ($X2-$X1)/2 + $X1;
 | |
|        $VectorY1 = sin(deg2rad($Angle+90)) * $Force + ($RightY1-$LeftY1)/2 + $LeftY1;
 | |
|        $VectorX2 = cos(deg2rad($Angle-90)) * $Force + ($X2-$X1)/2 + $X1;
 | |
|        $VectorY2 = sin(deg2rad($Angle-90)) * $Force + ($RightY1-$LeftY1)/2 + $LeftY1;
 | |
| 
 | |
|        $Points = $Object->drawBezier($X1,$LeftY1,$X2,$RightY1,$VectorX1,$VectorY1,$VectorX2,$VectorY2,$Settings);
 | |
|        foreach($Points as $Key => $Pos) { $PolyGon[] = $Pos["X"]; $PolyGon[] = $Pos["Y"]; }
 | |
| 
 | |
| 
 | |
|        $Angle    = $Object->getAngle($X2,$RightY2,$X1,$LeftY2);
 | |
|        $VectorX1 = cos(deg2rad($Angle+90)) * $Force + ($X2-$X1)/2 +$X1;
 | |
|        $VectorY1 = sin(deg2rad($Angle+90)) * $Force + ($RightY2-$LeftY2)/2 + $LeftY2;
 | |
|        $VectorX2 = cos(deg2rad($Angle-90)) * $Force + ($X2-$X1)/2 +$X1;
 | |
|        $VectorY2 = sin(deg2rad($Angle-90)) * $Force + ($RightY2-$LeftY2)/2 + $LeftY2;
 | |
| 
 | |
|        $Points = $Object->drawBezier($X1,$LeftY2,$X2,$RightY2,$VectorX1,$VectorY1,$VectorX2,$VectorY2,$Settings);
 | |
|        $Points = array_reverse($Points);
 | |
|        foreach($Points as $Key => $Pos) { $PolyGon[] = $Pos["X"]; $PolyGon[] = $Pos["Y"]; }
 | |
| 
 | |
|        $Object->drawPolygon($PolyGon,$Settings);
 | |
| 
 | |
|        if ( $TextPos == TEXT_POS_RIGHT )
 | |
|         $Object->drawText($X2+$TextPadding,($RightY2-$RightY1)/2+$RightY1,$Label,array("Align"=>TEXT_ALIGN_MIDDLELEFT));
 | |
|        else
 | |
|         $Object->drawText($X2,$RightY1-$TextPadding,$Label,array("Align"=>TEXT_ALIGN_BOTTOMRIGHT));
 | |
| 
 | |
|        $LeftY  = $LeftY2;
 | |
|        $RightY = $RightY2;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| ?>
 |