/** * Print a detailed representation of what a user has done with * a given particular instance of this module, for user activity reports. * * @param object $course * @param object $user * @param object $mod * @param object $quiz * @return bool */ function quiz_user_complete($course, $user, $mod, $quiz) { global $DB, $CFG, $OUTPUT; require_once($CFG->libdir . '/gradelib.php'); require_once($CFG->dirroot . '/mod/quiz/locallib.php'); $grades = grade_get_grades($course->id, 'mod', 'quiz', $quiz->id, $user->id); if (!empty($grades->items[0]->grades)) { $grade = reset($grades->items[0]->grades); echo $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); if ($grade->str_feedback) { echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); } } if ($attempts = $DB->get_records('quiz_attempts', array('userid' => $user->id, 'quiz' => $quiz->id), 'attempt')) { foreach ($attempts as $attempt) { echo get_string('attempt', 'quiz', $attempt->attempt) . ': '; if ($attempt->state != quiz_attempt::FINISHED) { echo quiz_attempt_state_name($attempt->state); } else { echo quiz_format_grade($quiz, $attempt->sumgrades) . '/' . quiz_format_grade($quiz, $quiz->sumgrades); } echo ' - '.userdate($attempt->timemodified).'<br />'; } } else { print_string('noattempts', 'quiz'); } return true; }
/** * @param string $state one of the state constants like IN_PROGRESS. * @return string the human-readable state name. */ public static function state_name($state) { return quiz_attempt_state_name($state); }
/** * Print a detailed representation of what a user has done with * a given particular instance of this module, for user activity reports. * * @param object $course * @param object $user * @param object $mod * @param object $quiz * @return bool */ function quiz_user_complete($course, $user, $mod, $quiz) { global $DB, $CFG, $OUTPUT; require_once($CFG->libdir . '/gradelib.php'); require_once($CFG->dirroot . '/mod/quiz/locallib.php'); $grades = grade_get_grades($course->id, 'mod', 'quiz', $quiz->id, $user->id); if (!empty($grades->items[0]->grades)) { $grade = reset($grades->items[0]->grades); // If the user can't see hidden grades, don't return that information. $gitem = grade_item::fetch(array('id' => $grades->items[0]->id)); if (!$gitem->hidden || has_capability('moodle/grade:viewhidden', context_course::instance($course->id))) { echo $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); if ($grade->str_feedback) { echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); } } else { echo $OUTPUT->container(get_string('grade') . ': ' . get_string('hidden', 'grades')); if ($grade->str_feedback) { echo $OUTPUT->container(get_string('feedback').': '.get_string('hidden', 'grades')); } } } if ($attempts = $DB->get_records('quiz_attempts', array('userid' => $user->id, 'quiz' => $quiz->id), 'attempt')) { foreach ($attempts as $attempt) { echo get_string('attempt', 'quiz', $attempt->attempt) . ': '; if ($attempt->state != quiz_attempt::FINISHED) { echo quiz_attempt_state_name($attempt->state); } else { if (!isset($gitem)) { if (!empty($grades->items[0]->grades)) { $gitem = grade_item::fetch(array('id' => $grades->items[0]->id)); } else { $gitem = new stdClass(); $gitem->hidden = true; } } if (!$gitem->hidden || has_capability('moodle/grade:viewhidden', context_course::instance($course->id))) { echo quiz_format_grade($quiz, $attempt->sumgrades) . '/' . quiz_format_grade($quiz, $quiz->sumgrades); } else { echo get_string('hidden', 'grades'); } } echo ' - '.userdate($attempt->timemodified).'<br />'; } } else { print_string('noattempts', 'quiz'); } return true; }