diff --git a/main/admin/add_users_to_session.php b/main/admin/add_users_to_session.php
index fe91b83ae0..ce4b8f2165 100644
--- a/main/admin/add_users_to_session.php
+++ b/main/admin/add_users_to_session.php
@@ -99,7 +99,7 @@ function search_users($needle, $type) {
// search users where username or firstname or lastname begins likes $needle
$sql = 'SELECT user.user_id, username, lastname, firstname FROM '.$tbl_user.' user
WHERE (username LIKE "'.$needle.'%" OR firstname LIKE "'.$needle.'%"
- OR lastname LIKE "'.$needle.'%") AND user.status<>6 AND user.status<>'.DRH.''.
+ OR lastname LIKE "'.$needle.'%") AND user.status <> 6 AND user.status<>'.DRH.' '.$cond_user_id.' '.
$order_clause.
' LIMIT 11';
break;
@@ -163,7 +163,6 @@ function search_users($needle, $type) {
$return .= '...
';
}
}
-
$xajax_response -> addAssign('ajax_list_users_single','innerHTML',api_utf8_encode($return));
} else {
global $nosessionUsersList;
@@ -271,7 +270,8 @@ if ($ajax_search) {
AND $tbl_session_rel_user.id_session = ".intval($id_session)."
WHERE u.status<>".DRH." AND
u.status<>6 AND
- $tbl_session_rel_user.moved_to = 0
+ $tbl_session_rel_user.moved_to = 0 AND
+ $tbl_session_rel_user.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION."
$order_clause";
if ($_configuration['multiple_access_urls']) {
@@ -287,7 +287,8 @@ if ($ajax_search) {
WHERE access_url_id = $access_url_id AND
u.status<>".DRH." AND
u.status<>6 AND
- $tbl_session_rel_user.moved_to = 0
+ $tbl_session_rel_user.moved_to = 0 AND
+ $tbl_session_rel_user.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION."
$order_clause";
}
}
@@ -407,7 +408,8 @@ if ($ajax_search) {
$tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
WHERE u.status <> ".DRH." AND
u.status <> 6 AND
- $tbl_session_rel_user.moved_to = 0
+ $tbl_session_rel_user.moved_to = 0 AND
+ $tbl_session_rel_user.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION."
$order_clause";
if ($_configuration['multiple_access_urls']) {
@@ -422,7 +424,9 @@ if ($ajax_search) {
WHERE access_url_id = $access_url_id AND
u.status<>".DRH." AND
u.status<>6 AND
- $tbl_session_rel_user.moved_to = 0
+ $tbl_session_rel_user.moved_to = 0 AND
+ $tbl_session_rel_user.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION."
+
$order_clause";
}
}
diff --git a/main/admin/change_user_session.php b/main/admin/change_user_session.php
index 8fe388e01a..74f8996c3c 100644
--- a/main/admin/change_user_session.php
+++ b/main/admin/change_user_session.php
@@ -20,7 +20,6 @@ if (api_is_platform_admin()) {
$sessions = SessionManager::get_sessions_by_coach(api_get_session_id());
}
-
$message = null;
$session_to_select = array();
foreach ($sessions as $session) {
@@ -32,6 +31,12 @@ foreach ($sessions as $session) {
$session_name = api_get_session_name($session_id);
$user_info = api_get_user_info($user_id);
+//Check if user was already moved
+$user_status = SessionManager::get_user_status_in_session($session_id, $user_id);
+if (isset($user_status['moved_to']) && $user_status['moved_to'] != 0 || $user_status['moved_status'] == SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION) {
+ api_not_allowed(true);
+}
+
$form = new FormValidator('change_user_session', 'post', api_get_self());
$form->addElement('hidden', 'user_id', $user_id);
$form->addElement('hidden', 'id_session', $session_id);
@@ -39,10 +44,9 @@ $form->addElement('header', get_lang('ChangeUserSession'));
$form->addElement('label', get_lang('User'), ''.$user_info['complete_name'].'');
$form->addElement('label', get_lang('CurrentSession'), $session_name);
-$form->addElement('select', 'reason_id', get_lang('Action'), SessionManager::get_session_change_user_reasons());
-$form->addElement('select', 'new_session_id', get_lang('SessionDestination'), $session_to_select);
+$form->addElement('select', 'reason_id', get_lang('Action'), SessionManager::get_session_change_user_reasons(), array('id' => 'reason_id'));
+$form->addElement('select', 'new_session_id', get_lang('SessionDestination'), $session_to_select, array('id' => 'new_session_id'));
-$form->addRule('new_session_id', get_lang('Required'), 'required');
$form->addElement('button', 'submit', get_lang('Change'));
$content = $form->return_form();
@@ -62,6 +66,21 @@ $interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('Sessi
$interbreadcrumb[] = array('url' => 'resume_session.php?id_session='.$session_id,'name' => get_lang('SessionOverview'));
$interbreadcrumb[] = array('url' => '#','name' => get_lang('ChangeUserSession'));
+$htmlHeadXtra[] = '';
+
$tpl = new Template();
$tpl->assign('message', $message);
diff --git a/main/admin/resume_session.php b/main/admin/resume_session.php
index 0381e3ec87..23ecb713bb 100644
--- a/main/admin/resume_session.php
+++ b/main/admin/resume_session.php
@@ -125,7 +125,19 @@ echo Display::page_subheader(get_lang('GeneralProperties').$url);
:
';
@@ -77,13 +73,11 @@ $list_not_register_user='';
if (isset ($_REQUEST['register'])) {
if (isset($_REQUEST['type']) && $_REQUEST['type']=='teacher') {
-
if (!empty($current_session_id)) {
$result_simple_sub = SessionManager::set_coach_to_course_session(intval($_REQUEST['user_id']), $current_session_id, $_course['sysCode']);
} else {
$result_simple_sub = CourseManager :: subscribe_user(intval($_REQUEST['user_id']), $_course['sysCode'],COURSEMANAGER);
}
-
} else {
$result_simple_sub=CourseManager :: subscribe_user(intval($_REQUEST['user_id']), $_course['sysCode']);
}
@@ -180,12 +174,9 @@ if (!empty($_SESSION['session_user_name'])) {
unset($_SESSION['session_user_name']);
}
-
-
$is_western_name_order = api_is_western_name_order();
$sort_by_first_name = api_sort_by_first_name();
-
// Build table
$table = new SortableTable('subscribe_users', 'get_number_of_users', 'get_user_data', ($is_western_name_order xor $sort_by_first_name) ? 3 : 2);
$parameters['keyword'] = Security::remove_XSS($_REQUEST['keyword']);
@@ -359,20 +350,7 @@ function get_number_of_users() {
if ($res) {
$row = Database::fetch_row($res);
$count_user = $row[0];
- }
-
- /* @todo seems not to be used
- // we add 1 for every additional user (a user where the keyword matches one of the additional profile fields)
- // that is not yet in the course and not yet in the search result
- if (isset ($_REQUEST['keyword']) AND api_get_setting('ProfilingFilterAddingUsers') == 'true') {
- foreach($additional_users as $additional_user_key=>$additional_user_value){
- if (!in_array($additional_user_key,$users) AND !in_array($additional_user_key,$users_of_course)){
- $result++;
- }
- }
- }
- */
-
+ }
return $count_user;
}
/**
@@ -413,8 +391,7 @@ function get_user_data($from, $number_of_items, $column, $direction) {
u.active AS col4,
u.user_id AS col5";
}
-
-
+
if (isset($_REQUEST['type']) && $_REQUEST['type']=='teacher') {
// adding a teacher through a session
if (!empty($_SESSION["id_session"])) {
@@ -640,7 +617,7 @@ function active_filter($active, $url_params, $row) {
$image='error';
}
if ($row['0']<>$_user['user_id']) { // you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.
- $result = '
'.Display::return_icon($image.'.png', get_lang(ucfirst($action)), array('border'=>'0', 'style'=>'vertical-align: middle;') , 16).'';
+ $result = Display::return_icon($image.'.png', get_lang(ucfirst($action)), array('border'=>'0', 'style'=>'vertical-align: middle;') , 16);
}
return $result;
}
diff --git a/main/user/user.php b/main/user/user.php
index a113b8a5ed..6533905280 100644
--- a/main/user/user.php
+++ b/main/user/user.php
@@ -48,7 +48,7 @@ if (!api_is_platform_admin(true)) {
/*
Constants and variables
*/
-$course_code = Database::escape_string(api_get_course_id());
+$course_code = api_get_course_id();
$session_id = api_get_session_id();
$is_western_name_order = api_is_western_name_order();
$sort_by_first_name = api_sort_by_first_name();
@@ -134,13 +134,17 @@ if (api_is_allowed_to_edit(null, true)) {
if (api_get_session_id()) {
$table_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
+ $table_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$sql_query = "SELECT DISTINCT user.user_id, ".($is_western_name_order ? "user.firstname, user.lastname" : "user.lastname, user.firstname").", user.username, $select_email_condition phone, user.official_code, active $legal
- FROM $table_session_course_user as session_course_user, $table_users as user ";
+ FROM $table_session_course_user as session_course_user, $table_users as user, $table_session_user as su";
if ($_configuration['multiple_access_urls']) {
$sql_query .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ';
}
- $sql_query .=" WHERE course_code = '$course_code' AND session_course_user.id_user = user.user_id ";
- $sql_query .= ' AND id_session = '.$session_id;
+ $sql_query .=" WHERE course_code = '$course_code' AND
+ session_course_user.id_user = user.user_id AND
+ su.id_user = session_course_user.id_user AND session_course_user.id_session = su.id_session AND
+ su.moved_to = 0 AND su.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION." AND
+ session_course_user.id_session = $session_id";
if ($_configuration['multiple_access_urls']) {
$sql_query .= " AND user.user_id = au.user_id AND access_url_id = $current_access_url_id ";
@@ -343,7 +347,6 @@ if (api_is_allowed_to_edit(null, true)) {
}
}
-
/* FUNCTIONS */
function display_user_search_form() {
@@ -354,10 +357,6 @@ function display_user_search_form() {
echo '';
}
-if (!$is_allowed_in_course) {
- api_not_allowed(true);
-}
-
/* Header */
if ($origin != 'learnpath') {
if (isset($_GET['keyword']) && !empty($_GET['keyword'])) {
@@ -416,31 +415,10 @@ if ( api_is_allowed_to_edit(null, true)) {
/**
* * Get the users to display on the current page.
*/
-function get_number_of_users() {
- $counter = 0;
- if (!empty($_SESSION["id_session"])){
- $a_course_users = CourseManager :: get_user_list_from_course_code($_SESSION['_course']['id'], $_SESSION['id_session']);
-
- } else {
- $a_course_users = CourseManager :: get_user_list_from_course_code($_SESSION['_course']['id'], 0);
- }
- foreach ($a_course_users as $user_id => $o_course_user) {
- if ((isset($_GET['keyword']) && search_keyword($o_course_user['firstname'], $o_course_user['lastname'], $o_course_user['username'], $o_course_user['official_code'], $_GET['keyword'])) || !isset($_GET['keyword']) || empty($_GET['keyword'])) {
- $counter++;
- }
- }
- return $counter;
-}
-
-function search_keyword($firstname, $lastname, $username, $official_code, $keyword) {
- if (api_strripos($firstname, $keyword) !== false || api_strripos($lastname, $keyword) !== false || api_strripos($username, $keyword) !== false || api_strripos($official_code, $keyword) !== false) {
- return true;
- } else {
- return false;
- }
+function get_number_of_users() {
+ return CourseManager::get_users_count_in_course(api_get_course_id(), api_get_session_id(), null, null, null, $_GET['keyword']);
}
-
/**
* Get the users to display on the current page.
*/
@@ -453,9 +431,7 @@ function get_user_data($from, $number_of_items, $column, $direction) {
$a_users = array();
// limit
- if (!isset($_GET['keyword']) || empty($_GET['keyword'])) {
- $limit = 'LIMIT '.intval($from).','.intval($number_of_items);
- }
+ $limit = 'LIMIT '.intval($from).','.intval($number_of_items);
if (!in_array($direction, array('ASC', 'DESC'))) {
$direction = 'ASC';
@@ -494,86 +470,83 @@ function get_user_data($from, $number_of_items, $column, $direction) {
$session_id = api_get_session_id();
$course_code = api_get_course_id();
- $a_course_users = CourseManager :: get_user_list_from_course_code($course_code, $session_id, $limit, $order_by);
+ $a_course_users = CourseManager :: get_user_list_from_course_code($course_code, $session_id, $limit, $order_by, null, $_REQUEST['keyword']);
foreach ($a_course_users as $user_id => $o_course_user) {
- if ((isset($_GET['keyword']) && search_keyword($o_course_user['firstname'], $o_course_user['lastname'], $o_course_user['username'], $o_course_user['official_code'], $_GET['keyword'])) || !isset($_GET['keyword']) || empty($_GET['keyword'])) {
-
- $groups_name = GroupManager :: get_user_group_name($user_id);
- $temp = array();
- if (api_is_allowed_to_edit(null, true)) {
- //if (api_get_setting('allow_user_course_subscription_by_course_admin') == 'true') {
- $temp[] = $user_id;
- //}
- $image_path = UserManager::get_user_picture_path_by_id($user_id, 'web', false, true);
- $user_profile = UserManager::get_picture_user($user_id, $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
- if (!api_is_anonymous()) {
- $photo = '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$user_profile['file'].')
';
- } else {
- $photo = '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$user_profile['file'].')
';
- }
-
- $temp[] = $photo;
- $temp[] = $o_course_user['official_code'];
-
- if ($is_western_name_order) {
- $temp[] = $o_course_user['firstname'];
- $temp[] = $o_course_user['lastname'];
- } else {
- $temp[] = $o_course_user['lastname'];
- $temp[] = $o_course_user['firstname'];
- }
+ $groups_name = GroupManager :: get_user_group_name($user_id);
+ $temp = array();
+ if (api_is_allowed_to_edit(null, true)) {
+ //if (api_get_setting('allow_user_course_subscription_by_course_admin') == 'true') {
+ $temp[] = $user_id;
+ //}
+ $image_path = UserManager::get_user_picture_path_by_id($user_id, 'web', false, true);
+ $user_profile = UserManager::get_picture_user($user_id, $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
+ if (!api_is_anonymous()) {
+ $photo = '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$user_profile['file'].')
';
+ } else {
+ $photo = '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$user_profile['file'].')
';
+ }
- $temp[] = $o_course_user['username'];
- $temp[] = isset($o_course_user['role']) ? $o_course_user['role'] : null; //Description
- $temp[] = implode(', ', $groups_name); //Group
+ $temp[] = $photo;
+ $temp[] = $o_course_user['official_code'];
- // Status
- $default_status = '-';
- if ((isset($o_course_user['status_rel']) && $o_course_user['status_rel'] == 1) || (isset($o_course_user['status_session']) && $o_course_user['status_session'] == 2)) {
- $default_status = get_lang('CourseManager');
- } elseif (isset($o_course_user['tutor_id']) && $o_course_user['tutor_id'] == 1) {
- $default_status = get_lang('Tutor');
- }
- $temp[] = $default_status;
-
- //Active
- $temp[] = $o_course_user['active'];
-
+ if ($is_western_name_order) {
+ $temp[] = $o_course_user['firstname'];
+ $temp[] = $o_course_user['lastname'];
+ } else {
+ $temp[] = $o_course_user['lastname'];
+ $temp[] = $o_course_user['firstname'];
+ }
+
+ $temp[] = $o_course_user['username'];
+ $temp[] = isset($o_course_user['role']) ? $o_course_user['role'] : null; //Description
+ $temp[] = implode(', ', $groups_name); //Group
+
+ // Status
+ $default_status = '-';
+ if ((isset($o_course_user['status_rel']) && $o_course_user['status_rel'] == 1) || (isset($o_course_user['status_session']) && $o_course_user['status_session'] == 2)) {
+ $default_status = get_lang('CourseManager');
+ } elseif (isset($o_course_user['tutor_id']) && $o_course_user['tutor_id'] == 1) {
+ $default_status = get_lang('Tutor');
+ }
+ $temp[] = $default_status;
+
+ //Active
+ $temp[] = $o_course_user['active'];
+
+ //User id for actions
+ $temp[] = $user_id;
+ } else {
+ $image_path = UserManager::get_user_picture_path_by_id($user_id, 'web', false, true);
+ $image_repository = $image_path['dir'];
+ $existing_image = $image_path['file'];
+ if (!api_is_anonymous()) {
+ $photo= '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$image_repository.$existing_image.')
';
+ } else {
+ $photo= '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$image_repository.$existing_image.')
';
+ }
+ $temp[] = $user_id;
+ $temp[] = $photo;
+ $temp[] = $o_course_user['official_code'];
+
+ if ($is_western_name_order) {
+ $temp[] = $o_course_user['firstname'];
+ $temp[] = $o_course_user['lastname'];
+ } else {
+ $temp[] = $o_course_user['lastname'];
+ $temp[] = $o_course_user['firstname'];
+ }
+ $temp[] = $o_course_user['username'];
+ $temp[] = $o_course_user['role'];
+ $temp[] = implode(', ', $groups_name);//Group
+
+ if ($course_info['unsubscribe'] == 1) {
//User id for actions
- $temp[] = $user_id;
- } else {
- $image_path = UserManager::get_user_picture_path_by_id($user_id, 'web', false, true);
- $image_repository = $image_path['dir'];
- $existing_image = $image_path['file'];
- if (!api_is_anonymous()) {
- $photo= '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$image_repository.$existing_image.')
';
- } else {
- $photo= '
!['.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).' '.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).']('.$image_repository.$existing_image.')
';
- }
$temp[] = $user_id;
- $temp[] = $photo;
- $temp[] = $o_course_user['official_code'];
-
- if ($is_western_name_order) {
- $temp[] = $o_course_user['firstname'];
- $temp[] = $o_course_user['lastname'];
- } else {
- $temp[] = $o_course_user['lastname'];
- $temp[] = $o_course_user['firstname'];
- }
- $temp[] = $o_course_user['username'];
- $temp[] = $o_course_user['role'];
- $temp[] = implode(', ', $groups_name);//Group
-
- if ($course_info['unsubscribe'] == 1) {
- //User id for actions
- $temp[] = $user_id;
- }
- //$temp[] = $o_course_user['official_code'];
- }
- $a_users[$user_id] = $temp;
- }
+ }
+ //$temp[] = $o_course_user['official_code'];
+ }
+ $a_users[$user_id] = $temp;
}
return $a_users;
}
@@ -605,7 +578,6 @@ function active_filter($active, $url_params, $row) {
return $result;
}
-
/**
* Build the modify-column of the table
* @param int $user_id The user id