Browse Source

Fix exercise category import see BT#10891

jmontoyaa 7 years ago
parent
commit
4a2ca73213
1 changed files with 21 additions and 13 deletions
  1. 21 13
      main/exercise/export/exercise_import.inc.php

+ 21 - 13
main/exercise/export/exercise_import.inc.php

@@ -99,6 +99,8 @@ function import_exercise($file)
         return 'UplZipCorrupt';
     }
 
+    $baseWorkDir = $baseWorkDir.$uploadPath;
+
     // find the different manifests for each question and parse them.
     $exerciseHandle = opendir($baseWorkDir);
     $file_found = false;
@@ -174,6 +176,7 @@ function import_exercise($file)
 
     $exercise->save();
     $last_exercise_id = $exercise->selectId();
+    $courseId = api_get_course_int_id();
     if (!empty($last_exercise_id)) {
         // For each question found...
         foreach ($exercise_info['question'] as $question_array) {
@@ -195,18 +198,23 @@ function import_exercise($file)
 
             if (isset($question_array['category'])) {
                 $category = formatText(strip_tags($question_array['category']));
-                $categoryId = TestCategory::get_category_id_for_title(
-                    $category,
-                    api_get_course_int_id()
-                );
-
-                if (!empty($categoryId)) {
-                    $question->category = $categoryId;
-                } else {
-                    $cat = new TestCategory();
-                    $cat->name = $category;
-                    $cat->description = '';
-                    $question->category = $cat->save();
+                if (!empty($category)) {
+                    $categoryId = TestCategory::get_category_id_for_title(
+                        $category,
+                        $courseId
+                    );
+
+                    if (empty($categoryId)) {
+                        $cat = new TestCategory();
+                        $cat->name = $category;
+                        $cat->description = '';
+                        $categoryId = $cat->save($courseId);
+                        if ($categoryId) {
+                            $question->category = $categoryId;
+                        }
+                    } else {
+                        $question->category = $categoryId;
+                    }
                 }
             }
 
@@ -214,8 +222,8 @@ function import_exercise($file)
                 $description .= $question_array['description'];
             }
             $question->updateDescription($description);
-
             $question->save($last_exercise_id);
+
             $last_question_id = $question->selectId();
             //3. Create answer
             $answer = new Answer($last_question_id);