From: mjollnir_ Date: Tue, 18 Apr 2006 22:55:28 +0000 (+0000) Subject: mod/quiz/index changes to only display quiz grades when teacher allows X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=40377b188b3486ac4cebf188d1cff4eacb590259;p=moodle.git 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 --- diff --git a/mod/quiz/index.php b/mod/quiz/index.php index 71c0f33537..e8f2986f8e 100644 --- a/mod/quiz/index.php +++ b/mod/quiz/index.php @@ -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 = ""; + } } } diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index 5fcea170a4..afd7670858 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -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; +} ?>