/** * Initializes the attendance API instance using the data from DB * * Makes deep copy of all passed records properties. Replaces integer $course attribute * with a full database record (course should not be stored in instances table anyway). * * @param stdClass $dbrecord Attandance instance data from {attendance} table * @param stdClass $cm Course module record as returned by {@link get_coursemodule_from_id()} * @param stdClass $course Course record from {course} table * @param stdClass $context The context of the workshop instance */ public function __construct(stdclass $dbrecord, stdclass $cm, stdclass $course, stdclass $context = null, $pageparams = null) { foreach ($dbrecord as $field => $value) { if (property_exists('attendance', $field)) { $this->{$field} = $value; } else { throw new coding_exception('The attendance table has a field with no property in the attendance class'); } } $this->cm = $cm; $this->course = $course; if (is_null($context)) { $this->context = context_module::instance_by_id($this->cm->id); } else { $this->context = $context; } $this->pageparams = $pageparams; $this->perm = new attendance_permissions($this->cm, $this->context); }