Files @ 8d55669e05c2
Branch filter:

Location: SlatePermutate/inc/class.graph.php

binki
Add some hacks to support pure HTTPS for WebAdvisor XSS automatic registration hack.

Instead of using a JSONP callback and PHP sessions to store the
TOKENIDX, the XSS script now just updates the URL parameter for the
WebAdvisor login page so that the TOKENIDX will be transferred to
webadvisor.php by a GET variable right when it is needed instead of
asynchronously.

A separate hack to help support HTTPS is that automatic uploading of
assets to Amazon S3 (which has HTTPS access) allows the XSS script to
be served over HTTPS. This eliminates the browser warnings about
accessing mixed secure/insecure content and, thus, hopefully supports
browsers which automatically block insecure content on secure pages.
<?php /* -*- mode: php; -*- */

class barGraph {

// This array of values is just here for the example.
private $values = array();
private $image = null;

// Pass me a multidimensional array with 'count', the size, and 'label', the label
public function __construct($userVals, $width=600, $height=300) {

  $this->values = $userVals;


  // Get the total number of columns we are going to plot
  $columns  = count($this->values);
  if($columns == 0) {
    throw new Exception("No input data!");
  }
  if($width < 5 || $height < 5) {
    throw new Exception("Image size too small!");
  }

  // Set the amount of space between each column
  $padding = 5; 

  // Get the width of 1 column
  $column_width = $width / $columns ;

  // Generate the image variables
  $im        = imagecreate($width,$height);
  $gray      = imagecolorallocate ($im,0xcc,0xcc,0xcc);
  $gray_lite = imagecolorallocate ($im,0xee,0xee,0xee);
  $gray_dark = imagecolorallocate ($im,0x7f,0x7f,0x7f);
  $white     = imagecolorallocate ($im,0xff,0xff,0xff);
  $black     = imagecolorallocate($im, 0, 0, 0);
    
  // Fill in the background of the image
  imagefilledrectangle($im,0,0,$width,$height,$white);
    
  $maxv = 0;

  // Calculate the maximum value we are going to plot
  for($i=0;$i<$columns;$i++)
    $maxv = max($this->values[$i]['count'], $maxv);

  // Now plot each column 
  for($i=0;$i<$columns;$i++) {
    $column_height = ($height / 100) * (( $this->values[$i]['count'] / $maxv) *100);
    $x1 = $i*$column_width;
    $y1 = $height-$column_height;
    $x2 = (($i+1)*$column_width)-$padding;
    $y2 = $height;

    imagefilledrectangle($im,$x1,$y1,$x2,$y2,$gray);

    $label = $this->values[$i]['label'];
    $font = '/usr/share/fonts/liberation/LiberationSans-Regular.ttf';
    $font2 = '/usr/share/fonts/liberation/LiberationSans-Bold.ttf';

    imagettftext($im, 10, 0, $x1 + ($column_width / 2) - 20, $height - 5, $black, $font, $label);
    imagettftext($im, 7, 0, $x1 + ($column_width / 2) - 7, $height - 20, $gray_dark, $font, $this->values[$i]['count']);
 
  }
  imagettftext($im, 10, 0, 0, 10, $black, $font2, "Past Month:");

  // Send the PNG header information. Replace for JPEG or GIF or whatever
  $this->image = $im;

  header ("Content-type: image/png");
  imagepng($this->image);
}

}

?>