MDL-35987 qtype_multianswer: Prevent restore failure due to bad sequence
authorFrederic Massart <fred@moodle.com>
Tue, 24 May 2016 09:01:33 +0000 (17:01 +0800)
committerFrederic Massart <fred@moodle.com>
Wed, 25 May 2016 04:23:50 +0000 (12:23 +0800)
question/type/multianswer/backup/moodle2/restore_qtype_multianswer_plugin.class.php

index c61c2dd..80865b1 100644 (file)
@@ -102,7 +102,11 @@ class restore_qtype_multianswer_plugin extends restore_qtype_plugin {
                    AND bi.itemname = 'question_created'",
                 array($this->get_restoreid()));
         foreach ($rs as $rec) {
                    AND bi.itemname = 'question_created'",
                 array($this->get_restoreid()));
         foreach ($rs as $rec) {
-            $sequencearr = explode(',', $rec->sequence);
+            $sequencearr = preg_split('/,/', $rec->sequence, -1, PREG_SPLIT_NO_EMPTY);
+            if (substr_count($rec->sequence, ',') + 1 != count($sequencearr)) {
+                $this->task->log('Invalid sequence found in restored multianswer question ' . $rec->id, backup::LOG_WARNING);
+            }
+
             foreach ($sequencearr as $key => $question) {
                 $sequencearr[$key] = $this->get_mappingid('question', $question);
             }
             foreach ($sequencearr as $key => $question) {
                 $sequencearr[$key] = $this->get_mappingid('question', $question);
             }