MigrationMoodle: Add task for multiple answers in lesson pages - refs BT#15992

pull/3127/head
Angel Fernando Quiroz Campos 6 years ago
parent 58f99b78cf
commit e018e876b3
  1. 9
      plugin/migrationmoodle/admin.php
  2. 74
      plugin/migrationmoodle/src/Loader/LessonAnswersMultipleAnswerLoader.php
  3. 43
      plugin/migrationmoodle/src/Task/LessonAnswersMultipleAnswerTask.php

@ -7,6 +7,7 @@ use Chamilo\PluginBundle\MigrationMoodle\Task\CoursesTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseUsersTask; use Chamilo\PluginBundle\MigrationMoodle\Task\CourseUsersTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CQuizTask; use Chamilo\PluginBundle\MigrationMoodle\Task\CQuizTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LearningPathsTask; use Chamilo\PluginBundle\MigrationMoodle\Task\LearningPathsTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersMultipleAnswerTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersMultipleChoiceTask; use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersMultipleChoiceTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersTrueFalseTask; use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersTrueFalseTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LpDirsTask; use Chamilo\PluginBundle\MigrationMoodle\Task\LpDirsTask;
@ -89,6 +90,11 @@ $menu = [
'learnin_path_quiz_answers_multiple_choice', 'learnin_path_quiz_answers_multiple_choice',
'Answers for Multiple Choice questions', 'Answers for Multiple Choice questions',
[] []
],
[
'learnin_path_quiz_answers_multiple_answer',
'Answers for Multiple Answers questions',
[]
] ]
], ],
], ],
@ -169,6 +175,9 @@ if (!empty($action)) {
case 'learnin_path_quiz_answers_multiple_choice': case 'learnin_path_quiz_answers_multiple_choice':
$task = new LessonAnswersMultipleChoiceTask(); $task = new LessonAnswersMultipleChoiceTask();
break; break;
case 'learnin_path_quiz_answers_multiple_answer':
$task = new LessonAnswersMultipleAnswerTask();
break;
} }
if ($task) { if ($task) {

@ -0,0 +1,74 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Loader;
use Chamilo\PluginBundle\MigrationMoodle\Interfaces\LoaderInterface;
/**
* Class LessonAnswersMultipleAnswerLoader.
*
* Loader to create Unique Answer question comming from Multiple Choice lesson page.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Loader
*/
class LessonAnswersMultipleAnswerLoader implements LoaderInterface
{
/**
* @param array $incomingData
*
* @return int
*/
public function load(array $incomingData)
{
$courseInfo = api_get_course_info_by_id($incomingData['c_id']);
$exercise = new \Exercise($incomingData['c_id']);
$exercise->read($incomingData['quiz_id']);
$question = \Question::read($incomingData['question_id'], $courseInfo);
$answer = new \Answer($incomingData['question_id'], $incomingData['c_id'], $exercise);
$questionsAnswers = $answer->getAnswers();
foreach ($questionsAnswers as $questionsAnswer) {
$answer->createAnswer(
$questionsAnswer['answer'],
$questionsAnswer['correct'],
$questionsAnswer['comment'],
$questionsAnswer['ponderation'],
$questionsAnswer['position'],
$questionsAnswer['hotspot_coordinates'],
$questionsAnswer['hotspot_type'],
$questionsAnswer['destination']
);
}
$isGoodAnswer = !empty($incomingData['score']);
$incomingData['score'] = abs($incomingData['score']);
if (!$isGoodAnswer) {
$incomingData['score'] = -$incomingData['score'];
}
if ($incomingData['score'] > 0) {
$question->weighting += $incomingData['score'];
}
$answer->createAnswer(
$incomingData['answer'],
$isGoodAnswer,
$incomingData['feedback'],
$incomingData['score'],
$question->countAnswers() + 1,
null,
null,
'0@@0@@0@@0'
);
$answer->save();
$question->save($exercise);
return $question->id;
}
}

@ -0,0 +1,43 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Task;
use Chamilo\PluginBundle\MigrationMoodle\Extractor\BaseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\LessonAnswersMultipleAnswerLoader;
/**
* Class LessonAnswersMultipleAnswerTask
*
* Task to convert Multiple Choice answers from a Moodle lesson page in answers for Unique Answer question for Chamilo.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Task
*/
class LessonAnswersMultipleAnswerTask extends LessonAnswersMultipleChoiceTask
{
/**
* @return array
*/
public function getExtractConfiguration()
{
return [
'class' => BaseExtractor::class,
'query' => 'SELECT la.id, la.pageid, la.score, la.answer, la.response, l.course
FROM mdl_lesson_answers la
INNER JOIN mdl_lesson_pages lp ON (la.pageid = lp.id AND la.lessonid = lp.lessonid)
INNER JOIN mdl_lesson l ON (lp.lessonid = l.id AND la.lessonid = l.id)
WHERE lp.qtype = 3 AND lp.qoption = 1
ORDER BY lp.id',
];
}
/**
* @return array
*/
public function getLoadConfiguration()
{
return [
'class' => LessonAnswersMultipleAnswerLoader::class,
];
}
}
Loading…
Cancel
Save