From 11305afcfb9c38e19fbab50a6d7cf5678648b61c Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Wed, 14 Sep 2016 14:05:00 +0200 Subject: [PATCH] Fix query, if drh_can_access_all_session_content is on, still get the users related to a drh --- main/inc/lib/sessionmanager.lib.php | 58 +++++++++++++++++++---------- main/inc/lib/usermanager.lib.php | 20 +++++----- main/mySpace/users.php | 4 +- 3 files changed, 51 insertions(+), 31 deletions(-) diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index b3869beed8..c5d5c8c1f0 100755 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -5099,6 +5099,7 @@ class SessionManager $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $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_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); @@ -5116,6 +5117,7 @@ class SessionManager } $urlId = api_get_current_access_url_id(); + $sessionConditions = null; $courseConditions = null; $userConditions = null; @@ -5132,25 +5134,28 @@ class SessionManager $courseConditions = ' AND c.id IN ("'.implode('","', $courseIdList).'")'; } + $userConditionsFromDrh = ''; + + // Classic DRH + if (empty($studentIdList)) { + $studentListSql = UserManager::get_users_followed_by_drh( + $userId, + $filterByStatus, + true, + false + ); + $studentIdList = array_keys($studentListSql); + $studentListSql = "'".implode("','", $studentIdList)."'"; + } else { + $studentIdList = array_map('intval', $studentIdList); + $studentListSql = "'".implode("','", $studentIdList)."'"; + } + if (!empty($studentListSql)) { + $userConditionsFromDrh = " AND u.user_id IN (".$studentListSql.") "; + } + switch ($status) { case 'drh': - // Classic DRH - if (empty($studentIdList)) { - $studentListSql = UserManager::get_users_followed_by_drh( - $userId, - $filterByStatus, - true, - false - ); - $studentIdList = array_keys($studentListSql); - $studentListSql = "'".implode("','", $studentIdList)."'"; - } else { - $studentIdList = array_map('intval', $studentIdList); - $studentListSql = "'".implode("','", $studentIdList)."'"; - } - if (!empty($studentListSql)) { - $userConditions = " AND u.user_id IN (".$studentListSql.") "; - } break; case 'drh_all': // Show all by DRH @@ -5171,13 +5176,15 @@ class SessionManager $sessionConditions = " AND s.id IN (".$sessionsListSql.") "; } break; - case 'session_admin'; + case 'session_admin': $sessionConditions = " AND s.id_coach = $userId "; + $userConditionsFromDrh = ''; break; case 'admin': break; case 'teacher': $sessionConditions = " AND s.id_coach = $userId "; + $userConditionsFromDrh = ''; break; } @@ -5214,6 +5221,18 @@ class SessionManager $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 ( ($select FROM $tbl_session s @@ -5230,7 +5249,7 @@ class SessionManager INNER JOIN $tbl_course_rel_access_url url ON (url.c_id = c.id) $where $courseConditions - ) + ) $userUnion ) as t1 "; @@ -5250,7 +5269,6 @@ class SessionManager } $sql .= $limitCondition; - $result = Database::query($sql); $result = Database::store_result($result); diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 4a96f4fc75..77460c1e0b 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -4277,16 +4277,18 @@ class UserManager } $orderBy = null; - if (api_is_western_name_order()) { - $orderBy .= " ORDER BY firstname, lastname "; - } else { - $orderBy .= " ORDER BY lastname, firstname "; - } + if ($getOnlyUserId == false) { + if (api_is_western_name_order()) { + $orderBy .= " ORDER BY firstname, lastname "; + } else { + $orderBy .= " ORDER BY lastname, firstname "; + } - if (!empty($column) && !empty($direction)) { - // Fixing order due the UNIONs - $column = str_replace('u.', '', $column); - $orderBy = " ORDER BY $column $direction "; + if (!empty($column) && !empty($direction)) { + // Fixing order due the UNIONs + $column = str_replace('u.', '', $column); + $orderBy = " ORDER BY $column $direction "; + } } $sql .= $orderBy; diff --git a/main/mySpace/users.php b/main/mySpace/users.php index 32a761a571..029a9d8229 100755 --- a/main/mySpace/users.php +++ b/main/mySpace/users.php @@ -76,7 +76,7 @@ function get_users($from, $limit, $column, $direction) false, $from, $limit, - $column, + '', $direction, $keyword, $active, @@ -98,7 +98,7 @@ function get_users($from, $limit, $column, $direction) false, $from, $limit, - $column, + '', $direction, $active, $lastConnectionDate,