From b37cacae47f75669463139bfef0b5eb512b8316c Mon Sep 17 00:00:00 2001 From: gustav_delius Date: Sat, 5 Feb 2005 21:03:04 +0000 Subject: [PATCH] It is now no longer possible to add or delete questions in a quiz that students have already attempted, see http://moodle.org/mod/forum/discuss.php?d=16479#86488 --- mod/quiz/edit.php | 50 ++++++++++++++++++++++++++++++------------- mod/quiz/locallib.php | 8 ++++--- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/mod/quiz/edit.php b/mod/quiz/edit.php index 661b09287bc..bea4c56626e 100644 --- a/mod/quiz/edit.php +++ b/mod/quiz/edit.php @@ -196,6 +196,36 @@ $strediting = get_string('editquestions', "quiz"); // Print basic page layout. + + if (isset($modform->instance) and record_exists_sql("SELECT * FROM {$CFG->prefix}quiz_attempts WHERE quiz = '$modform->instance' AND NOT (userid = '$USER->id') LIMIT 1")){ + // one column layout with table of questions used in this quiz + print_header_simple($strediting, '', + "id\">$strquizzes". + " -> instance\">$modform->name". + " -> $strediting"); + print_simple_box_start("center"); + print_heading($modform->name); + $attemptcount = count_records_select("quiz_attempts", "quiz = '$modform->instance' AND timefinish > 0"); + + $strviewallanswers = get_string("viewallanswers","quiz",$attemptcount); + $strattemptsexist = get_string("attemptsexist","quiz"); + $usercount = count_records("quiz_grades", "quiz", "$modform->instance"); + $strusers = get_string("users"); + if (! $cm = get_coursemodule_from_instance("quiz", $modform->instance, $course->id)) { + error("Course Module ID was incorrect"); + } + notify("$strattemptsexist
id\">$strviewallanswers ($usercount $strusers)"); + + $sumgrades = quiz_print_question_list($modform->questions, $modform->grades, false); + if (!set_field('quiz', 'sumgrades', $sumgrades, 'id', $modform->instance)) { + error('Failed to set sumgrades'); + } + + print_simple_box_end(); + print_continue('view.php?q='.$modform->instance); + print_footer($course); + exit; + } if (!isset($modform->instance)) { // one column layout for non-quiz-specific editing page @@ -220,18 +250,8 @@ error('Failed to set sumgrades'); } - if ($attemptcount = count_records_select("quiz_attempts", "quiz = '$modform->instance' AND timefinish > 0")) { - $strviewallanswers = get_string("viewallanswers","quiz",$attemptcount); - $strattemptsexist = get_string("attemptsexist","quiz"); - $usercount = count_records("quiz_grades", "quiz", "$modform->instance"); - $strusers = get_string("users"); - if (! $cm = get_coursemodule_from_instance("quiz", $modform->instance, $course->id)) { - error("Course Module ID was incorrect"); - } - notify("$strattemptsexist
id\">$strviewallanswers ($usercount $strusers)"); - } - print_simple_box_end(); + print_continue('view.php?q='.$modform->instance); echo ''; } // non-quiz-specific column @@ -246,15 +266,15 @@ quiz_print_cat_question_list($modform->category, isset($modform->instance), $modform->recurse, $page, $perpage); print_simple_box_end(); - - echo ''; - echo ''; - if (!isset($modform->instance)) { print_continue("index.php?id=$modform->course"); } else { print_continue('view.php?q='.$modform->instance); } + echo ''; + echo ''; + + print_footer($course); ?> diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index 614824c0698..5ee7d58dcf2 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -1132,7 +1132,7 @@ function quiz_gradesmenu_options($defaultgrade) { return $gradesmenu; } -function quiz_print_question_list($questionlist, $grades) { +function quiz_print_question_list($questionlist, $grades, $allowdelete=true) { // Prints a list of quiz questions in a small layout form with knobs // returns sum of maximum grades // $questionlist is comma-separated list @@ -1212,8 +1212,10 @@ function quiz_print_question_list($questionlist, $grades) { if ($canedit) { echo " \"$stredit\" "; - echo "sesskey\"> - \"$strdelete\" "; + if ($allowdelete) { + echo "sesskey\"> + \"$strdelete\" "; + } echo " \"$strpreview\""; }