Added support for last month and last 2 weeks graphs; adjusted web interface accordingly
authorDan
Sun, 14 Dec 2008 00:35:52 -0500
changeset 34 a8daa2016cf1
parent 33 c3179049f670
child 35 a76ae7eaa2eb
Added support for last month and last 2 weeks graphs; adjusted web interface accordingly
htdocs/24hours.php
htdocs/graph.php
htdocs/index.php
--- a/htdocs/24hours.php	Sun Dec 07 17:54:29 2008 -0500
+++ b/htdocs/24hours.php	Sun Dec 14 00:35:52 2008 -0500
@@ -1,61 +1,5 @@
 <?php
 
-require('../stats-fe.php');
-require('../graphs.php');
-require('../timezone.php');
-
-$channel_list = stats_channel_list();
-$first_channel = $channel_list[0];
-$channel = ( isset($_REQUEST['channel']) && in_array($_REQUEST['channel'], $channel_list) ) ? $_REQUEST['channel'] : $first_channel;
-
-// generate the data
-// we're doing this by absolute hours, not by strictly "24 hours ago", e.g. on-the-hour stats
-$this_hour = gmmktime(gmdate('H'), 0, 0);
-$graphdata = array();
-
-for ( $i = 23; $i >= 0; $i-- )
-{
-  $basetime = $this_hour - ( $i * 3600 );
-  $ts = date('H:i', $basetime);
-  $basetime += 3600;
-  $graphdata[$ts] = stats_message_count($channel, 60, $basetime);
-}
-
-$max = max($graphdata);
+$_GET['mode'] = 'lastday';
+require('graph.php');
 
-// Determine axis interval
-$interval = 2;
-if ( $max > 20 )
-  $interval = 4;
-if ( $max > 25 )
-  $interval = 5;
-if ( $max > 50 )
-  $interval = 10;
-if ( $max > 200 )
-  $interval = 40;
-if ( $max > 500 )
-  $interval = 80;
-if ( $max > 1000 )
-  $interval = 100;
-if ( $max > 2000 )
-  $interval = 200;
-if ( $max > 5000 )
-  $interval = 1000;
-if ( $max > 15000 )
-  $interval = 1500;
-if ( $max > 30000 )
-  $interval = round($max / 10);
-
-$g = new GraphMaker(); // _Compat();
-
-$g->SetGraphPadding(20, 30, 20, 15);
-$g->SetGraphAreaHeight(200);
-$g->SetBarDimensions(26, 0);
-$g->SetBarPadding(7);
-$g->SetBarData($graphdata);
-$g->SetGraphBackgroundTransparent(240, 250, 255, 0);
-$g->SetGraphTransparency(25);
-$g->SetAxisStep($interval);
-$g->SetGraphTitle($channel . ' message count - last 24 hours');
-
-$g->DrawGraph();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/graph.php	Sun Dec 14 00:35:52 2008 -0500
@@ -0,0 +1,102 @@
+<?php
+require('../stats-fe.php');
+require('../graphs.php');
+require('../timezone.php');
+
+$channel_list = stats_channel_list();
+$first_channel = $channel_list[0];
+$channel = ( isset($_REQUEST['channel']) && in_array($_REQUEST['channel'], $channel_list) ) ? $_REQUEST['channel'] : $first_channel;
+
+$g = new GraphMaker(); // _Compat();
+
+$g->SetGraphPadding(20, 30, 20, 15);
+$g->SetGraphAreaHeight(200);
+$g->SetBarDimensions(26, 0);
+$g->SetBarPadding(7);
+$g->SetGraphBackgroundTransparent(240, 250, 255, 0);
+$g->SetGraphTransparency(25);
+
+// generate the data
+// we're doing this by absolute hours, not by strictly "24 hours ago", e.g. on-the-hour stats
+$mode = ( isset($_GET['mode']) ) ? $_GET['mode'] : 'lastday';
+switch ( $mode )
+{
+  case 'lastday':
+  default:
+    $graph_title = $channel . ' message count - last 24 hours';
+    $this_hour = gmmktime(gmdate('H'), 0, 0);
+    $graphdata = array();
+    
+    for ( $i = 23; $i >= 0; $i-- )
+    {
+      $basetime = $this_hour - ( $i * 3600 );
+      $ts = date('H:i', $basetime);
+      $basetime += 3600;
+      $graphdata[$ts] = stats_message_count($channel, 60, $basetime);
+    }
+    break;
+  case 'lastweek':
+    $graph_title = $channel . ' activity - last 14 days';
+    $this_day = gmmktime(0, 0, 0);
+    $graphdata = array();
+    
+    for ( $i = 13; $i >= 0; $i-- )
+    {
+      $basetime = $this_day - ( $i * 86400 );
+      $ts = date('D n/j', $basetime);
+      $basetime += 86400;
+      $graphdata[$ts] = stats_message_count($channel, 1440, $basetime);
+    }
+    $g->SetBarPadding(12);
+    break;
+  case 'lastmonth':
+    $graph_title = $channel . ' activity - last 30 days';
+    $this_day = gmmktime(0, 0, 0);
+    $graphdata = array();
+    
+    for ( $i = 29; $i >= 0; $i-- )
+    {
+      $basetime = $this_day - ( $i * 86400 );
+      $ts = date('Y-m-d', $basetime);
+      $basetime += 86400;
+      $graphdata[$ts] = stats_message_count($channel, 1440, $basetime);
+    }
+    $g->SetBarPadding(15);
+    break;
+}
+
+$max = max($graphdata);
+
+// Determine axis interval
+$interval = 2;
+if ( $max > 20 )
+  $interval = 4;
+if ( $max > 25 )
+  $interval = 5;
+if ( $max > 50 )
+  $interval = 10;
+if ( $max > 200 )
+  $interval = 40;
+if ( $max > 500 )
+  $interval = 80;
+if ( $max > 1000 )
+  $interval = 100;
+if ( $max > 2000 )
+  $interval = 200;
+if ( $max > 3200 )
+  $interval = 300;
+if ( $max > 4000 )
+  $interval = 500;
+if ( $max > 5000 )
+  $interval = 1000;
+if ( $max > 15000 )
+  $interval = 1500;
+if ( $max > 30000 )
+  $interval = round($max / 10);
+
+$g->SetBarData($graphdata);
+$g->SetAxisStep($interval);
+$g->SetGraphTitle($graph_title);
+
+$g->DrawGraph();
+
--- a/htdocs/index.php	Sun Dec 07 17:54:29 2008 -0500
+++ b/htdocs/index.php	Sun Dec 14 00:35:52 2008 -0500
@@ -83,7 +83,9 @@
       ?>
     </ul>
     <h1>Last 24 hours</h1>
-    <img alt="Graph image" src="24hours.php?channel=<?php echo urlencode($channel); ?>" />
+    <img alt="Graph image" src="graph.php?mode=lastday&amp;channel=<?php echo urlencode($channel); ?>" />
+    <h1>Last 2 weeks</h1>
+    <img alt="Graph image" src="graph.php?mode=lastweek&amp;channel=<?php echo urlencode($channel); ?>" />
     
     <div class="footer">
     <b><?php echo $nick; ?> is a privacy-respecting bot.</b> <a href="privacy.php">Read about what information <?php echo $nick; ?> collects</a>