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