Browse Source

Fix export/import orphan questions in backup see BT#14425

- In partial backup don't save orphan questions, unless it was selected
- In complete backup include orphan questions
-
Julio 6 years ago
parent
commit
059d96f068

+ 3 - 1
main/coursecopy/create_backup.php

@@ -48,11 +48,13 @@ if (Security::check_token('post') &&
 ) {
     // Clear token
     Security::clear_token();
-    $cb = new CourseBuilder();
+
     if ($action === 'course_select_form') {
+        $cb = new CourseBuilder('partial');
         $course = $cb->build(0, null, false, array_keys($_POST['resource']), $_POST['resource']);
         $course = CourseSelectForm::get_posted_course(null, 0, '', $course);
     } else {
+        $cb = new CourseBuilder('complete');
         $course = $cb->build();
     }
     $zipFile = CourseArchiver::createBackup($course);

+ 8 - 2
src/Chamilo/CourseBundle/Component/CourseCopy/CourseBuilder.php

@@ -180,10 +180,16 @@ class CourseBuilder
             $function_build = 'build_'.$tool;
             $specificIdList = isset($this->specific_id_list[$tool]) ? $this->specific_id_list[$tool] : null;
             $buildOrphanQuestions = true;
-            if ($tool == 'quizzes') {
-                if (!isset($toolsFromPost['quiz'][-1])) {
+            if ($tool === 'quizzes') {
+                if (!isset($toolsFromPost[RESOURCE_QUIZ][-1])) {
                     $buildOrphanQuestions = false;
                 }
+
+                // Force orphan load
+                if ($this->course->type === 'complete') {
+                    $buildOrphanQuestions = true;
+                }
+
                 $this->build_quizzes(
                     $session_id,
                     $courseId,