/** * Returns a json array * * @param unknown $output */ function attendance_json_array($output) { // Verify that parameter is OK. Output should not be null. if (!$output) { attendance_json_error('Invalid parameters for encoding json. output is null.'); } $output = array('error' => '', 'values' => $output); attendance_json_output(json_encode($output)); }
/* create url for link in log screen * need to set grouptype to 0 to allow take attendance page to be called * from report/log page */ // $params = array( // 'sessionid' => $this->pageparams->sessionid, // 'grouptype' => 0); // // Log the change. // $event = \mod_attendance\event\attendance_taken_by_student::create(array( // 'objectid' => $this->id, // 'context' => $this->context, // 'other' => $params)); // $event-> // ('course_modules', $this->cm); // $event->add_record_snapshot('attendance_sessions', $session); // $event->add_record_snapshot('attendance_log', $record); // $event->trigger(); if ($logid && $updaterecord) { attendance_json_error('1'); } else { attendance_json_error('0'); } break; // case 'bringqrcode': // require_once $CFG->dirroot . '/mod/attendance/lib.php'; // $context = optional_param ( 'context', null , PARAM_RAW_TRIMMED ); // $filearea = optional_param ( 'filearea', null , PARAM_RAW_TRIMMED ); // $filename = optional_param ( 'filename', null , PARAM_RAW_TRIMMED ); // attendance_pluginfile($context, $filearea, $filename); // break; } //end of actions
require_once $CFG->libdir . '/accesslib.php'; global $CFG, $DB, $OUTPUT, $PAGE, $USER; $action = required_param('action', PARAM_ALPHA); $username = required_param('username', PARAM_RAW_TRIMMED); $password = required_param('password', PARAM_RAW_TRIMMED); if (!($user = authenticate_user_login($username, $password))) { attendance_json_error('Invalid username or password'); } // This is the correct way to fill up $USER variable // complete_user_login($user); switch ($action) { case 'login': if (!$user) { attendance_json_error('Invalid username or password'); } else { attendance_json_error('Valid login'); } break; case 'sessions': $sqlgetsessions = "SELECT sess.id AS sessionid, course.fullname AS coursename, course.id AS courseid,\n\t\t\t\t\t\t\tsess.description AS description, FROM_UNIXTIME(sess.sessdate) AS time \n\t\t\t\t\t\t\tFROM {attendance_sessions} AS sess\n\t\t\t\t\t\t\tINNER JOIN {attendance} AS att ON (att.id= sess.attendanceid )\n\t\t\t\t\t\t\tINNER JOIN {course} AS course ON ( course.id = att.course )\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tcourse.id IN \n\t\t\t\t\t\t\t\t\t(SELECT course FROM \n\t\t\t\t\t\t\t\t\t(SELECT c.id AS course\n\t\t\t\t\t\t\t\t\tFROM {user} AS u\n\t\t\t\t\t\t\t\t\tINNER JOIN {role_assignments} AS ra ON (ra.userid = u.id)\n\t\t\t\t\t\t\t\t\tINNER JOIN {context} AS ct ON (ct.id = ra.contextid)\n\t\t\t\t\t\t\t\t\tINNER JOIN {course} AS c ON (c.id = ct.instanceid)\n\t\t\t\t\t\t\t\t\tINNER JOIN {role} AS r ON (r.id = ra.roleid)\t\n\t\t\t\t\t\t\t\t\tWHERE u.id= ? ) as courses)\n\t\t\t\t\t\t\tAND \n\t\t\t\t\t\t\tsess.id NOT IN\n\t\t\t\t\t\t\t\t( SELECT takensessions FROM (\n\t\t\t\t\t\t\t\t\tSELECT sess.id AS takensessions FROM mdl_attendance_log AS log\n\t\t\t\t\t\t\t\t\tINNER JOIN mdl_user AS users ON ( users.id = log.studentid )\n\t\t\t\t\t\t\t\t\tINNER JOIN mdl_attendance_sessions AS sess ON (sess.id = log.sessionid)\n\t\t\t\t\t\t\t\t\tINNER JOIN mdl_attendance AS att ON (att.id= sess.attendanceid )\n\t\t\t\t\t\t\t\t\tINNER JOIN mdl_course AS course ON ( course.id = att.course )\n\t\t\t\t\t\t\t\t\tWHERE users.id = ? ) AS taken)\n\t\t\t\t\t\t\tAND FROM_UNIXTIME(sess.sessdate) >= NOW()\n\t\t\t\t\t\t\tORDER BY FROM_UNIXTIME(sess.sessdate) ASC\n\t\t\t\t"; //missing DateADD in case you want to take attendance within a margin of time $sessions = $DB->get_recordset_sql($sqlgetsessions, array($user->id, $user->id)); //var_dump($sessions); if (!$sessions) { $output = array(); $output[] = 0; } else { foreach ($sessions as $obj) { $output[] = $obj; } }