MigrationMoodle: Fix LP items order - refs BT#15992

pull/3127/head
Angel Fernando Quiroz Campos 6 years ago
parent 3d87eff7e1
commit 4bfbf72aa9
  1. 4
      plugin/migrationmoodle/admin.php
  2. 2
      plugin/migrationmoodle/lang/english.php
  3. 2
      plugin/migrationmoodle/src/Loader/CourseModulesLessonLoader.php
  4. 7
      plugin/migrationmoodle/src/Loader/CourseModulesQuizLoader.php
  5. 20
      plugin/migrationmoodle/src/Loader/CourseModulesUrlLoader.php
  6. 13
      plugin/migrationmoodle/src/Loader/CourseSectionsLoader.php
  7. 27
      plugin/migrationmoodle/src/Loader/SortSectionModuleLoader.php
  8. 43
      plugin/migrationmoodle/src/Loader/UrlLoader.php
  9. 11
      plugin/migrationmoodle/src/Task/CourseModulesLessonTask.php
  10. 7
      plugin/migrationmoodle/src/Task/CourseModulesQuizTask.php
  11. 10
      plugin/migrationmoodle/src/Task/CourseModulesUrlTask.php
  12. 78
      plugin/migrationmoodle/src/Task/SortSectionModulesTask.php
  13. 79
      plugin/migrationmoodle/src/Task/UrlsTask.php
  14. 22
      plugin/migrationmoodle/src/Transformer/Property/LoadedCourseModulesUrlLookup.php
  15. 2
      plugin/migrationmoodle/src/Transformer/Property/LoadedKeyLookup.php
  16. 44
      plugin/migrationmoodle/src/Transformer/Property/LoadedLpDirLookup.php
  17. 67
      plugin/migrationmoodle/src/Transformer/Property/LoadedLpItemInSequenceLookup.php
  18. 73
      plugin/migrationmoodle/src/Transformer/Property/SectionSequenceLookup.php

@ -37,6 +37,7 @@ $menu = [
'course_modules_quiz', 'course_modules_quiz',
'course_modules_url', 'course_modules_url',
'c_quiz', 'c_quiz',
'sort_section_modules',
], ],
'course_modules_lesson' => [ 'course_modules_lesson' => [
'lesson_pages', 'lesson_pages',
@ -84,6 +85,9 @@ $menu = [
'course_introductions' => [ 'course_introductions' => [
'files_for_course_introductions', 'files_for_course_introductions',
], ],
'course_modules_url' => [
'urls',
],
]; ];
Display::display_header($plugin->get_title()); Display::display_header($plugin->get_title());

@ -45,3 +45,5 @@ $strings['CourseIntroductionsTask'] = 'Course introductions';
$strings['FilesForCourseIntroductionsTask'] = 'Files for course introductions'; $strings['FilesForCourseIntroductionsTask'] = 'Files for course introductions';
$strings['FilesForCourseSectionsTask'] = 'Files for course sections'; $strings['FilesForCourseSectionsTask'] = 'Files for course sections';
$strings['CourseModulesUrlTask'] = 'Course modules: URLs'; $strings['CourseModulesUrlTask'] = 'Course modules: URLs';
$strings['UrlsTask'] = 'URLs';
$strings['SortSectionModulesTask'] = 'Sort modules in section';

@ -30,7 +30,7 @@ class CourseModulesLessonLoader implements LoaderInterface
); );
$itemId = $lp->add_item( $itemId = $lp->add_item(
0, 0,
$incomingData['previous'], 0,
'dir', 'dir',
0, 0,
$incomingData['title'], $incomingData['title'],

@ -29,15 +29,14 @@ class CourseModulesQuizLoader implements LoaderInterface
$incomingData['lp_id'], $incomingData['lp_id'],
api_get_user_id() api_get_user_id()
); );
$itemId = $lp->add_item(
return $lp->add_item(
0,
0, 0,
$incomingData['previous'],
'quiz', 'quiz',
0, 0,
$incomingData['title'], $incomingData['title'],
'' ''
); );
return $itemId;
} }
} }

