parent
58f99b78cf
commit
e018e876b3
@ -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…
Reference in new issue