<?php /* $Id$ */ /* dspam-analysis-graph.php Copyright (C) 2006 Daniel S. Haischt. All rights reserved. */ /* required because of system_groupmanager.php */ $pgtitle = array(gettext("Services"), gettext("DSPAM"), gettext("Analysis"), gettext("Graph")); require_once 'Image/Graph.php'; require("guiconfig.inc"); include("/usr/local/pkg/dspam.inc"); if (! $_GET || strlen($_SERVER['QUERY_STRING']) == 0) { return; } $FORM =& ReadParse($_SERVER['QUERY_STRING']); list($spam, $nonspam, $period) = split('_', $FORM['data']); $spam_day = split(',', $spam); $nonspam_day = split(',', $nonspam); $period = split(',', $period); // create the graph $Graph =& Image_Graph::factory('graph', array(725, 300)); // add a TrueType font $Font =& $Graph->addNew('font', 'Verdana'); // set the font size to 11 pixels $Font->setSize(8); $Graph->setFont($Font); // setup the plotarea, legend and their layout $Graph->add( Image_Graph::vertical( Image_Graph::factory('title', array('', 12)), Image_Graph::vertical( $Plotarea = Image_Graph::factory('plotarea'), $Legend = Image_Graph::factory('legend'), 88 ), 5 ) ); // link the legend with the plotares $Legend->setPlotarea($Plotarea); // create the two datasets $i = 0; $spamds =& Image_Graph::factory('dataset'); foreach($spam_day as $el){ $spamds->addPoint(strval($period[$i]), intval($el)); $i++; } $i = 0; $hamds =& Image_Graph::factory('dataset'); foreach($nonspam_day as $el){ $hamds->addPoint(strval($period[$i]), intval($el)); $i++; } // set the name/title of each dataset $spamds->setName('SPAM'); $hamds->setName('Good'); // put each dataset in a singel ds array $Datasets = array($spamds, $hamds); // create the plot as line chart using the dataset $Plot =& $Plotarea->addNew('Image_Graph_Plot_Line', array($Datasets,'normal')); // set a line color $LineArray =& Image_Graph::factory('Image_Graph_Line_Array'); $LineArray->addColor('red'); $LineArray->addColor('green'); // set a standard line style $Plot->setLineStyle($LineArray); /* set axis labels */ $XAxis =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_X); $XAxis->setTitle("{$FORM['x_label']}"); $YAxis =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_Y); $YAxis->setTitle('Number of Messages', 'vertical'); // output the Graph $Graph->done(); function &ReadParse($URI = "") { if ($URI == "") { return NULL; } $pairs = preg_split('/&/', $URI); $FORM = array(); foreach($pairs as $pair){ list($name, $value) = preg_split('/\=/', $pair); $pattern = '/%([a-fA-F0-9][a-fA-F0-9])/'; $name = preg_replace('/\+/', ' ', $name); $name = preg_replace_callback( $pattern, create_function( '$matches', 'return pack("C", hexdec($matches[1]));' ), $name ); $value = preg_replace('/\+/', ' ', $value); $value = preg_replace_callback( $pattern, create_function( '$matches', 'return pack("C", hexdec($matches[1]));' ), $value ); $FORM[$name] = $value; } // end foreach return $FORM; } ?>