aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dspam/www/dspam-analysis-graph.php
diff options
context:
space:
mode:
Diffstat (limited to 'packages/dspam/www/dspam-analysis-graph.php')
-rw-r--r--packages/dspam/www/dspam-analysis-graph.php137
1 files changed, 137 insertions, 0 deletions
diff --git a/packages/dspam/www/dspam-analysis-graph.php b/packages/dspam/www/dspam-analysis-graph.php
new file mode 100644
index 00000000..67262564
--- /dev/null
+++ b/packages/dspam/www/dspam-analysis-graph.php
@@ -0,0 +1,137 @@
+<?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;
+}
+?>