28
28
require_once($CFG->dirroot.'/mod/scorm/report/reportlib.php');
29
29
require_once($CFG->dirroot.'/mod/scorm/locallib.php');
31
$scoid = required_param('scoid', PARAM_INT);// sco ID
31
$scoid = required_param('scoid', PARAM_INT);// SCO ID.
33
$sco = $DB->get_record('scorm_scoes', array('id'=>$scoid), '*', MUST_EXIST);
34
$scorm = $DB->get_record('scorm', array('id'=>$sco->scorm), '*', MUST_EXIST);
33
$sco = $DB->get_record('scorm_scoes', array('id' => $scoid), '*', MUST_EXIST);
34
$scorm = $DB->get_record('scorm', array('id' => $sco->scorm), '*', MUST_EXIST);
35
35
$cm = get_coursemodule_from_instance('scorm', $scorm->id, 0, false, MUST_EXIST);
36
$course = $DB->get_record('course', array('id'=>$scorm->course), '*', MUST_EXIST);
36
$course = $DB->get_record('course', array('id' => $scorm->course), '*', MUST_EXIST);
40
40
require_login($course, false, $cm);
41
41
$contextmodule = context_module::instance($cm->id);
42
42
require_capability('mod/scorm:viewreport', $contextmodule);
44
// find out current groups mode
44
// Find out current groups mode.
45
45
$currentgroup = groups_get_activity_group($cm, true);
48
48
if (empty($currentgroup)) {
49
49
// All users who can attempt scoes.
50
50
$students = get_users_by_capability($contextmodule, 'mod/scorm:savetrack', 'u.id' , '', '', '', '', '', false);
95
95
if (empty($range)) {
98
$percent = round((($score*100)/$range), 2);
99
if (empty($usergrades[$attempt->userid]) || !isset($usergrades[$attempt->userid]) || ($percent > $usergrades[$attempt->userid]) || ($usergrades[$attempt->userid] === '*')) {
98
$percent = round((($score * 100) / $range), 2);
99
if (empty($usergrades[$attempt->userid]) || !isset($usergrades[$attempt->userid])
100
|| ($percent > $usergrades[$attempt->userid]) || ($usergrades[$attempt->userid] === '*')) {
100
101
$usergrades[$attempt->userid] = $percent;
104
// User has made an attempt but either SCO was not able to record the score or something else is broken in SCO
105
// User has made an attempt but either SCO was not able to record the score or something else is broken in SCO.
105
106
if (!isset($usergrades[$attempt->userid])) {
106
107
$usergrades[$attempt->userid] = '*';
113
114
$bandlabels[] = get_string('invaliddata', 'scormreport_graphs');
114
for ($i = 1; $i <= $bands-1; $i++) {
115
for ($i = 1; $i <= $bands - 1; $i++) {
115
116
$bandlabels[] = ($i - 1) * $bandwidth . ' - ' . $i * $bandwidth;
117
118
// Recording all users who attempted the SCO,but resulting data was invalid.
135
136
$line->parameter['x_label_angle'] = 0;
136
137
$line->parameter['x_axis_angle'] = 60;
138
//following two lines seem to silence notice warnings from graphlib.php
139
// Following two lines seem to silence notice warnings from graphlib.php.
139
140
$line->y_tick_labels = null;
140
141
$line->offset_relation = null;
142
143
$line->parameter['bar_size'] = 1;
143
// don't forget to increase spacing so that graph doesn't become one big block of colour
144
// Don't forget to increase spacing so that graph doesn't become one big block of colour.
144
145
$line->parameter['bar_spacing'] = 10;
145
146
$line->x_data = $bandlabels;
155
156
$line->y_order = array('allusers');
157
158
$ymax = max($line->y_data['allusers']);
158
$line->parameter['y_min_left'] = 0; // start at 0
159
$line->parameter['y_min_left'] = 0; // Start at 0.
159
160
$line->parameter['y_max_left'] = $ymax;
160
161
$line->parameter['y_decimal_left'] = 0; // 2 decimal places for y axis.
162
//pick a sensible number of gridlines depending on max value on graph.
163
// Pick a sensible number of gridlines depending on max value on graph.
163
164
$gridlines = $ymax;
164
165
while ($gridlines >= 10) {
165
166
if ($gridlines >= 50) {