Improve code to return only user_id

SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus

Throws an error 'Out of sort memory consider increasing server sort buffer size'
in master.
pull/3173/head
Julio Montoya 7 years ago
parent cfda8c92e0
commit ed86123cca
  1. 12
      main/extra/myStudents.php
  2. 26
      main/inc/lib/sessionmanager.lib.php
  3. 2
      main/mySpace/student.php
  4. 1
      main/mySpace/teachers.php
  5. 9
      main/mySpace/users.php

@ -323,17 +323,7 @@ $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
if (api_is_drh() && !api_is_platform_admin()) {
if (!empty($studentId)) {
if (api_drh_can_access_all_session_content()) {
//@todo securize drh with student id
/*$users = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus('drh_all', api_get_user_id());
$userList = [];
foreach ($users as $user) {
$userList[] = $user['user_id'];
}
if (!in_array($student_id, $userList)) {
api_not_allowed(true);
}*/
} else {
if (!api_drh_can_access_all_session_content()) {
if (!($isDrhOfCourse)) {
if (api_is_drh() &&
!UserManager::is_user_followed_by_drh($studentId, api_get_user_id())

@ -5865,6 +5865,8 @@ SQL;
}
/**
* Return user id list or count of users depending of the $getCount parameter
*
* @param string $status
* @param int $userId
* @param bool $getCount
@ -5896,7 +5898,8 @@ SQL;
$studentIdList = [],
$filterByStatus = null
) {
$filterByStatus = intval($filterByStatus);
$filterByStatus = (int) $filterByStatus;
$userId = (int) $userId;
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
@ -5909,12 +5912,11 @@ SQL;
$direction = in_array(strtolower($direction), ['asc', 'desc']) ? $direction : 'asc';
$column = Database::escape_string($column);
$userId = intval($userId);
$limitCondition = '';
if (isset($from) && isset($numberItems)) {
$from = intval($from);
$numberItems = intval($numberItems);
$from = (int) $from;
$numberItems = (int) $numberItems;
$limitCondition = "LIMIT $from, $numberItems";
}
@ -5925,7 +5927,7 @@ SQL;
$userConditions = '';
if (isset($active)) {
$active = intval($active);
$active = (int) $active;
$userConditions .= " AND active = $active";
}
@ -5954,7 +5956,7 @@ SQL;
$studentListSql = "'".implode("','", $studentIdList)."'";
}
if (!empty($studentListSql)) {
$userConditionsFromDrh = " AND u.user_id IN (".$studentListSql.") ";
$userConditionsFromDrh = " AND u.user_id IN ($studentListSql) ";
}
switch ($status) {
@ -5976,7 +5978,7 @@ SQL;
$sessionsListSql = "'".implode("','", $sessionIdList)."'";
}
if (!empty($sessionsListSql)) {
$sessionConditions = " AND s.id IN (".$sessionsListSql.") ";
$sessionConditions = " AND s.id IN ($sessionsListSql) ";
}
break;
case 'session_admin':
@ -5991,16 +5993,16 @@ SQL;
break;
}
$select = "SELECT DISTINCT u.* ";
$masterSelect = "SELECT DISTINCT * FROM ";
$select = 'SELECT DISTINCT u.* ';
$masterSelect = 'SELECT DISTINCT user_id FROM ';
if ($getCount) {
$select = "SELECT DISTINCT u.user_id ";
$masterSelect = "SELECT COUNT(DISTINCT(user_id)) as count FROM ";
$select = 'SELECT DISTINCT u.user_id ';
$masterSelect = 'SELECT COUNT(DISTINCT(user_id)) as count FROM ';
}
if (!empty($filterByStatus)) {
$userConditions .= " AND u.status = ".$filterByStatus;
$userConditions .= " AND u.status = $filterByStatus";
}
if (!empty($lastConnectionDate)) {

@ -130,6 +130,8 @@ function get_users($from, $limit, $column, $direction)
$all_datas = [];
foreach ($students as $student_data) {
$student_id = $student_data['user_id'];
$student_data = api_get_user_info($student_id);
if (isset($_GET['id_session'])) {
$courses = Tracking :: get_course_list_in_session_from_student($student_id, $sessionId);
}

@ -116,6 +116,7 @@ function get_users($from, $limit, $column, $direction)
$url = api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php';
foreach ($students as $student_data) {
$student_id = $student_data['user_id'];
$student_data = api_get_user_info($student_id);
if (isset($_GET['id_session'])) {
$courses = Tracking::get_course_list_in_session_from_student($student_id, $_GET['id_session']);
}

@ -127,8 +127,9 @@ function get_users($from, $limit, $column, $direction)
$all_datas = [];
foreach ($students as $student_data) {
$student_id = $student_data['user_id'];
$student_data = api_get_user_info($student_id);
if (isset($_GET['id_session'])) {
$courses = Tracking :: get_course_list_in_session_from_student($student_id, $sessionId);
$courses = Tracking::get_course_list_in_session_from_student($student_id, $sessionId);
}
$avg_time_spent = $avg_student_score = $avg_student_progress = 0;
@ -139,7 +140,11 @@ function get_users($from, $limit, $column, $direction)
$courseId = $courseInfo['real_id'];
if (CourseManager::is_user_subscribed_in_course($student_id, $course_code, true)) {
$avg_time_spent += Tracking::get_time_spent_on_the_course($student_id, $courseId, $_GET['id_session']);
$avg_time_spent += Tracking::get_time_spent_on_the_course(
$student_id,
$courseId,
$_GET['id_session']
);
$my_average = Tracking::get_avg_student_score($student_id, $course_code);
if (is_numeric($my_average)) {
$avg_student_score += $my_average;

Loading…
Cancel
Save