diff --git a/main/admin/user_list.php b/main/admin/user_list.php index 952ca73fad..8d12527377 100755 --- a/main/admin/user_list.php +++ b/main/admin/user_list.php @@ -390,6 +390,110 @@ function get_user_data($from, $number_of_items, $column, $direction) $sql.= " AND url_rel_user.access_url_id=".api_get_current_access_url_id(); } + global $_configuration,$origin; + + $user_table = Database :: get_main_table(TABLE_MAIN_USER); + $admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN); + $sql = "SELECT + u.user_id AS col0, + u.official_code AS col2, + ".(api_is_western_name_order() + ? "u.firstname AS col3, + u.lastname AS col4," + : "u.lastname AS col3, + u.firstname AS col4,")." + u.username AS col5, + u.email AS col6, + u.status AS col7, + u.active AS col8, + u.user_id AS col9 ". + ", u.expiration_date AS exp ". + " FROM $user_table u "; + + // adding the filter to see the user's only of the current access_url + if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls']==true && api_get_current_access_url_id()!=-1) { + $access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)"; + } + + if (isset ($_GET['keyword'])) { + $keyword = Database::escape_string(trim($_GET['keyword'])); + $sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%' OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%' OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%' OR u.official_code LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%' )"; + } elseif (isset ($_GET['keyword_firstname'])) { + $keyword_firstname = Database::escape_string($_GET['keyword_firstname']); + $keyword_lastname = Database::escape_string($_GET['keyword_lastname']); + $keyword_email = Database::escape_string($_GET['keyword_email']); + $keyword_officialcode = Database::escape_string($_GET['keyword_officialcode']); + $keyword_username = Database::escape_string($_GET['keyword_username']); + $keyword_status = Database::escape_string($_GET['keyword_status']); + $query_admin_table = ''; + $keyword_admin = ''; + + if ($keyword_status == SESSIONADMIN) { + $keyword_status = '%'; + $query_admin_table = " , $admin_table a "; + $keyword_admin = ' AND a.user_id = u.user_id '; + } + $keyword_active = isset($_GET['keyword_active']); + $keyword_inactive = isset($_GET['keyword_inactive']); + $sql .= $query_admin_table." WHERE (u.firstname LIKE '%".$keyword_firstname."%' " . + "AND u.lastname LIKE '%".$keyword_lastname."%' " . + "AND u.username LIKE '%".$keyword_username."%' " . + "AND u.email LIKE '%".$keyword_email."%' " . + "AND u.official_code LIKE '%".$keyword_officialcode."%' " . + "AND u.status LIKE '".$keyword_status."'" . + $keyword_admin; + + if ($keyword_active && !$keyword_inactive) { + $sql .= " AND u.active='1'"; + } elseif($keyword_inactive && !$keyword_active) { + $sql .= " AND u.active='0'"; + } + $sql .= " ) "; + } + + // adding the filter to see the user's only of the current access_url + if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls']==true && api_get_current_access_url_id()!=-1) { + $sql.= " AND url_rel_user.access_url_id=".api_get_current_access_url_id(); + } + + if (!in_array($direction, array('ASC','DESC'))) { + $direction = 'ASC'; + } + $column = intval($column); + $from = intval($from); + $number_of_items = intval($number_of_items); + + $sql .= " ORDER BY col$column $direction "; + $sql .= " LIMIT $from,$number_of_items"; + + $res = Database::query($sql, __FILE__, __LINE__); + + $users = array (); + $t = time(); + while ($user = Database::fetch_row($res)) { + + $image_path = UserManager::get_user_picture_path_by_id($user[0], 'web', false, true); + $user_profile = UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" '); + if (!api_is_anonymous()) { + $photo = '
'.api_get_person_name($user[2],$user[3]).'
'; + } else { + $photo = '
'.api_get_person_name($user[2], $user[3]).'
'; + } + + if ($user[7] == 1 && $user[9] != '0000-00-00 00:00:00') { + // check expiration date + $expiration_time = convert_mysql_date($user[9]); + // if expiration date is passed, store a special value for active field + if ($expiration_time < $t) { + $user[7] = '-1'; + } + } + // forget about the expiration date field + $users[] = array($user[0],$photo,$user[1],$user[2],$user[3],$user[4],$user[5],$user[6],$user[7],$user[8]); + } + return $users; + if (!in_array($direction, array('ASC','DESC'))) { $direction = 'ASC'; } @@ -399,6 +503,7 @@ function get_user_data($from, $number_of_items, $column, $direction) $sql .= " ORDER BY col$column $direction "; $sql .= " LIMIT $from,$number_of_items"; + echo $sql; $res = Database::query($sql, __FILE__, __LINE__); $users = array (); @@ -756,18 +861,18 @@ else $_admins_list[] = $row_admin[0]; } - $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']).'
'; - } else { - $photo = '
'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'
'; - } + $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']).'
'; + } else { + $photo = '
'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'
'; + } $table = new SortableTable('users', 'get_number_of_users', 'get_user_data', (api_is_western_name_order() xor api_sort_by_first_name()) ? 3 : 2); $table->set_additional_parameters($parameters); $table->set_header(0, '', false); - $table->set_header(1, get_lang('Photo')); + $table->set_header(1, get_lang('Photo'), false); $table->set_header(2, get_lang('OfficialCode')); if (api_is_western_name_order()) { $table->set_header(3, get_lang('FirstName'));