@ -17,22 +17,6 @@ class CourseModulesUrlLoader implements LoaderInterface
*/ */
public function load(array $incomingData) public function load(array $incomingData)
{ {
$courseId = api_get_course_int_id($incomingData['c_code']);
$link = new \Link();
$linkId = $link->save(
[
'c_id' => $courseId,
'url' => $incomingData['url'],
'title' => $incomingData['title'],
'description' => null,
'category_id' => null,
'on_homepage' => '0',
'target' => '_self',
'session_id' => 0,
]
);
$lp = new \learnpath( $lp = new \learnpath(
$incomingData['c_code'], $incomingData['c_code'],
$incomingData['lp_id'], $incomingData['lp_id'],
@ -41,9 +25,9 @@ class CourseModulesUrlLoader implements LoaderInterface
return $lp->add_item( return $lp->add_item(
0, 0,
$incomingData['previous'], 0,
'link', 'link',
$linkId, 0,
$incomingData['title'], $incomingData['title'],
'' ''
); );

@ -35,10 +35,7 @@ class CourseSectionsLoader implements LoaderInterface
$incomingData['description'] = trim($incomingData['description']); $incomingData['description'] = trim($incomingData['description']);
if (empty($incomingData['description'])) { if (!empty($incomingData['description'])) {
return $lpId;
}
$lp = new \learnpath( $lp = new \learnpath(
$incomingData['course_code'], $incomingData['course_code'],
$lpId, $lpId,
@ -48,13 +45,9 @@ class CourseSectionsLoader implements LoaderInterface
$itemTitle = get_lang('Description'); $itemTitle = get_lang('Description');
$itemId = $lp->add_item(0, 0, 'document', 0, $itemTitle, '');
$documentId = $lp->create_document($courseInfo, $incomingData['description'], $itemTitle); $documentId = $lp->create_document($courseInfo, $incomingData['description'], $itemTitle);
$lp->add_item(0, 0, 'document', $documentId, $itemTitle, '');
\Database::getManager() }
->createQuery('UPDATE ChamiloCourseBundle:CLpItem i SET i.path = :path WHERE i.iid = :id')
->setParameters(['path' => $documentId, 'id' => $itemId])
->execute();
return $lpId; return $lpId;
} }

@ -0,0 +1,27 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Loader;
use Chamilo\PluginBundle\MigrationMoodle\Interfaces\LoaderInterface;
/**
* Class SortSectionModuleLoader.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Loader
*/
class SortSectionModuleLoader implements LoaderInterface
{
/**
* @inheritDoc
*/
public function load(array $incomingData)
{
\learnpath::sortItemByOrderList(
$incomingData['order_list'],
$incomingData['c_id']
);
return $incomingData['lp_id'];
}
}

@ -0,0 +1,43 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Loader;
use Chamilo\PluginBundle\MigrationMoodle\Interfaces\LoaderInterface;
/**
* Class UrlLoader.
*
* The Link created is added in a learning path (from a Moodle course section).
*
* @package Chamilo\PluginBundle\MigrationMoodle\Loader
*/
class UrlLoader implements LoaderInterface
{
/**
* @inheritDoc
*/
public function load(array $incomingData)
{
$params = [
'c_id' => $incomingData['c_id'],
'url' => $incomingData['url'],
'title' => $incomingData['title'],
'description' => null,
'category_id' => null,
'on_homepage' => '0',
'target' => '_self',
'session_id' => 0,
];
$link = new \Link();
$linkId = $link->save($params);
\Database::getManager()
->createQuery('UPDATE ChamiloCourseBundle:CLpItem i SET i.path = :path WHERE i.iid = :id')
->setParameters(['path' => $linkId, 'id' => $incomingData['item_id']])
->execute();
return $linkId;
}
}

@ -7,7 +7,6 @@ use Chamilo\PluginBundle\MigrationMoodle\Extractor\CourseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\CourseModulesLessonLoader; use Chamilo\PluginBundle\MigrationMoodle\Loader\CourseModulesLessonLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer; use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseCodeLookup; use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseCodeLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpDirLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup; use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
/** /**
@ -19,7 +18,6 @@ use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
*/ */
class CourseModulesLessonTask extends BaseTask class CourseModulesLessonTask extends BaseTask
{ {
/** /**
* @return array * @return array
*/ */
@ -27,12 +25,13 @@ class CourseModulesLessonTask extends BaseTask
{ {
return [ return [
'class' => CourseExtractor::class, 'class' => CourseExtractor::class,
'query' => "SELECT cm.id, l.course, l.name, cs.sequence, cm.section FROM mdl_lesson l 'query' => "SELECT cm.id, l.course, l.name, cm.section
FROM mdl_lesson l
INNER JOIN mdl_course_modules cm ON (l.course = cm.course AND cm.instance = l.id) INNER JOIN mdl_course_modules cm ON (l.course = cm.course AND cm.instance = l.id)
INNER JOIN mdl_modules m ON cm.module = m.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 ) INNER JOIN mdl_course_sections cs ON (cm.course = cs.course AND cm.section = cs.id )
WHERE m.name = 'lesson' WHERE m.name = 'lesson'
ORDER BY FIND_IN_SET(cm.id, cs.sequence)", ORDER BY cs.id, FIND_IN_SET(cm.id, cs.sequence)",
]; ];
} }
@ -52,10 +51,6 @@ class CourseModulesLessonTask extends BaseTask
'class' => LoadedLpLookup::class, 'class' => LoadedLpLookup::class,
'properties' => ['section'], 'properties' => ['section'],
], ],
'previous' => [
'class' => LoadedLpDirLookup::class,
'properties' => ['id', 'sequence']
],
'title' => 'name', 'title' => 'name',
], ],
]; ];

