/course/report/log/graph.php

https://bitbucket.org/ciceidev/cicei_moodle_conditional_activities · PHP · 184 lines · 137 code · 45 blank · 2 comment · 31 complexity · 07ce830139ba79372c0beccb60abd220 MD5 · raw file

  1. <?php // $Id$
  2. // Produces a graph of log accesses
  3. require_once("../../../config.php");
  4. require_once("../../lib.php");
  5. require_once("$CFG->libdir/graphlib.php");
  6. $id = required_param('id', PARAM_INT); // Course ID
  7. $type = required_param('type', PARAM_FILE); // Graph Type
  8. $user = optional_param('user', 0, PARAM_INT); // Student ID
  9. $date = optional_param('date', 0, PARAM_INT); // A time of a day (in GMT)
  10. if (! $course = get_record("course", "id", $id)) {
  11. error("Course is misconfigured");
  12. }
  13. require_login($course);
  14. $context = get_context_instance(CONTEXT_COURSE, $course->id);
  15. if (!$course->showreports or $USER->id != $user) {
  16. require_capability('coursereport/log:view', $context);
  17. }
  18. if ($user) {
  19. if (! $user = get_record("user", "id", $user)) {
  20. error("Can not find that user");
  21. }
  22. }
  23. $logs = array();
  24. $timenow = time();
  25. switch ($type) {
  26. case "usercourse.png":
  27. $site = get_site();
  28. if ($course->id == $site->id) {
  29. $courseselect = 0;
  30. } else {
  31. $courseselect = $course->id;
  32. }
  33. $maxseconds = COURSE_MAX_LOG_DISPLAY * 3600 * 24; // seconds
  34. //$maxseconds = 60 * 3600 * 24; // seconds
  35. if ($timenow - $course->startdate > $maxseconds) {
  36. $course->startdate = $timenow - $maxseconds;
  37. }
  38. if (!empty($CFG->loglifetime)) {
  39. $maxseconds = $CFG->loglifetime * 3600 * 24; // seconds
  40. if ($timenow - $course->startdate > $maxseconds) {
  41. $course->startdate = $timenow - $maxseconds;
  42. }
  43. }
  44. $timestart = $coursestart = usergetmidnight($course->startdate);
  45. if ((($timenow - $timestart)/86400.0) > 40) {
  46. $reducedays = 7;
  47. } else {
  48. $reducedays = 0;
  49. }
  50. $i = 0;
  51. while ($timestart < $timenow) {
  52. $timefinish = $timestart + 86400;
  53. if ($reducedays) {
  54. if ($i % $reducedays) {
  55. $days[$i] = "";
  56. } else {
  57. $days[$i] = userdate($timestart, "%a %d %b");
  58. }
  59. } else {
  60. $days[$i] = userdate($timestart, "%a %d %b");
  61. }
  62. $logs[$i] = 0;
  63. $i++;
  64. $timestart = $timefinish;
  65. }
  66. if ($rawlogs = get_logs_usercourse($user->id, $courseselect, $coursestart)) {
  67. foreach ($rawlogs as $rawlog) {
  68. $logs[$rawlog->day] = $rawlog->num;
  69. }
  70. }
  71. $graph = new graph(750, 400);
  72. $a->coursename = $course->shortname;
  73. $a->username = fullname($user, true);
  74. $graph->parameter['title'] = get_string("hitsoncourse", "", $a);
  75. $graph->x_data = $days;
  76. $graph->y_data['logs'] = $logs;
  77. $graph->y_order = array('logs');
  78. if (!empty($CFG->preferlinegraphs)) {
  79. $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line');
  80. } else {
  81. $graph->y_format['logs'] = array('colour' => 'blue','bar' => 'fill','bar_size' => 0.6);
  82. $graph->parameter['bar_spacing'] = 0;
  83. }
  84. $graph->parameter['y_label_left'] = get_string("hits");
  85. $graph->parameter['label_size'] = "12";
  86. $graph->parameter['x_axis_angle'] = 90;
  87. $graph->parameter['x_label_angle'] = 0;
  88. $graph->parameter['tick_length'] = 0;
  89. $graph->parameter['shadow'] = 'none';
  90. error_reporting(5); // ignore most warnings such as font problems etc
  91. $graph->draw_stack();
  92. break;
  93. case "userday.png":
  94. $site = get_site();
  95. if ($course->id == $site->id) {
  96. $courseselect = 0;
  97. } else {
  98. $courseselect = $course->id;
  99. }
  100. if ($date) {
  101. $daystart = usergetmidnight($date);
  102. } else {
  103. $daystart = usergetmidnight(time());
  104. }
  105. $dayfinish = $daystart + 86400;
  106. for ($i=0; $i<=23; $i++) {
  107. $logs[$i] = 0;
  108. $hour = $daystart + $i * 3600;
  109. $hours[$i] = $i;
  110. }
  111. if ($rawlogs = get_logs_userday($user->id, $courseselect, $daystart)) {
  112. foreach ($rawlogs as $rawlog) {
  113. $logs[$rawlog->hour] = $rawlog->num;
  114. }
  115. }
  116. $graph = new graph(750, 400);
  117. $a->coursename = $course->shortname;
  118. $a->username = fullname($user, true);
  119. $graph->parameter['title'] = get_string("hitsoncoursetoday", "", $a);
  120. $graph->x_data = $hours;
  121. $graph->y_data['logs'] = $logs;
  122. $graph->y_order = array('logs');
  123. if (!empty($CFG->preferlinegraphs)) {
  124. $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line');
  125. } else {
  126. $graph->y_format['logs'] = array('colour' => 'blue','bar' => 'fill','bar_size' => 0.9);
  127. }
  128. $graph->parameter['y_label_left'] = get_string("hits");
  129. $graph->parameter['label_size'] = "12";
  130. $graph->parameter['x_axis_angle'] = 0;
  131. $graph->parameter['x_label_angle'] = 0;
  132. $graph->parameter['shadow'] = 'none';
  133. error_reporting(5); // ignore most warnings such as font problems etc
  134. $graph->draw_stack();
  135. break;
  136. default:
  137. break;
  138. }
  139. ?>