Fixing coaches assignation when updating the course session using the course_edit.php or a import via a CSV file see BT#6665

1.9.x
Julio Montoya 12 years ago
parent 9f5e804676
commit dde291e3ab
  1. 2
      main/admin/course_edit.php
  2. 10
      main/inc/lib/course.lib.php
  3. 41
      main/inc/lib/sessionmanager.lib.php

@ -126,7 +126,7 @@ $form->addGroup($group,'group',get_lang('CourseTeachers'),'</td><td width="80" a
'<input class="arrowr" style="width:30px;height:30px;padding-right:12px" type="button" onclick="moveItem(document.getElementById(\'platform_teachers\'), document.getElementById(\'course_teachers\'))" ><br><br>' . '<input class="arrowr" style="width:30px;height:30px;padding-right:12px" type="button" onclick="moveItem(document.getElementById(\'platform_teachers\'), document.getElementById(\'course_teachers\'))" ><br><br>' .
'<input class="arrowl" style="width:30px;height:30px;padding-left:13px" type="button" onclick="moveItem(document.getElementById(\'course_teachers\'), document.getElementById(\'platform_teachers\'))" ></td><td>'); '<input class="arrowl" style="width:30px;height:30px;padding-left:13px" type="button" onclick="moveItem(document.getElementById(\'course_teachers\'), document.getElementById(\'platform_teachers\'))" ></td><td>');
$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 = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories , array('style'=>'width:350px','id'=>'category_code_id', 'class'=>'chzn-select'));
$categories_select->addOption('-', ''); $categories_select->addOption('-', '');

@ -3988,6 +3988,8 @@ class CourseManager {
$teachers = array($teachers); $teachers = array($teachers);
} }
$alreadyAddedTeachers = CourseManager::get_teacher_list_from_course_code($course_code);
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER); $course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
// Delete only teacher relations that doesn't match the selected teachers // Delete only teacher relations that doesn't match the selected teachers
@ -4003,7 +4005,6 @@ class CourseManager {
if (count($teachers) > 0) { if (count($teachers) > 0) {
foreach ($teachers as $key) { 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.'" '; $sql_select_teacher = 'SELECT 1 FROM '.$course_user_table.' WHERE user_id = "'.$key.'" AND course_code = "'.$course_code.'" ';
$result = Database::query($sql_select_teacher); $result = Database::query($sql_select_teacher);
@ -4024,17 +4025,18 @@ class CourseManager {
} }
} }
if ($editTeacherInSessions) { if ($editTeacherInSessions) {
$sessions = SessionManager::get_session_by_course($course_code); $sessions = SessionManager::get_session_by_course($course_code);
if (!empty($sessions)) { if (!empty($sessions)) {
foreach ($sessions as $session) { foreach ($sessions as $session) {
$alreadyAddedTeachers = SessionManager::getCoachByCourseSession($session['id'], $course_code);
foreach ($teachers as $userId) { foreach ($teachers as $userId) {
SessionManager::set_coach_to_course_session($userId, $session['id'], $course_code); 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)) { if (!empty($teachersToDelete)) {
foreach ($teachersToDelete as $userId) { foreach ($teachersToDelete as $userId) {
SessionManager::set_coach_to_course_session($userId, $session['id'], $course_code, true); SessionManager::set_coach_to_course_session($userId, $session['id'], $course_code, true);

@ -1602,10 +1602,11 @@ class SessionManager
/** /**
* Get users by session * Get users by session
* @param int session id * @param int session id
* @param int filter by status * @param int filter by status coach = 2
* @return array a list with an user list * @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)) { if (empty($id)) {
return array(); return array();
} }
@ -2232,6 +2233,19 @@ class SessionManager
// Adding coaches to session course user // Adding coaches to session course user
if (!empty($course_coaches)) { 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) { foreach ($course_coaches as $course_coach) {
$course_coach = trim($course_coach); $course_coach = trim($course_coach);
$coach_id = UserManager::get_user_id_from_username($course_coach); $coach_id = UserManager::get_user_id_from_username($course_coach);
@ -2245,10 +2259,14 @@ class SessionManager
if ($debug) { if ($debug) {
$logger->addInfo("Sessions - Adding course coach: user #$coach_id ($course_coach) to course: '$course_code' and session #$session_id"); $logger->addInfo("Sessions - Adding course coach: user #$coach_id ($course_coach) to course: '$course_code' and session #$session_id");
} }
$savedCoaches[] = $coach_id;
} else { } else {
$error_message .= get_lang('UserDoesNotExist').' : '.$course_coach.$eol; $error_message .= get_lang('UserDoesNotExist').' : '.$course_coach.$eol;
} }
} }
} }
$users_in_course_counter = 0; $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); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sessionId = intval($sessionId); $sessionId = intval($sessionId);
$courseCode = Database::escape_string($courseCode); $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"; $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(); $coaches = array();
if (Database::num_rows($rs_coachs) > 0){ if (Database::num_rows($result) > 0){
while ($row_coachs = Database::fetch_row($rs_coachs)) { while ($row = Database::fetch_row($result)) {
$coachs_course_session[] = $row_coachs[0]; $coaches[] = $row[0];
} }
} }
return $coachs_course_session; return $coaches;
} }
} }

Loading…
Cancel
Save