CourseReport.inc in Course 7.2
File
includes/CourseReport.inc
View source
<?php
class CourseReport extends CourseHandler {
public function getCourse() {
return entity_load_single('course', $this->nid);
}
public function track() {
$required = 0;
$required_complete = 0;
$prev = NULL;
$account = user_load($this->uid);
$grades = [];
foreach ($this
->getCourse()
->getObjects() as $courseObject) {
if (!$courseObject
->isEnabled()) {
continue;
}
if (!$prev) {
$this
->setOption('section_name', $courseObject
->getTitle());
$this
->setOption('coid', $courseObject
->getId());
}
$required += $courseObject
->isRequired();
$required_complete += $courseObject
->isRequired() && $courseObject
->getFulfillment($account)
->isComplete();
if ($courseObject
->isGraded() && $courseObject
->getOption('grade_include')) {
$grades[$courseObject
->identifier()] = $courseObject
->getFulfillment($account)
->getOption('grade_result');
}
if (!$courseObject
->getFulfillment($account)
->isComplete() && $prev && $prev
->getFulfillment($account)
->isComplete()) {
$this
->setOption('section_name', $courseObject
->getTitle());
$this
->setOption('coid', $courseObject
->getId());
}
$prev = clone $courseObject;
}
if (!empty($grades)) {
$this
->setOption('grade_result', array_sum($grades) / count($grades));
}
if ($required_complete >= $required) {
$this
->setOption('section', 'complete');
$this
->setOption('section_name', 'Complete');
$this
->setOption('complete', 1);
if (!$this
->getOption('date_completed')) {
$this
->setOption('date_completed', REQUEST_TIME);
}
}
$this
->save();
}
function defaultLabel() {
$node = node_load($this->nid);
$account = user_load($this->uid);
return t("@username's course report for @title", array(
'@username' => format_username($account),
'@title' => $node->title,
));
}
function save() {
$this->updated = REQUEST_TIME;
return parent::save();
}
function isComplete() {
return $this
->getOption('complete');
}
}
Classes
Name |
Description |
CourseReport |
Holds a user's total progress through a course and functionality to check
for completion of required objects. |