MigrationMoodle: Add task for quizzes scores in LP - refs BT#15992

pull/3127/head
Angel Fernando Quiroz Campos 6 years ago
parent 23f82bc5b8
commit 2d930800c6
  1. 3
      plugin/migrationmoodle/admin.php
  2. 1
      plugin/migrationmoodle/lang/english.php
  3. 40
      plugin/migrationmoodle/src/Loader/QuizzesScoresLoader.php
  4. 74
      plugin/migrationmoodle/src/Task/QuizzesScoresTask.php

@ -64,12 +64,11 @@ $menu = [
], ],
'course_modules_quiz' => [ 'course_modules_quiz' => [
'quizzes', 'quizzes',
'quizzes_scores',
], ],
'quizzes' => [ 'quizzes' => [
'files_for_quizzes', 'files_for_quizzes',
'question_categories', 'question_categories',
],
'question_categories' => [
'questions', 'questions',
], ],
'questions' => [ 'questions' => [

@ -52,3 +52,4 @@ $strings['UsersScormsViewTask'] = 'Scorm views for users';
$strings['UsersScormsProgressTask'] = 'Scorm progress'; $strings['UsersScormsProgressTask'] = 'Scorm progress';
$strings['UsersLearnPathsTask'] = 'Learn paths views of users'; $strings['UsersLearnPathsTask'] = 'Learn paths views of users';
$strings['UsersLearnPathsSectionsTask'] = 'Learn paths sections views of users'; $strings['UsersLearnPathsSectionsTask'] = 'Learn paths sections views of users';
$strings['QuizzesScoresTask'] = 'Update quiz scores in learn path';

@ -0,0 +1,40 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Loader;
use Chamilo\PluginBundle\MigrationMoodle\Interfaces\LoaderInterface;
/**
* Class QuizzesScoresLoader.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Loader
*/
class QuizzesScoresLoader implements LoaderInterface
{
/**
* @inheritDoc
*/
public function load(array $incomingData)
{
$tblQuizQuestion = \Database::get_course_table(TABLE_QUIZ_QUESTION);
$tblQuizRelQuestion = \Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$tblLpItem = \Database::get_course_table(TABLE_LP_ITEM);
$sql = "SELECT SUM(ponderation)
FROM $tblQuizQuestion as quiz_question
INNER JOIN $tblQuizRelQuestion as quiz_rel_question
ON (quiz_question.id = quiz_rel_question.question_id AND quiz_question.c_id = quiz_rel_question.c_id)
WHERE
quiz_rel_question.exercice_id = {$incomingData['quiz_id']}
AND quiz_question.c_id = {$incomingData['c_id']}
AND quiz_rel_question.c_id = {$incomingData['c_id']}";
$rsQuiz = \Database::query($sql);
$maxScore = \Database::result($rsQuiz, 0, 0);
\Database::query("UPDATE $tblLpItem SET max_score = $maxScore WHERE iid = {$incomingData['item_id']}");
return $incomingData['item_id'];
}
}

@ -0,0 +1,74 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Task;
use Chamilo\PluginBundle\MigrationMoodle\Extractor\CourseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\QuizzesScoresLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseModuleQuizLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedQuizLookup;
/**
* Class QuizzesScoresTask.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Task
*/
class QuizzesScoresTask extends BaseTask
{
/**
* @inheritDoc
*/
public function getExtractConfiguration()
{
return [
'class' => CourseExtractor::class,
'query' => "SELECT
q.id,
q.course,
cm.section,
cm.id cm_id
FROM mdl_quiz q
INNER JOIN mdl_course_modules cm ON (q.course = cm.course AND cm.instance = q.id)
INNER JOIN mdl_modules m ON cm.module = m.id
INNER JOIN mdl_course_sections cs ON (cm.course = cs.course AND cm.section = cs.id )
WHERE m.name = 'quiz'
ORDER BY cs.id, FIND_IN_SET(cm.id, cs.sequence)",
];
}
/**
* @inheritDoc
*/
public function getTransformConfiguration()
{
return [
'class' => BaseTransformer::class,
'map' => [
'quiz_id' => [
'class' => LoadedQuizLookup::class,
'properties' => ['id'],
],
'c_id' => [
'class' => LoadedCourseLookup::class,
'properties' => ['course'],
],
'item_id' => [
'class' => LoadedCourseModuleQuizLookup::class,
'properties' => ['cm_id'],
],
],
];
}
/**
* @inheritDoc
*/
public function getLoadConfiguration()
{
return [
'class' => QuizzesScoresLoader::class,
];
}
}
Loading…
Cancel
Save