/** * Removes grades and resets completion * * @global object $CFG * @global object $DB * @param int $userid * @param int $courseid * @return boolean */ function facetoface_archive_completion($userid, $courseid) { global $DB, $CFG; require_once($CFG->libdir . '/completionlib.php'); $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); $completion = new completion_info($course); // All face to face with this course and user $sql = "SELECT f.* FROM {facetoface} f WHERE f.course = :courseid AND EXISTS (SELECT su.id FROM {facetoface_sessions} s JOIN {facetoface_signups} su ON su.sessionid = s.id AND su.userid = :userid WHERE s.facetoface = f.id)"; $facetofaces = $DB->get_records_sql($sql, array('courseid' => $courseid, 'userid' => $userid)); foreach ($facetofaces as $facetoface) { // Add an archive flag $params = array('facetofaceid' => $facetoface->id, 'userid' => $userid, 'archived' => 1, 'archived2' => 1); $sql = "UPDATE {facetoface_signups} SET archived = :archived WHERE userid = :userid AND archived <> :archived2 AND EXISTS (SELECT {facetoface_sessions}.id FROM {facetoface_sessions} WHERE {facetoface_sessions}.id = {facetoface_signups}.sessionid AND {facetoface_sessions}.facetoface = :facetofaceid)"; $DB->execute($sql, $params); // Reset the grades facetoface_update_grades($facetoface, $userid, true); // Set completion to incomplete // Reset viewed $course_module = get_coursemodule_from_instance('facetoface', $facetoface->id, $courseid); $completion->set_module_viewed_reset($course_module, $userid); // And reset completion, in case viewed is not a required condition $completion->update_state($course_module, COMPLETION_INCOMPLETE, $userid); $completion->invalidatecache($courseid, $userid, true); } }
function test_facetoface_update_grades() { // Variables. $facetoface1 = $this->facetoface['f2f0']; $f2f = $this->array_to_object($facetoface1); $userid = 0; $this->assertTrue((bool)facetoface_update_grades($f2f, $userid), $this->msgtrue); $this->resetAfterTest(true); }