Skip to content

Commit

Permalink
MigrationMoodle: Add task for multichoice answers - refs BT#15992
Browse files Browse the repository at this point in the history
  • Loading branch information
AngelFQC committed Nov 28, 2019
1 parent de8e960 commit e52d77d
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 0 deletions.
4 changes: 4 additions & 0 deletions plugin/migrationmoodle/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@
'action' => 'questions',
'parent' => 21,
],
25 => [
'action' => 'question_multi_choice',
'parent' => 24,
],
];

Display::display_header($plugin->get_title());
Expand Down
1 change: 1 addition & 0 deletions plugin/migrationmoodle/lang/english.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@
$strings['FilesForQuizzesTask'] = 'Files for quizzes';
$strings['QuestionCategoriesTask'] = 'Question categories';
$strings['QuestionsTask'] = 'Questions';
$strings['QuestionMultiChoiceTask'] = 'Answers for multichoice questions';
88 changes: 88 additions & 0 deletions plugin/migrationmoodle/src/Task/QuestionMultiChoiceTask.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?php
/* For licensing terms, see /license.txt */

namespace Chamilo\PluginBundle\MigrationMoodle\Task;

use Chamilo\PluginBundle\MigrationMoodle\Extractor\BaseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\LessonAnswersMultipleChoiceLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpQuizLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedQuestionLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\ReplaceFilePaths;

/**
* Class QuestionMultiChoiceTask.
*
* Task to convert Moodle question answers of multichoice type in Chamilo unique/multiple answers.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Task
*/
class QuestionMultiChoiceTask extends BaseTask
{
/**
* @inheritDoc
*/
public function getExtractConfiguration()
{
return [
'class' => BaseExtractor::class,
'query' => "SELECT
qa.id,
qa.question,
qa.answer,
qa.feedback,
(qa.fraction * qq.defaultmark) score,
q.id quizid,
q.course
FROM mdl_question_answers qa
INNER JOIN mdl_question qq ON qa.question = qq.id
INNER JOIN mdl_quiz_slots qs ON qq.id = qs.questionid
INNER JOIN mdl_quiz q ON qs.quizid = q.id
WHERE qq.qtype = 'multichoice'",
];
}

/**
* @inheritDoc
*/
public function getTransformConfiguration()
{
return [
'class' => BaseTransformer::class,
'map' => [
'c_id' => [
'class' => LoadedCourseLookup::class,
'properties' => ['course'],
],
'quiz_id' => [
'class' => LoadedLpQuizLookup::class,
'properties' => ['quizid'],
],
'question_id' => [
'class' => LoadedQuestionLookup::class,
'properties' => ['question'],
],
'score' => 'score',
'answer' => [
'class' => ReplaceFilePaths::class,
'properties' => ['answer', 'course'],
],
'feedback' => [
'class' => ReplaceFilePaths::class,
'properties' => ['feedback', 'course'],
],
],
];
}

/**
* @inheritDoc
*/
public function getLoadConfiguration()
{
return [
'class' => LessonAnswersMultipleChoiceLoader::class,
];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php
/* For licensing terms, see /license.txt */

namespace Chamilo\PluginBundle\MigrationMoodle\Transformer\Property;

use Chamilo\PluginBundle\MigrationMoodle\Task\QuestionsTask;

/**
* Class LoadedQuestionLookup.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Transformer\Property
*/
class LoadedQuestionLookup extends LoadedKeyLookup
{
/**
* LoadedQuestionLookup constructor.
*/
public function __construct()
{
$this->calledClass = QuestionsTask::class;
}
}

0 comments on commit e52d77d

Please sign in to comment.