mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 08:55:15 +02:00
mod/quiz/index changes to only display quiz grades when teacher allows
Changes to index.php to only allow student to view overall quiz scores when teacher has not set options forbidding this, and it can't give away what scores were for attempts where results should still be hidden. Credit: Peter Bulmer peterbulmer@catalyst.net.nz
This commit is contained in:
parent
d78a1cf6d8
commit
40377b188b
@ -112,10 +112,17 @@
|
||||
$gradecol = "";
|
||||
}
|
||||
} else {
|
||||
// If student has no grade for this quiz,
|
||||
// or the quiz has no grade, display nothing in grade col
|
||||
if ($bestgrade === NULL || $quiz->grade == 0) {
|
||||
$gradecol = "";
|
||||
} else {
|
||||
$gradecol = "$bestgrade / $quiz->grade";
|
||||
//If all quiz's attempts have visible results, show bestgrade
|
||||
if(all_attempt_results_visible($quiz, $USER)) {
|
||||
$gradecol = "$bestgrade / $quiz->grade";
|
||||
} else {
|
||||
$gradecol = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -550,5 +550,31 @@ function quiz_get_reviewoptions($quiz, $attempt, $isteacher=false) {
|
||||
|
||||
return $options;
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Return boolean indicating if the quiz has attempts with hidden grades
|
||||
*
|
||||
* Selects all attempts matching specified quiz & user, and examines each to
|
||||
* check they all have visible results.
|
||||
* @return boolean If the quiz has attempts without visible results
|
||||
* @param object $quiz The quiz being examined
|
||||
* @param object $user The user concerned
|
||||
*/
|
||||
function all_attempt_results_visible($quiz, $user) {
|
||||
global $CFG;
|
||||
$sql = 'SELECT timefinish, preview FROM '.$CFG->prefix.'quiz_attempts qa'.
|
||||
' WHERE qa.quiz='.$quiz->id.' AND qa.userid='.$user->id.
|
||||
' ORDER BY id DESC';
|
||||
$attempts = get_records_sql($sql);
|
||||
foreach ($attempts as $attempt) {
|
||||
$attemptoptions = quiz_get_reviewoptions($quiz, $attempt);
|
||||
//if any attempt has scores option not set, not all attempt results are
|
||||
//visible
|
||||
if (!$attemptoptions->scores) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user