Browse Source

Fix #1736 query fatal error

jmontoyaa 8 years ago
parent
commit
af42cba60d
3 changed files with 51 additions and 19 deletions
  1. 8 2
      main/inc/lib/course.lib.php
  2. 7 0
      main/inc/lib/sessionmanager.lib.php
  3. 36 17
      main/inc/lib/usergroup.lib.php

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

@@ -2327,8 +2327,14 @@ class CourseManager
             Database::query($sql);
 
             // Update ticket
-            $ticket = Database::get_main_table(TABLE_TICKET_TICKET);
-            $sql = "UPDATE $ticket SET course_id = NULL WHERE course_id = $courseId";
+            $table = Database::get_main_table(TABLE_TICKET_TICKET);
+            $sql = "UPDATE $table SET course_id = NULL WHERE course_id = $courseId";
+            Database::query($sql);
+
+            // Class
+            $table = Database::get_main_table(TABLE_USERGROUP_REL_COURSE);
+            $sql = "DELETE FROM $table
+                    WHERE course_id = $courseId";
             Database::query($sql);
 
             // Skills

+ 7 - 0
main/inc/lib/sessionmanager.lib.php

@@ -1549,6 +1549,8 @@ class SessionManager
         $tbl_item_properties = Database::get_course_table(TABLE_ITEM_PROPERTY);
         $tbl_student_publication = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
         $tbl_student_publication_assignment = Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT);
+        $userGroupSessionTable = Database::get_main_table(TABLE_USERGROUP_REL_SESSION);
+
         $ticket = Database::get_main_table(TABLE_TICKET_TICKET);
         $em = Database::getManager();
 
@@ -1613,6 +1615,11 @@ class SessionManager
             }
         }
 
+        // Class
+        $sql = "DELETE FROM $userGroupSessionTable
+                WHERE session_id IN($id_checked)";
+        Database::query($sql);
+
         Database::query("DELETE FROM $tbl_student_publication WHERE session_id IN($id_checked)");
         Database::query("DELETE FROM $tbl_session_rel_course WHERE session_id IN($id_checked)");
         Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE session_id IN($id_checked)");

+ 36 - 17
main/inc/lib/usergroup.lib.php

@@ -37,14 +37,12 @@ class UserGroup extends Model
     public function __construct()
     {
         $this->table = Database::get_main_table(TABLE_USERGROUP);
-
         $this->usergroup_rel_user_table = Database::get_main_table(TABLE_USERGROUP_REL_USER);
         $this->usergroup_rel_course_table = Database::get_main_table(TABLE_USERGROUP_REL_COURSE);
         $this->usergroup_rel_session_table = Database::get_main_table(TABLE_USERGROUP_REL_SESSION);
         $this->access_url_rel_usergroup = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USERGROUP);
         $this->table_course = Database::get_main_table(TABLE_MAIN_COURSE);
         $this->table_user = Database::get_main_table(TABLE_MAIN_USER);
-
         $this->useMultipleUrl = api_get_configuration_value('multiple_access_urls');
     }
 
@@ -684,37 +682,58 @@ class UserGroup extends Model
         if (!empty($new_items)) {
             foreach ($new_items as $course_id) {
                 $course_info = api_get_course_info_by_id($course_id);
-                if (!empty($user_list)) {
-                    foreach ($user_list as $user_id) {
-                        CourseManager::subscribe_user($user_id, $course_info['code']);
+                if ($course_info) {
+                    if (!empty($user_list)) {
+                        foreach ($user_list as $user_id) {
+                            CourseManager::subscribe_user(
+                                $user_id,
+                                $course_info['code']
+                            );
+                        }
                     }
+                    $params = array(
+                        'course_id' => $course_id,
+                        'usergroup_id' => $usergroup_id,
+                    );
+                    Database::insert(
+                        $this->usergroup_rel_course_table,
+                        $params
+                    );
                 }
-                $params = array('course_id' => $course_id, 'usergroup_id' => $usergroup_id);
-                Database::insert($this->usergroup_rel_course_table, $params);
             }
         }
     }
 
     /**
      * @param int $usergroup_id
-     * @param bool $delete_items
+     * @param array $delete_items
      */
     public function unsubscribe_courses_from_usergroup($usergroup_id, $delete_items)
     {
         // Deleting items.
         if (!empty($delete_items)) {
             $user_list = self::get_users_by_usergroup($usergroup_id);
-            foreach ($delete_items as $course_id) {
-                $course_info = api_get_course_info_by_id($course_id);
-                if (!empty($user_list)) {
-                    foreach ($user_list as $user_id) {
-                        CourseManager::unsubscribe_user($user_id, $course_info['code']);
+            if (!empty($user_list)) {
+                foreach ($delete_items as $course_id) {
+                    $course_info = api_get_course_info_by_id($course_id);
+                    if ($course_info) {
+                        foreach ($user_list as $user_id) {
+                            CourseManager::unsubscribe_user(
+                                $user_id,
+                                $course_info['code']
+                            );
+                        }
+                        Database::delete(
+                            $this->usergroup_rel_course_table,
+                            array(
+                                'usergroup_id = ? AND course_id = ?' => array(
+                                    $usergroup_id,
+                                    $course_id
+                                )
+                            )
+                        );
                     }
                 }
-                Database::delete(
-                    $this->usergroup_rel_course_table,
-                    array('usergroup_id = ? AND course_id = ?' => array($usergroup_id, $course_id))
-                );
             }
         }
     }