/**
  * 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);
 }