@ -7,7 +7,6 @@ use Chamilo\PluginBundle\MigrationMoodle\Extractor\CourseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\CourseModulesQuizLoader; use Chamilo\PluginBundle\MigrationMoodle\Loader\CourseModulesQuizLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer; use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseCodeLookup; use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseCodeLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpItemInSequenceLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup; use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
/** /**
@ -26,7 +25,7 @@ class CourseModulesQuizTask extends BaseTask
{ {
return [ return [
'class' => CourseExtractor::class, 'class' => CourseExtractor::class,
'query' => "SELECT cm.id, q.course, q.name, cm.section, cs.sequence 'query' => "SELECT cm.id, q.course, q.name, cm.section
FROM mdl_quiz q FROM mdl_quiz q
INNER JOIN mdl_course_modules cm ON (q.course = cm.course AND cm.instance = q.id) 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_modules m ON cm.module = m.id
@ -52,10 +51,6 @@ class CourseModulesQuizTask extends BaseTask
'class' => LoadedLpLookup::class, 'class' => LoadedLpLookup::class,
'properties' => ['section'] 'properties' => ['section']
], ],
'previous' => [
'class' => LoadedLpItemInSequenceLookup::class,
'properties' => ['id', 'sequence'],
],
'title' => 'name', 'title' => 'name',
], ],
]; ];

@ -7,7 +7,6 @@ use Chamilo\PluginBundle\MigrationMoodle\Extractor\CourseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\CourseModulesUrlLoader; use Chamilo\PluginBundle\MigrationMoodle\Loader\CourseModulesUrlLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer; use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseCodeLookup; use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseCodeLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpItemInSequenceLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup; use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
/** /**
@ -15,8 +14,6 @@ use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
* *
* Task to create a Chamilo Link from a Moodle URL module. * Task to create a Chamilo Link from a Moodle URL module.
* *
* The Link created is added in a learning path (from a Moodle course section).
*
* @package Chamilo\PluginBundle\MigrationMoodle\Task * @package Chamilo\PluginBundle\MigrationMoodle\Task
*/ */
class CourseModulesUrlTask extends BaseTask class CourseModulesUrlTask extends BaseTask
@ -28,7 +25,7 @@ class CourseModulesUrlTask extends BaseTask
{ {
return [ return [
'class' => CourseExtractor::class, 'class' => CourseExtractor::class,
'query' => "SELECT cm.id, u.course, u.name, u.externalurl, cm.section, cs.sequence 'query' => "SELECT cm.id, u.course, u.name, cm.section
FROM mdl_url u FROM mdl_url u
INNER JOIN mdl_course_modules cm ON (u.course = cm.course AND cm.instance = u.id) INNER JOIN mdl_course_modules cm ON (u.course = cm.course AND cm.instance = u.id)
INNER JOIN mdl_modules m ON cm.module = m.id INNER JOIN mdl_modules m ON cm.module = m.id
@ -61,12 +58,7 @@ class CourseModulesUrlTask extends BaseTask
'class' => LoadedLpLookup::class, 'class' => LoadedLpLookup::class,
'properties' => ['section'], 'properties' => ['section'],
], ],
'previous' => [
'class' => LoadedLpItemInSequenceLookup::class,
'properties' => ['id', 'sequence'],
],
'title' => 'name', 'title' => 'name',
'url' => 'externalurl',
], ],
]; ];
} }

