diff --git a/main/inc/lib/moodleexport/QuizExport.php b/main/inc/lib/moodleexport/QuizExport.php
index 7cd6794b6ba..69c11285833 100644
--- a/main/inc/lib/moodleexport/QuizExport.php
+++ b/main/inc/lib/moodleexport/QuizExport.php
@@ -209,13 +209,16 @@ private function mapQuestionType(string $quizType): string
*/
private function getAnswersForQuestion(int $questionId): array
{
+ static $globalCounter = 0;
$answers = [];
$quizResources = $this->course->resources[RESOURCE_QUIZQUESTION] ?? [];
foreach ($quizResources as $questionData) {
if ($questionData->source_id == $questionId) {
foreach ($questionData->answers as $answer) {
+ $globalCounter++;
$answers[] = [
+ 'id' => $questionId * 1000 + $globalCounter,
'text' => $answer['answer'],
'fraction' => $answer['correct'] == '1' ? 100 : 0,
'feedback' => $answer['comment'],
@@ -316,9 +319,10 @@ private function createQuizXml(array $quizData, string $destinationDir): void
// Add question instances
$xmlContent .= ' '.PHP_EOL;
+ $slotIndex = 1;
foreach ($quizData['questions'] as $question) {
$xmlContent .= ' '.PHP_EOL;
- $xmlContent .= ' '.$question['id'].''.PHP_EOL;
+ $xmlContent .= ' '.$slotIndex.''.PHP_EOL;
$xmlContent .= ' 1'.PHP_EOL;
$xmlContent .= ' 0'.PHP_EOL;
$xmlContent .= ' '.$question['id'].''.PHP_EOL;
@@ -326,6 +330,7 @@ private function createQuizXml(array $quizData, string $destinationDir): void
$xmlContent .= ' $@NULL@$'.PHP_EOL;
$xmlContent .= ' '.$question['maxmark'].''.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
+ $slotIndex++;
}
$xmlContent .= ' '.PHP_EOL;
@@ -417,8 +422,10 @@ private function exportTrueFalseQuestion(array $question): string
}
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
- $xmlContent .= ' '.($question['answers'][0]['id'] ?? '0').''.PHP_EOL;
- $xmlContent .= ' '.($question['answers'][1]['id'] ?? '0').''.PHP_EOL;
+ $trueId = $question['answers'][0]['id'] ?? 0;
+ $falseId = $question['answers'][1]['id'] ?? 0;
+ $xmlContent .= ' '.$trueId.''.PHP_EOL;
+ $xmlContent .= ' '.$falseId.''.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;