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. 12
      main/inc/lib/course.lib.php
  3. 45
      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="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->addOption('-', '');

@ -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);

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

Loading…
Cancel
Save