Browse Source

Fix mysql error when deleting a course when a document is added in a group

See BT#11523
jmontoyaa 8 years ago
parent
commit
6be043f2b2

+ 1 - 2
main/inc/lib/add_course.lib.inc.php

@@ -195,14 +195,13 @@ class AddCourse
     public static function get_course_tables()
     {
         $tables = array();
-
+        $tables[] = 'item_property';
         $tables[] = 'tool';
         $tables[] = 'tool_intro';
         $tables[] = 'group_info';
         $tables[] = 'group_category';
         $tables[] = 'group_rel_user';
         $tables[] = 'group_rel_tutor';
-        $tables[] = 'item_property';
         $tables[] = 'userinfo_content';
         $tables[] = 'userinfo_def';
         $tables[] = 'course_description';

+ 2 - 2
main/inc/lib/course.lib.php

@@ -2143,10 +2143,10 @@ class CourseManager
             }
 
             // Cleaning groups
-            $groups = GroupManager::get_groups();
+            $groups = GroupManager::get_groups($courseId);
             if (!empty($groups)) {
                 $groupList = array_column($groups, 'id');
-                GroupManager::delete_groups($groupList);
+                GroupManager::delete_groups($groupList, $course['code']);
             }
 
             // Cleaning c_x tables

+ 4 - 4
main/inc/lib/groupmanager.lib.php

@@ -61,12 +61,12 @@ class GroupManager
     /**
      * @return array
      */
-    public static function get_groups()
+    public static function get_groups($courseId = null)
     {
         $table_group = Database :: get_course_table(TABLE_GROUP);
-        $course_id = api_get_course_int_id();
+        $courseId = !empty($courseId) ? (int) $courseId : api_get_course_int_id();
 
-        $sql = "SELECT * FROM $table_group WHERE c_id = $course_id ";
+        $sql = "SELECT * FROM $table_group WHERE c_id = $courseId  ";
         $result = Database::query($sql);
         return Database::store_result($result, 'ASSOC');
     }
@@ -773,7 +773,7 @@ class GroupManager
             while ($group = Database::fetch_object($res)) {
                 $groups_to_delete[] = $group->id;
             }
-            self :: delete_groups($groups_to_delete);
+            self::delete_groups($groups_to_delete, $course_code);
         }
         $sql = "DELETE FROM $table_group_cat
                 WHERE c_id = $course_id  AND id='".$cat_id."'";