Help needed: View attendance report by all sessions crashes

Help needed: View attendance report by all sessions crashes

by Wanlun Xue -
Number of replies: 0

When I login as admin, I can view the attendance report of "all sessions" and it works very well

however, when I login as teacher, the "all sessions" report crashes. Other reports work fine


the following code are line 538

```

foreach ($this->sessionslog as $sessid => $sess) {
$this->sessionslog[$sessid]->cmid = $this->coursesatts[$sess->attendanceid]->cmid;
}
```

and the following code are line 1798-1868
```
$statussetmaxpoints = $statusmaxpoints[$sess->attendanceid];
// Ensure all possible acronyms for current sess's statusset are available as
// keys in status array for course
//
// A bit yucky because we can't tell whether we've seen statusset before, and
// we usually will have, so much wasted spinning.
foreach ($userdata->statuses[$sess->attendanceid] as $attstatus) {
if ($attstatus->setnumber === $sess->statusset) {
if (!array_key_exists($attstatus->acronym, $stats['course'][$sess->courseid]['statuses'])) {
$stats['course'][$sess->courseid]['statuses'][$attstatus->acronym] =
array('count' => 0, 'description' => $attstatus->description);
}
if (!array_key_exists($attstatus->acronym, $stats['overall']['statuses'])) {
$stats['overall']['statuses'][$attstatus->acronym] =
array('count' => 0, 'description' => $attstatus->description);
}
}
}
// The array_key_exists check is for hidden statuses.
if (isset($sess->statusid) && array_key_exists($sess->statusid, $userdata->statuses[$sess->attendanceid])) {
$status = $userdata->statuses[$sess->attendanceid][$sess->statusid];
$stats['course'][$sess->courseid]['statuses'][$status->acronym]['count']++;
$stats['course'][$sess->courseid]['points'] += $status->grade;
$stats['course'][$sess->courseid]['maxpointstodate'] += $statussetmaxpoints[$sess->statusset];
$stats['overall']['statuses'][$status->acronym]['count']++;
$stats['overall']['points'] += $status->grade;
$stats['overall']['maxpointstodate'] += $statussetmaxpoints[$sess->statusset];
}
$stats['course'][$sess->courseid]['maxpoints'] += $statussetmaxpoints[$sess->statusset];
$stats['overall']['maxpoints'] += $statussetmaxpoints[$sess->statusset];

if (!array_key_exists($sess->cmid, $stats['activity'])) {
$stats['activity'][$sess->cmid] = array(
'points' => 0,
'maxpointstodate' => 0,
'maxpoints' => 0,
'pcpointstodate' => null,
'pcpoints' => null,
'statuses' => array()
);
}
$statussetmaxpoints = $statusmaxpoints[$sess->attendanceid];
// Ensure all possible acronyms for current sess's statusset are available as
// keys in status array for period
//
// A bit yucky because we can't tell whether we've seen statusset before, and
// we usually will have, so much wasted spinning.
foreach ($userdata->statuses[$sess->attendanceid] as $attstatus) {
if ($attstatus->setnumber === $sess->statusset) {
if (!array_key_exists($attstatus->acronym, $stats['activity'][$sess->cmid]['statuses'])) {
$stats['activity'][$sess->cmid]['statuses'][$attstatus->acronym] =
array('count' => 0, 'description' => $attstatus->description);
}
if (!array_key_exists($attstatus->acronym, $stats['overall']['statuses'])) {
$stats['overall']['statuses'][$attstatus->acronym] =
array('count' => 0, 'description' => $attstatus->description);
}
}
}
// The array_key_exists check is for hidden statuses.
if (isset($sess->statusid) && array_key_exists($sess->statusid, $userdata->statuses[$sess->attendanceid])) {
$status = $userdata->statuses[$sess->attendanceid][$sess->statusid];
$stats['activity'][$sess->cmid]['statuses'][$status->acronym]['count']++;
$stats['activity'][$sess->cmid]['points'] += $status->grade;
$stats['activity'][$sess->cmid]['maxpointstodate'] += $statussetmaxpoints[$sess->statusset];
$stats['overall']['statuses'][$status->acronym]['count']++;
$stats['overall']['points'] += $status->grade;
$stats['overall']['maxpointstodate'] += $statussetmaxpoints[$sess->statusset];
}
$stats['activity'][$sess->cmid]['maxpoints'] += $statussetmaxpoints[$sess->statusset];
$stats['overall']['maxpoints'] += $statussetmaxpoints[$sess->statusset];
}

```

Any help/clue will be greatly appreciated.

Thanks

Attachment Screen Shot 2021-06-21 at 12.26.43 PM.png
Attachment Screen Shot 2021-06-21 at 12.27.06 PM.png
Average of ratings: -