Fix query, if drh_can_access_all_session_content is on, still get the users related to a drh

pull/2487/head
jmontoyaa 9 years ago
parent da1513ecb8
commit 11305afcfb
  1. 30
      main/inc/lib/sessionmanager.lib.php
  2. 2
      main/inc/lib/usermanager.lib.php
  3. 4
      main/mySpace/users.php

@ -5099,6 +5099,7 @@ class SessionManager
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
@ -5116,6 +5117,7 @@ class SessionManager
} }
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$sessionConditions = null; $sessionConditions = null;
$courseConditions = null; $courseConditions = null;
$userConditions = null; $userConditions = null;
@ -5132,8 +5134,8 @@ class SessionManager
$courseConditions = ' AND c.id IN ("'.implode('","', $courseIdList).'")'; $courseConditions = ' AND c.id IN ("'.implode('","', $courseIdList).'")';
} }
switch ($status) { $userConditionsFromDrh = '';
case 'drh':
// Classic DRH // Classic DRH
if (empty($studentIdList)) { if (empty($studentIdList)) {
$studentListSql = UserManager::get_users_followed_by_drh( $studentListSql = UserManager::get_users_followed_by_drh(
@ -5149,8 +5151,11 @@ class SessionManager
$studentListSql = "'".implode("','", $studentIdList)."'"; $studentListSql = "'".implode("','", $studentIdList)."'";
} }
if (!empty($studentListSql)) { if (!empty($studentListSql)) {
$userConditions = " AND u.user_id IN (".$studentListSql.") "; $userConditionsFromDrh = " AND u.user_id IN (".$studentListSql.") ";
} }
switch ($status) {
case 'drh':
break; break;
case 'drh_all': case 'drh_all':
// Show all by DRH // Show all by DRH
@ -5171,13 +5176,15 @@ class SessionManager
$sessionConditions = " AND s.id IN (".$sessionsListSql.") "; $sessionConditions = " AND s.id IN (".$sessionsListSql.") ";
} }
break; break;
case 'session_admin'; case 'session_admin':
$sessionConditions = " AND s.id_coach = $userId "; $sessionConditions = " AND s.id_coach = $userId ";
$userConditionsFromDrh = '';
break; break;
case 'admin': case 'admin':
break; break;
case 'teacher': case 'teacher':
$sessionConditions = " AND s.id_coach = $userId "; $sessionConditions = " AND s.id_coach = $userId ";
$userConditionsFromDrh = '';
break; break;
} }
@ -5214,6 +5221,18 @@ class SessionManager
$userConditions $userConditions
"; ";
$userUnion = '';
if (!empty($userConditionsFromDrh)) {
$userUnion = "
UNION (
$select
FROM $tbl_user u
INNER JOIN $tbl_user_rel_access_url url ON (url.user_id = u.id)
$where
$userConditionsFromDrh
)";
}
$sql = "$masterSelect ( $sql = "$masterSelect (
($select ($select
FROM $tbl_session s FROM $tbl_session s
@ -5230,7 +5249,7 @@ class SessionManager
INNER JOIN $tbl_course_rel_access_url url ON (url.c_id = c.id) INNER JOIN $tbl_course_rel_access_url url ON (url.c_id = c.id)
$where $where
$courseConditions $courseConditions
) ) $userUnion
) as t1 ) as t1
"; ";
@ -5250,7 +5269,6 @@ class SessionManager
} }
$sql .= $limitCondition; $sql .= $limitCondition;
$result = Database::query($sql); $result = Database::query($sql);
$result = Database::store_result($result); $result = Database::store_result($result);

@ -4277,6 +4277,7 @@ class UserManager
} }
$orderBy = null; $orderBy = null;
if ($getOnlyUserId == false) {
if (api_is_western_name_order()) { if (api_is_western_name_order()) {
$orderBy .= " ORDER BY firstname, lastname "; $orderBy .= " ORDER BY firstname, lastname ";
} else { } else {
@ -4288,6 +4289,7 @@ class UserManager
$column = str_replace('u.', '', $column); $column = str_replace('u.', '', $column);
$orderBy = " ORDER BY $column $direction "; $orderBy = " ORDER BY $column $direction ";
} }
}
$sql .= $orderBy; $sql .= $orderBy;
$sql .= $limitCondition; $sql .= $limitCondition;

@ -76,7 +76,7 @@ function get_users($from, $limit, $column, $direction)
false, false,
$from, $from,
$limit, $limit,
$column, '',
$direction, $direction,
$keyword, $keyword,
$active, $active,
@ -98,7 +98,7 @@ function get_users($from, $limit, $column, $direction)
false, false,
$from, $from,
$limit, $limit,
$column, '',
$direction, $direction,
$active, $active,
$lastConnectionDate, $lastConnectionDate,

Loading…
Cancel
Save