@ -0,0 +1,78 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Task;
use Chamilo\PluginBundle\MigrationMoodle\Extractor\CourseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\SortSectionModuleLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\SectionSequenceLookup;
/**
* Class SortSectionModulesTask.
*
* Task to fix the display order for learning path items.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Task
*/
class SortSectionModulesTask extends BaseTask
{
/**
* @inheritDoc
*/
public function getExtractConfiguration()
{
return [
'class' => CourseExtractor::class,
'query' => "SELECT cm.id, cs.course, cm.section, cs.sequence
FROM mdl_course_modules cm
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 cs.course NOT IN (
SELECT sco.course
FROM mdl_scorm sco
INNER JOIN mdl_course_modules cm ON (sco.course = cm.course AND cm.instance = sco.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 = 'scorm'
)
ORDER BY cs.course, cs.section, FIND_IN_SET(cm.id, cs.sequence)",
];
}
/**
* @inheritDoc
*/
public function getTransformConfiguration()
{
return [
'class' => BaseTransformer::class,
'map' => [
'c_id' => [
'class' => LoadedCourseLookup::class,
'properties' => ['course'],
],
'lp_id' => [
'class' => LoadedLpLookup::class,
'properties' => ['section'],
],
'order_list' => [
'class' => SectionSequenceLookup::class,
'properties' => ['sequence'],
],
],
];
}
/**
* @inheritDoc
*/
public function getLoadConfiguration()
{
return [
'class' => SortSectionModuleLoader::class,
];
}
}

@ -0,0 +1,79 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Task;
use Chamilo\PluginBundle\MigrationMoodle\Extractor\CourseExtractor;
use Chamilo\PluginBundle\MigrationMoodle\Loader\UrlLoader;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\BaseTransformer;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedCourseModulesUrlLookup;
use Chamilo\PluginBundle\MigrationMoodle\Transformer\Property\LoadedLpLookup;
/**
* Class UrlsTask.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Task
*/
class UrlsTask extends BaseTask
{
/**
* @inheritDoc
*/
public function getExtractConfiguration()
{
return [
'class' => CourseExtractor::class,
'query' => "SELECT u.id, u.course, u.name, u.externalurl, cm.section, cm.id cm_id
FROM mdl_url u
INNER JOIN mdl_course_modules cm ON (u.course = cm.course AND cm.instance = u.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 = 'url'
AND u.course NOT IN (
SELECT sco.course
FROM mdl_scorm sco
INNER JOIN mdl_course_modules cm ON (sco.course = cm.course AND cm.instance = sco.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 = 'scorm'
)",
];
}
/**
* @inheritDoc
*/
public function getTransformConfiguration()
{
return [
'class' => BaseTransformer::class,
'map' => [
'c_id' => [
'class' => LoadedCourseLookup::class,
'properties' => ['course'],
],
'lp_id' => [
'class' => LoadedLpLookup::class,
'properties' => ['section'],
],
'item_id' => [
'class' => LoadedCourseModulesUrlLookup::class,
'properties' => ['cm_id'],
],
'title' => 'name',
'url' => 'externalurl',
],
];
}
/**
* @inheritDoc
*/
public function getLoadConfiguration()
{
return [
'class' => UrlLoader::class,
];
}
}

@ -0,0 +1,22 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Transformer\Property;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesUrlTask;
/**
* Class LoadedCourseModulesUrlLookup.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Transformer\Property
*/
class LoadedCourseModulesUrlLookup extends LoadedKeyLookup
{
/**
* LoadedCourseModulesUrlLookup constructor.
*/
public function __construct()
{
$this->calledClass = CourseModulesUrlTask::class;
}
}

@ -20,7 +20,7 @@ abstract class LoadedKeyLookup implements TransformPropertyInterface
* *
* @throws \Exception * @throws \Exception
* *
* @return int * @return mixed
*/ */
public function transform(array $data) public function transform(array $data)
{ {

@ -1,44 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Transformer\Property;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesLessonTask;
/**
* Class LoadedLpDirLookup.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Transformer\Property
*/
class LoadedLpDirLookup extends LoadedLpLookup
{
/**
* LoadedLpDirLookup constructor.
*/
public function __construct()
{
$this->calledClass = CourseModulesLessonTask::class;
}
/**
* @param array $data
*
* @return mixed
* @throws \Exception
*/
public function transform(array $data)
{
list($cmId, $sequenceStr) = array_values($data);
$sequence = explode(',', $sequenceStr);
$index = array_search($cmId, $sequence);
if (empty($index)) {
return 0;
}
$previous = $sequence[$index - 1];
return parent::transform([$previous]);
}
}

@ -1,67 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Transformer\Property;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesLessonTask;
use Doctrine\DBAL\DBALException;
use Exception;
use MigrationMoodlePlugin;
/**
* Class LoadedLpItemInSequenceLookup.
*
* Transform a Moodle course module in a Chamilo learning path item or section.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Transformer\Property
*/
class LoadedLpItemInSequenceLookup extends LoadedKeyLookup
{
/**
* @param array $data
*
* @throws Exception
*
* @return int
*/
public function transform(array $data)
{
$sequence = explode(',', $data['sequence']);
$index = array_search($data['id'], $sequence);
if (false === $index || !isset($sequence[$index - 1])) {
return 0;
}
$mPreviousId = $sequence[$index - 1];
try {
$connection = MigrationMoodlePlugin::create()->getConnection();
} catch (DBALException $e) {
throw new Exception('Unable to start connection.', 0, $e);
}
try {
$query = "SELECT m.name
FROM mdl_course_modules cm
INNER JOIN mdl_modules m ON cm.module = m.id
WHERE cm.id = ?";
$result = $connection->fetchAssoc($query, [$mPreviousId]);
} catch (DBALException $e) {
throw new Exception("Unable to execute query \"{$this->query}\".", 0, $e);
}
$connection->close();
switch ($result['name']) {
case 'lesson':
$this->calledClass = CourseModulesLessonTask::class;
return parent::transform([$mPreviousId]);
}
return 0;
}
}

@ -0,0 +1,73 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\MigrationMoodle\Transformer\Property;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesLessonTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesQuizTask;
use Doctrine\DBAL\DBALException;
/**
* Class LoadedLpItemInSequenceLookup.
*
* Transform a Moodle's course section sequence in a sort list for learning path item.
*
* @package Chamilo\PluginBundle\MigrationMoodle\Transformer\Property
*/
class SectionSequenceLookup extends LoadedKeyLookup
{
/**
* @param array $data
*
* @throws \Exception
*
* @return array
*/
public function transform(array $data)
{
try {
$connection = \MigrationMoodlePlugin::create()->getConnection();
} catch (DBALException $exception) {
throw new \Exception('Unable to start connection.', 0, $exception);
}
$mSequence = explode(',', $data['sequence']);
$lpOrderList = [];
foreach ($mSequence as $mModuleId) {
try {
$query = "SELECT m.name
FROM mdl_course_modules cm
INNER JOIN mdl_modules m ON cm.module = m.id
WHERE cm.id = ?";
$result = $connection->fetchAssoc($query, [$mModuleId]);
} catch (DBALException $exception) {
throw new \Exception("Unable to execute query \"{$this->query}\".", 0, $exception);
}
if (empty($result)) {
continue;
}
switch ($result['name']) {
case 'lesson':
$this->calledClass = CourseModulesLessonTask::class;
break;
case 'quiz':
$this->calledClass = CourseModulesQuizTask::class;
break;
default:
continue;
}
$lpItemId = parent::transform([$mModuleId]);
$lpOrderList[$lpItemId] = 0;
}
$connection->close();
return $lpOrderList;
}
}
Loading…
Cancel
Save