public function __construct(attendance $att)
 {
     if ($att->pageparams->grouptype) {
         $this->users = $att->get_users($att->pageparams->grouptype, $att->pageparams->page);
     } else {
         $this->users = $att->get_users($att->pageparams->group, $att->pageparams->page);
     }
     $this->pageparams = $att->pageparams;
     $this->perm = $att->perm;
     $this->groupmode = $att->get_group_mode();
     $this->cm = $att->cm;
     $this->statuses = $att->get_statuses();
     $this->sessioninfo = $att->get_session_info($att->pageparams->sessionid);
     $this->updatemode = $this->sessioninfo->lasttaken > 0;
     if (isset($att->pageparams->copyfrom)) {
         $this->sessionlog = $att->get_session_log($att->pageparams->copyfrom);
     } else {
         if ($this->updatemode) {
             $this->sessionlog = $att->get_session_log($att->pageparams->sessionid);
         } else {
             $this->sessionlog = array();
         }
     }
     if (!$this->updatemode) {
         $this->sessions4copy = $att->get_today_sessions_for_copy($this->sessioninfo);
     }
     $this->urlpath = $att->url_take()->out_omit_querystring();
     $params = $att->pageparams->get_significant_params();
     $params['id'] = $att->cm->id;
     $this->urlparams = $params;
     $this->att = $att;
 }
 if ($late == 0) {
     //not late
     $statusid = $statussesarray[0];
 } else {
     //late
     $statusid = $statussesarray[1];
 }
 $record = new stdClass();
 $record->studentid = $user->id;
 $record->statusid = $statusid;
 $record->statusset = $statuses;
 $record->remarks = get_string('set_by_student', 'mod_attendance');
 $record->sessionid = $sessionid;
 $record->timetaken = $now;
 $record->takenby = $user->id;
 $dbsesslog = $att->get_session_log($sessionid);
 if (array_key_exists($record->studentid, $dbsesslog)) {
     // Already recorded do not save.
     return false;
 }
 $logid = $DB->insert_record('attendance_log', $record, false);
 $record->id = $logid;
 // Update the session to show that a register has been taken, or staff may overwrite records.
 $session = $att->get_session_info($sessionid);
 $session->lasttaken = $now;
 $session->lasttakenby = $USER->id;
 $updaterecord = $DB->update_record('attendance_sessions', $session);
 // Update the users grade.
 $updategrade = $att->update_users_grade(array($USER->id));
 /* create url for link in log screen
  * need to set grouptype to 0 to allow take attendance page to be called