Browse Source

Fixing removed userCourseCategory see BT#8732

Julio Montoya 10 years ago
parent
commit
6f0062ffd2
1 changed files with 21 additions and 8 deletions
  1. 21 8
      main/inc/lib/sessionmanager.lib.php

+ 21 - 8
main/inc/lib/sessionmanager.lib.php

@@ -3778,13 +3778,6 @@ class SessionManager
                             $teacherToAdd = null;
                             // Only one coach is added.
                             if ($onlyAddFirstCoachOrTeacher == true) {
-                                // Un subscribe everyone.
-                                $teacherList = CourseManager::get_teacher_list_from_course_code($course_code);
-                                if (!empty($teacherList)) {
-                                    foreach ($teacherList as $teacher) {
-                                        CourseManager::unsubscribe_user($teacher['user_id'], $course_code);
-                                    }
-                                }
 
                                 foreach ($course_coaches as $course_coach) {
                                     $coach_id = UserManager::get_user_id_from_username($course_coach);
@@ -3794,6 +3787,19 @@ class SessionManager
                                     }
                                 }
 
+                                // Un subscribe everyone that's not in the list.
+                                $teacherList = CourseManager::get_teacher_list_from_course_code($course_code);
+                                if (!empty($teacherList)) {
+                                    foreach ($teacherList as $teacher) {
+                                        if ($teacherToAdd != $teacher['user_id']) {
+                                            CourseManager::unsubscribe_user(
+                                                $teacher['user_id'],
+                                                $course_code
+                                            );
+                                        }
+                                    }
+                                }
+
                                 if (!empty($teacherToAdd)) {
                                     SessionManager::updateCoaches($session_id, $course_code, array($teacherToAdd), true);
                                     CourseManager::subscribe_user(
@@ -3820,11 +3826,18 @@ class SessionManager
                                 if (!empty($teacherToAdd)) {
                                     // Deleting all course teachers and adding the only coach as teacher.
                                     $teacherList = CourseManager::get_teacher_list_from_course_code($course_code);
+
                                     if (!empty($teacherList)) {
                                         foreach ($teacherList as $teacher) {
-                                            CourseManager::unsubscribe_user($teacher['user_id'], $course_code);
+                                            if (!in_array($teacher['user_id'], $teacherToAdd)) {
+                                                CourseManager::unsubscribe_user(
+                                                    $teacher['user_id'],
+                                                    $course_code
+                                                );
+                                            }
                                         }
                                     }
+
                                     foreach ($teacherToAdd as $teacherId) {
                                         CourseManager::subscribe_user(
                                             $teacherId,