Fixing total number of users in ranking see #4861

skala
Julio Montoya 14 years ago
parent 8bbb26130e
commit e7a4093804
  1. 53
      main/inc/lib/course.lib.php
  2. 5
      main/inc/lib/sessionmanager.lib.php
  3. 4
      main/inc/lib/tracking.lib.php
  4. 40
      main/user/user.php

@ -900,6 +900,7 @@ class CourseManager {
* Note this is different from getting information about a real course!
*
* @param $real_course_code, the id of the real course which the virtual course is linked to
* @deprecated virtual courses doesn't exist anymore
*/
public static function get_virtual_course_info($real_course_code) {
$sql_result = Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE)."
@ -914,6 +915,7 @@ class CourseManager {
/**
* @param string $system_code, the system code of the course
* @return true if the course is a virtual course, false otherwise
* @deprecated virtual courses doesn't exist anymore
*/
public static function is_virtual_course_from_system_code($system_code) {
$result = Database::fetch_array(Database::query("SELECT target_course_code FROM ".Database::get_main_table(TABLE_MAIN_COURSE)."
@ -925,6 +927,7 @@ class CourseManager {
* Returns whether the course code given is a visual code
* @param string Visual course code
* @return true if the course is a virtual course, false otherwise
* @deprecated virtual courses doesn't exist anymore
*/
public static function is_virtual_course_from_visual_code($visual_code) {
$result = Database::fetch_array(Database::query("SELECT target_course_code FROM ".Database::get_main_table(TABLE_MAIN_COURSE)."
@ -934,6 +937,7 @@ class CourseManager {
/**
* @return true if the real course has virtual courses that the user is subscribed to, false otherwise
* @deprecated virtual courses doesn't exist anymore
*/
public static function has_virtual_courses_from_code($real_course_code, $user_id) {
return count(self::get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $real_course_code)) > 0;
@ -945,6 +949,7 @@ class CourseManager {
*
* @param string The id of the real course which the virtual courses are linked to
* @return array List of courses details
* @deprecated virtual courses doesn't exist anymore
*/
public static function get_virtual_courses_linked_to_real_course($real_course_code) {
$sql_result = Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE)."
@ -1112,9 +1117,10 @@ class CourseManager {
* @param integer $session_id the id of the session
* @param string $limit the LIMIT statement of the sql statement
* @param string $order_by the field to order the users by. Valid values are 'lastname', 'firstname', 'username', 'email', 'official_code' OR a part of a SQL statement that starts with ORDER BY ...
* @return array
* @param int 0 or 2 (student, coach) if using the session id, STUDENT or COURSEMANAGER if using session_id = 0
* @return array
*/
public static function get_user_list_from_course_code($course_code, $session_id = 0, $limit = '', $order_by = '') {
public static function get_user_list_from_course_code($course_code, $session_id = 0, $limit = '', $order_by = '', $filter_by_status = null) {
// variable initialisation
$session_id = intval($session_id);
$course_code = Database::escape_string($course_code);
@ -1122,36 +1128,51 @@ class CourseManager {
// if the $order_by does not contain 'ORDER BY' we have to check if it is a valid field that can be sorted on
if (!strstr($order_by,'ORDER BY')) {
if (!empty($order_by) AND in_array($order_by, array('lastname', 'firstname', 'username', 'email', 'official_code'))){
$order_by = 'ORDER BY user.'.$order_by;
} else {
$order_by = '';
}
if (!empty($order_by) AND in_array($order_by, array('lastname', 'firstname', 'username', 'email', 'official_code'))) {
$order_by = 'ORDER BY user.'.$order_by;
} else {
$order_by = '';
}
}
$sql = $session_id == 0
? 'SELECT DISTINCT course_rel_user.status as status_rel, user.user_id, course_rel_user.role, course_rel_user.tutor_id, user.* '
: 'SELECT DISTINCT user.user_id, session_course_user.status as status_session, user.* ';
$sql .= ' FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user ';
$filter_by_status_condition = null;
if (!empty($session_id)) {
$sql = 'SELECT DISTINCT user.user_id, session_course_user.status as status_session, user.* ';
$sql .= ' FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user ';
$sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' as session_course_user
ON user.user_id = session_course_user.id_user
AND session_course_user.course_code="'.$course_code.'"
AND session_course_user.id_session = '.$session_id;
$where[] = ' session_course_user.course_code IS NOT NULL ';
// 2 = coach
// 0 = student
if (isset($filter_by_status)) {
$filter_by_status = intval($filter_by_status);
$filter_by_status_condition = " session_course_user.status = $filter_by_status AND ";
}
} else {
$sql = 'SELECT DISTINCT course_rel_user.status as status_rel, user.user_id, course_rel_user.role, course_rel_user.tutor_id, user.* ';
$sql .= ' FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user ';
$sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_COURSE_USER).' as course_rel_user
ON user.user_id = course_rel_user.user_id AND course_rel_user.relation_type<>'.COURSE_RELATION_TYPE_RRHH.'
AND course_rel_user.course_code="'.$course_code.'"';
$where[] = ' course_rel_user.course_code IS NOT NULL ';
if (isset($filter_by_status) && $filter_by_status != '') {
$filter_by_status = intval($filter_by_status);
$filter_by_status_condition = " course_rel_user.status = $filter_by_status AND ";
}
}
$multiple_access_url = api_get_multiple_access_url();
if ($multiple_access_url) {
$sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ON (au.user_id = user.user_id) ';
}
$sql .= ' WHERE '.implode(' OR ', $where);
$sql .= ' WHERE '.$filter_by_status_condition.' '.implode(' OR ', $where);
if ($multiple_access_url) {
$current_access_url_id = api_get_current_access_url_id();
@ -1164,7 +1185,6 @@ class CourseManager {
if (Database::num_rows($rs)) {
while ($user = Database::fetch_array($rs)) {
//$user_info = Database::get_user_info_from_id($user['user_id']);
$user_info = $user;
$user_info['status'] = $user['status'];
@ -3643,7 +3663,7 @@ class CourseManager {
* @param int number of days
* @param int number of hottest courses
*/
function return_hot_courses($days = 30, $limit = 5) {
public function return_hot_courses($days = 30, $limit = 5) {
$limit = intval($limit);
//Getting my courses
@ -3704,7 +3724,7 @@ class CourseManager {
return $courses;
}
function return_most_accessed_courses($limit = 5) {
public function return_most_accessed_courses($limit = 5) {
$table_course_ranking = Database::get_main_table(TABLE_STATISTIC_TRACK_COURSE_RANKING);
$params['url_id'] = api_get_current_access_url_id();
@ -3717,8 +3737,7 @@ class CourseManager {
*
* @return ResultSet
*/
static function list_inactive_courses($ceiling, $visibility_level = COURSE_VISIBILITY_REGISTERED)
{
static function list_inactive_courses($ceiling, $visibility_level = COURSE_VISIBILITY_REGISTERED) {
$ceiling = is_numeric($ceiling) ? (int) $ceiling : strtotime($ceiling);
$ceiling = date('Y-m-d H:i:s', $ceiling);
$visibility_level = $visibility_level ? $visibility_level : '0';

@ -1477,8 +1477,6 @@ class SessionManager {
return $assigned_sessions_to_hrm;
}
/**
* Gets the list of courses by session filtered by access_url
* @param int session id
@ -1541,7 +1539,7 @@ class SessionManager {
ON $tbl_user.user_id = $tbl_session_rel_user.id_user
AND $tbl_session_rel_user.id_session = $id";
if ($with_status !== false) {
if (!empty($with_status)) {
$with_status = intval($with_status);
$sql .= " WHERE relation_type = $with_status ";
}
@ -1550,7 +1548,6 @@ class SessionManager {
while ($row = Database::fetch_array($result,'ASSOC')) {
$return_array[] = $row;
}
return $return_array;
}

@ -2593,9 +2593,9 @@ class Tracking {
</tr>';
if (empty($session_id)) {
$user_list = UserManager::get_user_list();
$user_list = CourseManager::get_user_list_from_course_code($course, $session_id, null, null, STUDENT);
} else {
$user_list = SessionManager::get_users_by_session($session_id);
$user_list = CourseManager::get_user_list_from_course_code($course, $session_id, null, null, 0);
}
//$exercise_list = get_all_exercises($course_info, $session_id, true);

@ -37,12 +37,6 @@ require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
global $_configuration;
//CHECK KEYS
if (!isset ($_cid)) {
header('location: '.api_get_path(WEB_PATH));
exit;
}
if (!api_is_platform_admin(true)) {
if (!api_is_course_admin() && !api_is_coach()) {
if (api_get_course_setting('allow_user_view_user_list') == 0) {
@ -54,7 +48,8 @@ if (!api_is_platform_admin(true)) {
/*
Constants and variables
*/
$currentCourseID = Database::escape_string($_course['sysCode']);
$course_code = Database::escape_string(api_get_course_code());
$session_id = api_get_session_id();
$is_western_name_order = api_is_western_name_order();
$sort_by_first_name = api_sort_by_first_name();
$course_info = api_get_course_info();
@ -65,7 +60,6 @@ if (api_is_allowed_to_edit(null, true)) {
switch ($_POST['action']) {
case 'unsubscribe' :
// Make sure we don't unsubscribe current user from the course
if (is_array($_POST['user'])) {
$user_ids = array_diff($_POST['user'], array($_user['user_id']));
if (count($user_ids) > 0) {
@ -78,7 +72,7 @@ if (api_is_allowed_to_edit(null, true)) {
}
if (api_is_allowed_to_edit(null, true)) {
if ( isset ($_GET['action'])) {
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'export' :
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
@ -92,8 +86,6 @@ if (api_is_allowed_to_edit(null, true)) {
$current_access_url_id = api_get_current_access_url_id();
}
$session_id = api_get_session_id();
$extra_fields = UserManager::get_extra_user_data(api_get_user_id(), false, false, false, true);
$extra_fields = array_keys($extra_fields);
@ -129,7 +121,7 @@ if (api_is_allowed_to_edit(null, true)) {
if ($_configuration['multiple_access_urls']) {
$sql_query .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ';
}
$sql_query .=" WHERE course_code = '$currentCourseID' AND session_course_user.id_user = user.user_id ";
$sql_query .=" WHERE course_code = '$course_code' AND session_course_user.id_user = user.user_id ";
$sql_query .= ' AND id_session = '.$session_id;
if ($_configuration['multiple_access_urls']) {
@ -183,7 +175,7 @@ if (api_is_allowed_to_edit(null, true)) {
if ($_configuration['multiple_access_urls']) {
$sql_query .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ';
}
$sql_query .= " WHERE course_code = '$currentCourseID' AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND course_user.user_id = user.user_id ";
$sql_query .= " WHERE course_code = '$course_code' AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND course_user.user_id = user.user_id ";
if ($_configuration['multiple_access_urls']) {
$sql_query .= " AND user.user_id = au.user_id AND access_url_id = $current_access_url_id ";
@ -276,7 +268,7 @@ if (api_is_allowed_to_edit(null, true)) {
INNER JOIN '.$tbl_session_rel_course.' rel_course
ON rel_course.id_session = reluser.id_session
WHERE user.user_id = "'.$user_id.'"
AND rel_course.course_code = "'.$currentCourseID.'"';
AND rel_course.course_code = "'.$course_code.'"';
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
@ -327,6 +319,7 @@ if (isset($message)) {
//statistics
event_access_tool(TOOL_USER);
/* Setting the permissions for this page */
$is_allowed_to_track = ($is_courseAdmin || $is_courseTutor);
@ -365,14 +358,6 @@ if ( api_is_allowed_to_edit(null, true)) {
$form->display();
echo '</div>';
}
/*
if (1) // platform setting api_get_setting('subscribe_user_by_coach') {
if (!api_is_allowed_to_edit() && $is_courseTutor) {
echo "<div align=\"right\">";
echo '<a href="subscribe_user.php?'.api_get_cidreq().'">'.Display::return_icon('add_user_big.gif',get_lang("SubscribeUserToCourse")).'&nbsp;'.get_lang("SubscribeUserToCourse").'</a>';
echo "</div>";
}
}*/
/* DISPLAY LIST OF USERS */
/**
@ -410,6 +395,8 @@ function get_user_data($from, $number_of_items, $column, $direction) {
global $origin;
global $is_western_name_order;
global $sort_by_first_name;
global $session_id;
$a_users = array();
// limit
@ -455,11 +442,10 @@ function get_user_data($from, $number_of_items, $column, $direction) {
break;
}
if (!empty($_SESSION["id_session"])) {
$a_course_users = CourseManager :: get_user_list_from_course_code($_SESSION['_course']['id'], $_SESSION['id_session'], $limit, $order_by);
} else {
$a_course_users = CourseManager :: get_user_list_from_course_code($_SESSION['_course']['id'], 0, $limit, $order_by);
}
$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);
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'])) {

Loading…
Cancel
Save