From 1ab31a1b92113b396451504670374479cb3f5311 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Fri, 13 May 2011 11:42:37 +0100 Subject: [PATCH] MDL-20636 Make extracttestcase.php work after the upgrade too. --- local/qeupgradehelper/extracttestcase.php | 1 - local/qeupgradehelper/index.php | 1 + local/qeupgradehelper/locallib.php | 41 ++++++++++++++--------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/local/qeupgradehelper/extracttestcase.php b/local/qeupgradehelper/extracttestcase.php index de6d033eaf6c4..4cbc5cb87f0cc 100755 --- a/local/qeupgradehelper/extracttestcase.php +++ b/local/qeupgradehelper/extracttestcase.php @@ -38,7 +38,6 @@ require_login(); require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)); -local_qeupgradehelper_require_not_upgraded(); admin_externalpage_setup('qeupgradehelper', '', array(), local_qeupgradehelper_url('extracttestcase')); diff --git a/local/qeupgradehelper/index.php b/local/qeupgradehelper/index.php index 09dcda03fb315..bd4701a075641 100755 --- a/local/qeupgradehelper/index.php +++ b/local/qeupgradehelper/index.php @@ -42,6 +42,7 @@ $detected = get_string('upgradedsitedetected', 'local_qeupgradehelper'); $actions[] = local_qeupgradehelper_action::make('listtodo'); $actions[] = local_qeupgradehelper_action::make('listupgraded'); + $actions[] = local_qeupgradehelper_action::make('extracttestcase'); $actions[] = local_qeupgradehelper_action::make('cronsetup'); } else { diff --git a/local/qeupgradehelper/locallib.php b/local/qeupgradehelper/locallib.php index c76f9b4d81c25..5951ea003b3b7 100755 --- a/local/qeupgradehelper/locallib.php +++ b/local/qeupgradehelper/locallib.php @@ -463,21 +463,23 @@ function local_qeupgradehelper_generate_unit_test($questionsessionid, $namesuffi $question = local_qeupgradehelper_load_question($qsession->questionid, $quiz->id); - if (!$quiz->optionflags) { - $quiz->preferredbehaviour = 'deferredfeedback'; - } else if (!$quiz->penaltyscheme) { - $quiz->preferredbehaviour = 'adaptive'; - } else { - $quiz->preferredbehaviour = 'adaptivenopenalty'; + if (!local_qeupgradehelper_is_upgraded()) { + if (!$quiz->optionflags) { + $quiz->preferredbehaviour = 'deferredfeedback'; + } else if (!$quiz->penaltyscheme) { + $quiz->preferredbehaviour = 'adaptive'; + } else { + $quiz->preferredbehaviour = 'adaptivenopenalty'; + } + unset($quiz->optionflags); + unset($quiz->penaltyscheme); + + $question->defaultmark = $question->defaultgrade; + unset($question->defaultgrade); } - unset($quiz->optionflags); - unset($quiz->penaltyscheme); $attempt->needsupgradetonewqe = 1; - $question->defaultmark = $question->defaultgrade; - unset($question->defaultgrade); - echo "
     public function test_{$question->qtype}_{$quiz->preferredbehaviour}_{$namesuffix}() {
 ";
@@ -560,7 +562,7 @@ function local_qeupgradehelper_display_convert_attempt_input($quiz, $attempt,
 }
 
 function local_qeupgradehelper_load_question($questionid, $quizid) {
-    global $DB, $QTYPES;
+    global $CFG, $DB;
 
     $question = $DB->get_record_sql('
             SELECT q.*, qqi.grade AS maxmark
@@ -569,12 +571,19 @@ function local_qeupgradehelper_load_question($questionid, $quizid) {
             WHERE q.id = :questionid AND qqi.quiz = :quizid',
             array('questionid' => $questionid, 'quizid' => $quizid));
 
-    if (!array_key_exists($question->qtype, $QTYPES)) {
-        $question->qtype = 'missingtype';
-        $question->questiontext = '

' . get_string('warningmissingtype', 'quiz') . '

' . $question->questiontext; + if (local_qeupgradehelper_is_upgraded()) { + require_once($CFG->dirroot . '/question/engine/bank.php'); + $qtype = question_bank::get_qtype($question->qtype, false); + } else { + global $QTYPES; + if (!array_key_exists($question->qtype, $QTYPES)) { + $question->qtype = 'missingtype'; + $question->questiontext = '

' . get_string('warningmissingtype', 'quiz') . '

' . $question->questiontext; + } + $qtype = $QTYPES[$question->qtype]; } - $QTYPES[$question->qtype]->get_question_options($question); + $qtype->get_question_options($question); return $question; }