diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php index b96efcada7..26f1c42906 100644 --- a/main/admin/course_edit.php +++ b/main/admin/course_edit.php @@ -126,7 +126,7 @@ $form->addGroup($group,'group',get_lang('CourseTeachers'),'

' . ''); -$form->addElement('checkbox', 'add_teachers_to_sessions', array(null, null, get_lang('TeachersWillBeAddedAsCoachInAllCourseSessions'))); +$form->addElement('checkbox', 'add_teachers_to_sessions', null, get_lang('TeachersWillBeAddedAsCoachInAllCourseSessions')); $categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories , array('style'=>'width:350px','id'=>'category_code_id', 'class'=>'chzn-select')); $categories_select->addOption('-', ''); diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 8ce47da246..fcb467ffb8 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -3988,6 +3988,8 @@ class CourseManager { $teachers = array($teachers); } + $alreadyAddedTeachers = CourseManager::get_teacher_list_from_course_code($course_code); + $course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER); // Delete only teacher relations that doesn't match the selected teachers @@ -4003,8 +4005,7 @@ class CourseManager { if (count($teachers) > 0) { foreach ($teachers as $key) { - - //We check if the teacher is already subscribed in this course + // We check if the teacher is already subscribed in this course $sql_select_teacher = 'SELECT 1 FROM '.$course_user_table.' WHERE user_id = "'.$key.'" AND course_code = "'.$course_code.'" '; $result = Database::query($sql_select_teacher); @@ -4024,17 +4025,18 @@ class CourseManager { } } - if ($editTeacherInSessions) { $sessions = SessionManager::get_session_by_course($course_code); if (!empty($sessions)) { foreach ($sessions as $session) { - $alreadyAddedTeachers = SessionManager::getCoachByCourseSession($session['id'], $course_code); foreach ($teachers as $userId) { SessionManager::set_coach_to_course_session($userId, $session['id'], $course_code); } + $teachersToDelete = array(); + if (!empty($alreadyAddedTeachers)) { + $teachersToDelete = array_diff(array_keys($alreadyAddedTeachers), $teachers); + } - $teachersToDelete = array_diff($alreadyAddedTeachers, $teachers); if (!empty($teachersToDelete)) { foreach ($teachersToDelete as $userId) { SessionManager::set_coach_to_course_session($userId, $session['id'], $course_code, true); diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index 80d0ffaaa1..26ff600d2e 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -1602,10 +1602,11 @@ class SessionManager /** * Get users by session * @param int session id - * @param int filter by status + * @param int filter by status coach = 2 * @return array a list with an user list */ - public static function get_users_by_session($id, $with_status = null) { + public static function get_users_by_session($id, $with_status = null) + { if (empty($id)) { return array(); } @@ -2232,23 +2233,40 @@ class SessionManager // Adding coaches to session course user if (!empty($course_coaches)) { + + $savedCoaches = array(); + // Adding course teachers as course session teachers + $alreadyAddedTeachers = CourseManager::get_teacher_list_from_course_code($course_code); + + if (!empty($alreadyAddedTeachers)) { + $teachersToAdd = array(); + foreach ($alreadyAddedTeachers as $user) { + $teachersToAdd[] = $user['username']; + } + $course_coaches = array_merge($course_coaches, $teachersToAdd); + } + foreach ($course_coaches as $course_coach) { $course_coach = trim($course_coach); $coach_id = UserManager::get_user_id_from_username($course_coach); if ($coach_id !== false) { $sql = "INSERT IGNORE INTO $tbl_session_course_user SET - id_user='$coach_id', - course_code='$course_code', + id_user = '$coach_id', + course_code = '$course_code', id_session = '$session_id', status = 2 "; Database::query($sql); if ($debug) { $logger->addInfo("Sessions - Adding course coach: user #$coach_id ($course_coach) to course: '$course_code' and session #$session_id"); } + $savedCoaches[] = $coach_id; } else { $error_message .= get_lang('UserDoesNotExist').' : '.$course_coach.$eol; } } + + + } $users_in_course_counter = 0; @@ -2294,21 +2312,26 @@ class SessionManager ); } - public static function getCoachByCourseSession($sessionId, $courseCode) + /** + * @param int $sessionId + * @param string $courseCode + * @return array + */ + public static function getCoachesByCourseSession($sessionId, $courseCode) { $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $sessionId = intval($sessionId); $courseCode = Database::escape_string($courseCode); $sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session = '$sessionId' AND course_code = '$courseCode' AND status = 2"; - $rs_coachs = Database::query($sql); + $result = Database::query($sql); - $coachs_course_session = array(); - if (Database::num_rows($rs_coachs) > 0){ - while ($row_coachs = Database::fetch_row($rs_coachs)) { - $coachs_course_session[] = $row_coachs[0]; + $coaches = array(); + if (Database::num_rows($result) > 0){ + while ($row = Database::fetch_row($result)) { + $coaches[] = $row[0]; } } - return $coachs_course_session; + return $coaches; } }