/graphics_aantal_accounts.php

https://github.com/HBL/klassenboek · PHP · 84 lines · 80 code · 3 blank · 1 comment · 9 complexity · 5f82842331c5e93d8816492c49223c47 MD5 · raw file

  1. <? require_once('include/init.php');
  2. check_login();
  3. $result = mysql_query_safe(<<<EOT
  4. SELECT min,
  5. COUNT(IF(type = 'leerling', 1, NULL)) lln,
  6. COUNT(IF(type != 'leerling' AND type != 'ouder', 1, NULL)) doc,
  7. COUNT(IF(type = 'ouder', 1, NULL)) oud
  8. FROM (
  9. SELECT TO_DAYS(MIN(timestamp)) dag, UNIX_TIMESTAMP(MIN(timestamp)) min , ppl.type
  10. FROM log
  11. JOIN ppl USING (ppl_id)
  12. WHERE event = 'login_success'
  13. AND timestamp > 20090824000000
  14. GROUP BY ppl_id ORDER BY min ) bla
  15. GROUP BY bla.dag
  16. EOT
  17. );
  18. if (mysql_num_rows($result) == 0) exit;
  19. $lasttime = mysql_result($result, 0, 0);
  20. $date = date("d-m-Y", mysql_result($result, 0, 0));
  21. $array['dag'][0] = $date;
  22. $array['lln'][0] = mysql_result($result, 0, 1);
  23. $array['doc'][0] = mysql_result($result, 0, 2);
  24. $array['oud'][0] = mysql_result($result, 0, 3);
  25. $day = 0;
  26. for ($i = 1; $i < mysql_num_rows($result); $i++) {
  27. while (strcmp($date, date("d-m-Y", mysql_result($result, $i, 0)))) {
  28. $day++;
  29. $lasttime += 24*60*60;
  30. $date = $array['dag'][$day] = date("d-m-Y", $lasttime);
  31. $array['lln'][$day] = $array['lln'][$day - 1];
  32. $array['doc'][$day] = $array['doc'][$day - 1];
  33. $array['oud'][$day] = $array['oud'][$day - 1];
  34. }
  35. $array['lln'][$day] += mysql_result($result, $i, 1);
  36. $array['doc'][$day] += mysql_result($result, $i, 2);
  37. $array['oud'][$day] += mysql_result($result, $i, 3);
  38. }
  39. ?>
  40. <? ob_start(); ?>
  41. <html>
  42. <head>
  43. <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  44. <? if ($svgweb) { ?>
  45. <script type="text/javascript" src="<? echo($svgweb) ?>"></script>
  46. <? } ?>
  47. <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  48. <script type="text/javascript">
  49. google.load('visualization', '1', {'packages':['columnchart']});
  50. google.setOnLoadCallback(drawChart);
  51. function drawChart() {
  52. var data = new google.visualization.DataTable();
  53. data.addColumn('string', 'Datum');
  54. data.addColumn('number', 'Leerlingen');
  55. data.addColumn('number', 'Docenten');
  56. data.addColumn('number', 'Ouders');
  57. data.addRows(<? echo(count($array['dag'])) ?>);
  58. <? for ($i = 0; $i < count($array['dag']); $i++) {
  59. echo "\tdata.setValue($i, 0, '".$array['dag'][$i]."');\n";
  60. echo "\tdata.setValue($i, 1, ".$array['lln'][$i].");\n";
  61. echo "\tdata.setValue($i, 2, ".$array['doc'][$i].");\n";
  62. echo "\tdata.setValue($i, 3, ".$array['oud'][$i].");\n";
  63. } ?>
  64. // Instantiate and draw our chart, passing in some options.
  65. var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
  66. chart.draw(data, {min: 0, legend: 'bottom', width: 960, height: 480, logScale: false, isStacked: true, is3D: false, title: 'Aantal accounts'});
  67. }
  68. </script>
  69. </head>
  70. <body>
  71. <!--Div that will hold the pie chart-->
  72. <div id="chart_div"></div>
  73. <? if ($cachedir) {
  74. $fp = fopen($cachedir.'/graphics_aantal_accounts.html.tmp', 'w') or die('Error opening cache file');
  75. fwrite($fp, ob_get_contents().'<p>cached on '.date(DATE_ATOM)."\n</body>\n</html>\n");
  76. fclose($fp);
  77. rename($cachedir.'/graphics_aantal_accounts.html.tmp', $cachedir.'/graphics_aantal_accounts.html') or die('unable to move');
  78. }
  79. ob_end_flush(); ?>
  80. </body>
  81. </html>