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;
}
}
|