diff --git a/plugin/migrationmoodle/src/Loader/CoursesLoader.php b/plugin/migrationmoodle/src/Loader/CoursesLoader.php index c2c4e1cfb8..4884968919 100644 --- a/plugin/migrationmoodle/src/Loader/CoursesLoader.php +++ b/plugin/migrationmoodle/src/Loader/CoursesLoader.php @@ -12,30 +12,37 @@ use Chamilo\PluginBundle\MigrationMoodle\Interfaces\LoaderInterface; */ class CoursesLoader implements LoaderInterface { + const LOAD_MODE_REUSE = 'reuse'; + const LOAD_MODE_DUPLICATE = 'duplicate'; + /** + * @var string Load mode: "reuse" or "duplicate". Default is "duplicate". + */ + private $loadMode = self::LOAD_MODE_DUPLICATE; + + /** + * @param array $incomingData + * * @return int */ public function load(array $incomingData) { + $courseInfo = api_get_course_info($incomingData['wanted_code']); + + if (!empty($courseInfo)) { + if ($this->loadMode === self::LOAD_MODE_REUSE) { + return $courseInfo['real_id']; + } + + if ($this->loadMode === self::LOAD_MODE_DUPLICATE) { + $incomingData['wanted_code'] = $incomingData['wanted_code'].substr(md5(uniqid(rand())), 0, 10); + } + } + $incomingData['subscribe'] = false; $incomingData['unsubscribe'] = false; $incomingData['disk_quota'] = 500 * 1024 * 1024; - $result = \Database::select( - 'COUNT(1) AS c', - \Database::get_main_table(TABLE_MAIN_COURSE), - [ - 'where' => [ - 'code = ?' => $incomingData['wanted_code'], - ], - ], - 'first' - ); - - if (!empty($result['c'])) { - $incomingData['wanted_code'] = $incomingData['wanted_code'].substr(md5(uniqid(rand())), 0, 10); - } - $accessUrlId = \MigrationMoodlePlugin::create()->getAccessUrlId(); $courseInfo = \CourseManager::create_course($incomingData, 1, $accessUrlId);