class CourseReport in Course 7.2
Same name and namespace in other branches
- 6 includes/course.core.inc \CourseReport
- 7 includes/CourseReport.inc \CourseReport
Holds a user's total progress through a course and functionality to check for completion of required objects.
Hierarchy
- class \Entity implements EntityInterface
- class \CourseHandler
- class \CourseReport
- class \CourseHandler
Expanded class hierarchy of CourseReport
1 string reference to 'CourseReport'
- course_entity_info in ./
course.module - Implements hook_entity_info().
File
- includes/
CourseReport.inc, line 7
View source
class CourseReport extends CourseHandler {
/**
* Get the course of this tracker.
*
* @return Course
*/
public function getCourse() {
return entity_load_single('course', $this->nid);
}
/**
* Track the course (scan required objects, update progress, completion, etc).
*/
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());
}
// Count required objects.
$required += $courseObject
->isRequired();
// Count completed required objects.
$required_complete += $courseObject
->isRequired() && $courseObject
->getFulfillment($account)
->isComplete();
// Log last grade.
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) {
// Course requirements have been met.
$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();
}
/**
* Course report entity label callback.
*/
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();
}
/**
* If the course is complete for this record.
*
* @return bool
*/
function isComplete() {
return $this
->getOption('complete');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CourseHandler:: |
final public | function | Merge an array of options onto the existing options. | |
CourseHandler:: |
public | function | Get an array of access messages. | |
CourseHandler:: |
protected | function | Return an array of database fields. This determines what fields should be serialized instead of stored. | |
CourseHandler:: |
function | |||
CourseHandler:: |
public | function | Get an handler option's value. | |
CourseHandler:: |
public | function | Get an object's configuration. | 1 |
CourseHandler:: |
public | function | Get the summary of an object's options. | 1 |
CourseHandler:: |
public | function | Return a list of warning strings about this handler. | 1 |
CourseHandler:: |
protected | function | Handlers can declare their defaults if they have a configuration form. | 2 |
CourseHandler:: |
public | function | Handlers can declare a form. | 1 |
CourseHandler:: |
private | function | Merge arrays with replace, not append. | |
CourseHandler:: |
public | function | Save data somewhere. | 1 |
CourseHandler:: |
public | function | Validate? | 1 |
CourseHandler:: |
public | function | Set an access message to be displayed along with the course object when it is in the outline. For example, "This activity will open on XYZ" or "Please complete Step 1 to take this activity." | |
CourseHandler:: |
public | function | Set an option for this handler. | 1 |
CourseHandler:: |
final public | function | Set this entire handler's options. | |
CourseHandler:: |
function |
Overrides Entity:: |
1 | |
CourseReport:: |
function |
Course report entity label callback. Overrides Entity:: |
||
CourseReport:: |
public | function | Get the course of this tracker. | |
CourseReport:: |
function | If the course is complete for this record. | ||
CourseReport:: |
function |
Permanently saves the entity. Overrides CourseHandler:: |
||
CourseReport:: |
public | function | Track the course (scan required objects, update progress, completion, etc). | |
Entity:: |
protected | property | 1 | |
Entity:: |
protected | property | ||
Entity:: |
protected | property | ||
Entity:: |
protected | property | ||
Entity:: |
protected | property | ||
Entity:: |
public | function |
Builds a structured array representing the entity's content. Overrides EntityInterface:: |
1 |
Entity:: |
public | function |
Returns the bundle of the entity. Overrides EntityInterface:: |
|
Entity:: |
protected | function | Override this in order to implement a custom default URI and specify 'entity_class_uri' as 'uri callback' hook_entity_info(). | |
Entity:: |
public | function |
Permanently deletes the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the info of the type of the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the type of the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Exports the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Gets the raw, translated value of a property or field. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Checks if the entity has a certain exportable status. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the entity identifier, i.e. the entities name or numeric id. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the internal, numeric identifier. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Checks whether the entity is the default revision. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the label of the entity. Overrides EntityInterface:: |
|
Entity:: |
protected | function | Set up the object instance on construction or unserializiation. | |
Entity:: |
public | function |
Returns the uri of the entity just as entity_uri(). Overrides EntityInterface:: |
|
Entity:: |
public | function |
Generate an array for rendering the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the EntityMetadataWrapper of the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function | Magic method to only serialize what's necessary. | |
Entity:: |
public | function | Magic method to invoke setUp() on unserialization. |