Minor - improve getAllUsersFromCoursesFromAllSessionFromStatus query

pull/3138/head
Julio Montoya 6 years ago
parent 2d36a9ba60
commit cfdcc6472b
  1. 46
      main/inc/lib/sessionmanager.lib.php

@ -6050,13 +6050,6 @@ class SessionManager
$direction = in_array(strtolower($direction), ['asc', 'desc']) ? $direction : 'asc'; $direction = in_array(strtolower($direction), ['asc', 'desc']) ? $direction : 'asc';
$column = Database::escape_string($column); $column = Database::escape_string($column);
$limitCondition = '';
if (isset($from) && isset($numberItems)) {
$from = (int) $from;
$numberItems = (int) $numberItems;
$limitCondition = "LIMIT $from, $numberItems";
}
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$sessionConditions = ''; $sessionConditions = '';
@ -6097,34 +6090,34 @@ class SessionManager
} }
switch ($status) { switch ($status) {
case 'admin':
case 'drh': case 'drh':
break; break;
case 'drh_all': case 'drh_all':
// Show all by DRH // Show all by DRH
if (empty($sessionIdList)) { if (empty($sessionIdList)) {
$sessionsListSql = self::get_sessions_followed_by_drh( $sessionListFollowed = self::get_sessions_followed_by_drh(
$userId, $userId,
null, null,
null, null,
false, false,
true,
true true
); );
} else {
if (!empty($sessionListFollowed)) {
$sessionIdList = array_column($sessionListFollowed, 'id');
}
}
if (!empty($sessionIdList)) {
$sessionIdList = array_map('intval', $sessionIdList); $sessionIdList = array_map('intval', $sessionIdList);
$sessionsListSql = "'".implode("','", $sessionIdList)."'"; $sessionsListSql = "'".implode("','", $sessionIdList)."'";
}
if (!empty($sessionsListSql)) {
$sessionConditions = " AND s.id IN ($sessionsListSql) "; $sessionConditions = " AND s.id IN ($sessionsListSql) ";
} }
break;
case 'session_admin':
$sessionConditions = " AND s.id_coach = $userId ";
$userConditionsFromDrh = '';
break;
case 'admin':
break; break;
case 'teacher': case 'teacher':
case 'session_admin':
$sessionConditions = " AND s.id_coach = $userId "; $sessionConditions = " AND s.id_coach = $userId ";
$userConditionsFromDrh = ''; $userConditionsFromDrh = '';
break; break;
@ -6177,19 +6170,19 @@ class SessionManager
$sql = "$masterSelect ( $sql = "$masterSelect (
($select ($select
FROM $tbl_session s FROM $tbl_session s
INNER JOIN $tbl_session_rel_access_url url ON (url.session_id = s.id)
INNER JOIN $tbl_session_rel_course_rel_user su ON (s.id = su.session_id) INNER JOIN $tbl_session_rel_course_rel_user su ON (s.id = su.session_id)
INNER JOIN $tbl_user u ON (u.user_id = su.user_id) INNER JOIN $tbl_user u ON (u.user_id = su.user_id)
INNER JOIN $tbl_session_rel_access_url url ON (url.session_id = s.id)
$where $where
$sessionConditions $sessionConditions
$userConditionsFromDrh $userConditionsFromDrh
) UNION ( ) UNION (
$select $select
FROM $tbl_course c FROM $tbl_course c
INNER JOIN $tbl_course_rel_access_url url ON (url.c_id = c.id)
INNER JOIN $tbl_course_user cu ON (cu.c_id = c.id) INNER JOIN $tbl_course_user cu ON (cu.c_id = c.id)
INNER JOIN $tbl_user u ON (u.user_id = cu.user_id) INNER JOIN $tbl_user u ON (u.user_id = cu.user_id)
INNER JOIN $tbl_course_rel_access_url url ON (url.c_id = c.id)
$where $where
$courseConditions $courseConditions
$userConditionsFromDrh $userConditionsFromDrh
@ -6213,11 +6206,18 @@ class SessionManager
$column = str_replace('u.', '', $column); $column = str_replace('u.', '', $column);
$sql .= " ORDER BY $column $direction "; $sql .= " ORDER BY $column $direction ";
} }
$limitCondition = '';
if (isset($from) && isset($numberItems)) {
$from = (int) $from;
$numberItems = (int) $numberItems;
$limitCondition = "LIMIT $from, $numberItems";
}
$sql .= $limitCondition; $sql .= $limitCondition;
$result = Database::query($sql); $result = Database::query($sql);
$result = Database::store_result($result);
return $result; return Database::store_result($result);
} }
/** /**

Loading…
Cancel
Save