diff --git a/main/admin/session_course_user_list.php b/main/admin/session_course_user_list.php index 38be992edc..d50ea05f8e 100644 --- a/main/admin/session_course_user_list.php +++ b/main/admin/session_course_user_list.php @@ -28,18 +28,17 @@ if (empty($id_session )) { $course_code = Database::escape_string(trim($_GET['course_code'])); $page = intval($_GET['page']); $action = $_REQUEST['action']; -$default_sort = api_sort_by_first_name() ? 'firstname':'lastname'; +$default_sort = api_sort_by_first_name() ? 'firstname':'lastname'; $sort = in_array($_GET['sort'], array('lastname','firstname','username')) ? $_GET['sort'] : $default_sort; $idChecked = (is_array($_GET['idChecked']) ? $_GET['idChecked'] : (is_array($_POST['idChecked']) ? $_POST['idChecked'] : null)); - $direction = isset($_GET['direction']) && in_array($_GET['direction'], array('desc','asc')) ? $_GET['direction'] : 'desc'; if (is_array($idChecked)) { - $my_temp = array(); - foreach ($idChecked as $id){ - $my_temp[]= intval($id);// forcing the intval - } - $idChecked = $my_temp; + $my_temp = array(); + foreach ($idChecked as $id) { + $my_temp[]= intval($id);// forcing the intval + } + $idChecked = $my_temp; } $sql = "SELECT s.name, c.title FROM $tbl_session_rel_course src @@ -48,16 +47,14 @@ $sql = "SELECT s.name, c.title FROM $tbl_session_rel_course src WHERE src.id_session='$id_session' AND src.course_code='".Database::escape_string($course_code)."' "; $result = Database::query($sql); - -if (!list($session_name,$course_title)=Database::fetch_row($result)) { +if (!list($session_name,$course_title) = Database::fetch_row($result)) { header('Location: session_course_list.php?id_session='.$id_session); exit(); } - switch($action) { case 'delete': - if (is_array($idChecked) && count($idChecked)>0 ) { + if (is_array($idChecked) && count($idChecked)>0) { array_map('intval', $idChecked); $idChecked = implode(',',$idChecked); } @@ -82,10 +79,24 @@ $from = $page * $limit; $is_western_name_order = api_is_western_name_order(); //scru.status<>2 scru.course_code='".$course_code."' -$sql = "SELECT DISTINCT u.user_id,".($is_western_name_order ? 'u.firstname, u.lastname' : 'u.lastname, u.firstname').", u.username, scru.id_user as is_subscribed - FROM $tbl_session_rel_user s INNER JOIN $tbl_user u ON (u.user_id=s.id_user) LEFT JOIN $tbl_session_rel_course_rel_user scru ON (u.user_id=scru.id_user AND scru.course_code = '".$course_code."' ) - WHERE s.id_session='$id_session' - ORDER BY $sort $direction LIMIT $from,".($limit+1); +/*$sql = "SELECT DISTINCT + u.user_id,".($is_western_name_order ? 'u.firstname, u.lastname' : 'u.lastname, u.firstname').", u.username, scru.id_user as is_subscribed + FROM $tbl_session_rel_user s + INNER JOIN $tbl_user u ON (u.user_id=s.id_user) + LEFT JOIN $tbl_session_rel_course_rel_user scru ON (u.user_id=scru.id_user AND scru.course_code = '".$course_code."' ) + WHERE s.id_session='$id_session' + ORDER BY $sort $direction + LIMIT $from,".($limit+1);*/ + +$sql = "SELECT DISTINCT + u.user_id,".($is_western_name_order ? 'u.firstname, u.lastname' : 'u.lastname, u.firstname').", u.username, scru.id_user as is_subscribed + FROM $tbl_session_rel_user s + INNER JOIN $tbl_user u ON (u.user_id=s.id_user) + LEFT JOIN $tbl_session_rel_course_rel_user scru + ON (s.id_session = scru.id_session AND s.id_user = scru.id_user AND scru.course_code = '".$course_code."' ) + WHERE s.id_session='$id_session' + ORDER BY $sort $direction + LIMIT $from,".($limit+1); if ($direction == 'desc') { $direction = 'asc'; @@ -94,16 +105,15 @@ if ($direction == 'desc') { } $result = Database::query($sql); -$Users = Database::store_result($result); +$users = Database::store_result($result); -$nbr_results = sizeof($Users); +$nbr_results = sizeof($users); $tool_name = get_lang('Session').': '.$session_name.' - '.get_lang('Course').': '.$course_title; $interbreadcrumb[] = array("url" => "index.php","name" => get_lang('PlatformAdmin')); $interbreadcrumb[] = array("url" => "session_list.php","name" => get_lang('SessionList')); $interbreadcrumb[] = array('url' => "resume_session.php?id_session=".$id_session,"name" => get_lang('SessionOverview')); -//$interbreadcrumb[]=array("url" => "session_course_list.php?id_session=$id_session","name" => get_lang('ListOfCoursesOfSession')." "".api_htmlentities($session_name,ENT_QUOTES,$charset)."""); Display::display_header($tool_name); @@ -132,7 +142,6 @@ if($nbr_results > $limit) { ?>
- @@ -146,16 +155,14 @@ if($nbr_results > $limit) { - $enreg) { -foreach ($Users as $key=>$enreg) { if ($key == $limit) { break; } ?> - @@ -182,9 +189,8 @@ foreach ($Users as $key=>$enreg) { -
 

diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index c66354a74b..d206c5f7c9 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -2709,6 +2709,11 @@ class SessionManager } $session_name = Database::escape_string($enreg['SessionName']); + + if (empty($session_name)) { + continue; + } + $date_start = $enreg['DateStart']; $date_end = $enreg['DateEnd']; $visibility = isset($enreg['Visibility']) ? $enreg['Visibility'] : $sessionVisibility; @@ -2877,10 +2882,12 @@ class SessionManager $users = explode('|', $enreg['Users']); // Adding the relationship "Session - User" for students + $userList = array(); if (is_array($users)) { foreach ($users as $user) { $user_id = UserManager::get_user_id_from_username($user); if ($user_id !== false) { + $userList[] = $user_id; // Insert new users. $sql = "INSERT IGNORE INTO $tbl_session_user SET id_user = '$user_id', @@ -2895,9 +2902,10 @@ class SessionManager } $courses = explode('|', $enreg['Courses']); - $courseList = array(); + foreach ($courses as $course) { - $course_code = api_strtoupper(api_substr($course, 0, api_strpos($course, '['))); + $courseArray = bracketsToArray($course); + $course_code = $courseArray[0]; if (CourseManager::course_exists($course_code)) { @@ -2915,13 +2923,9 @@ class SessionManager } $course_counter++; - $pattern = "/\[(.*?)\]/"; - preg_match_all($pattern, $course, $matches); - if (isset($matches[1])) { - $course_coaches = $matches[1][0]; - $course_users = $matches[1][1]; - } + $course_coaches = isset($courseArray[1]) ? $courseArray[1] : array(); + $course_users = isset($courseArray[2]) ? $courseArray[2] : array(); $course_users = explode(',', $course_users); $course_coaches = explode(',', $course_coaches); @@ -2932,8 +2936,19 @@ class SessionManager $addTeachersToSession = $courseInfo['add_teachers_to_sessions_courses']; } - // Adding coaches to session course user + // If any coach/user provided for a course use the users array. + if (empty($course_coaches) && empty($course_users)) { + if (!empty($userList)) { + SessionManager::subscribe_users_to_session_course($userList, $session_id, $course_code); + if ($debug) { + $msg = "Sessions - Adding student list ".implode(', #', $userList)." to course: '$course_code' and session #$session_id"; + error_log($msg); + $logger->addInfo($msg); + } + } + } + // Adding coaches to session course user if (!empty($course_coaches)) { $savedCoaches = array(); // only edit if add_teachers_to_sessions_courses is set. @@ -2968,8 +2983,8 @@ class SessionManager // Checking one more time see BT#6449#note-149 $coaches = SessionManager::getCoachesByCourseSession($session_id, $course_code); - if (empty($coaches)) { + if (empty($coaches)) { foreach ($course_coaches as $course_coach) { $course_coach = trim($course_coach); $coach_id = UserManager::get_user_id_from_username($course_coach); @@ -2989,17 +3004,18 @@ class SessionManager } // Adding Students, updating relationship "Session - Course - User". - foreach ($course_users as $user) { - $user = trim($user); - $user_id = UserManager::get_user_id_from_username($user); - - if ($user_id !== false) { - SessionManager::subscribe_users_to_session_course(array($user_id), $session_id, $course_code); - if ($debug) { - $logger->addInfo("Sessions - Adding student: user #$user_id ($user) to course: '$course_code' and session #$session_id"); + if (!empty($course_users)) { + foreach ($course_users as $user) { + $user_id = UserManager::get_user_id_from_username($user); + + if ($user_id !== false) { + SessionManager::subscribe_users_to_session_course(array($user_id), $session_id, $course_code); + if ($debug) { + $logger->addInfo("Sessions - Adding student: user #$user_id ($user) to course: '$course_code' and session #$session_id"); + } + } else { + $error_message .= get_lang('UserDoesNotExist').': '.$user.$eol; } - } else { - $error_message .= get_lang('UserDoesNotExist').': '.$user.$eol; } } @@ -3013,11 +3029,11 @@ class SessionManager Database::query($sql_update_users); } } - return array( 'error_message' => $error_message, 'session_counter' => $session_counter ); + } /** diff --git a/main/inc/lib/text.lib.php b/main/inc/lib/text.lib.php index 59e625d0e0..3b4d72e82e 100644 --- a/main/inc/lib/text.lib.php +++ b/main/inc/lib/text.lib.php @@ -764,4 +764,22 @@ function return_datetime_from_array($array) { $datetime = $year.'-'.$month.'-'.$day.' '.$hours.':'.$minutes.':'.$seconds; } return $datetime; +} + +/** + * Converts an string CLEANYO[admin][amann,acostea] + * into an array: + * + * array( + * CLEANYO + * admin + * amann,acostea + * ) + * + * @param $array + * @return array + */ +function bracketsToArray($array) +{ + return preg_split('/[\[\]]+/', $array, -1, PREG_SPLIT_NO_EMPTY); } \ No newline at end of file diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index af23352df2..3bc532731d 100644 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -2482,6 +2482,7 @@ class UserManager if (empty($username)) { return false; } + $username = trim($username); $username = Database::escape_string($username); $t_user = Database::get_main_table(TABLE_MAIN_USER); $sql = "SELECT user_id FROM $t_user WHERE username = '$username'";