User: Fix filter in list of users in teachers' subscription to a course - refs BT#19044

pull/4014/head^2
Yannick Warnier 4 years ago
parent a88d70c4d8
commit 42d2b21e4a
  1. 59
      public/main/user/subscribe_user.php

@ -179,7 +179,7 @@ switch ($type) {
} }
$actionsLeft = Display::url( $actionsLeft = Display::url(
Display::return_icon('back.png', get_lang('Back'), '', ICON_SIZE_MEDIUM), Display::getMdiIcon('arrow-left-bold-box', 'ch-tool-icon', null, '32', get_lang('Back')),
$url $url
); );
@ -229,19 +229,20 @@ function get_number_of_users()
$courseCode = api_get_course_id(); $courseCode = api_get_course_id();
$sessionId = api_get_session_id(); $sessionId = api_get_session_id();
$courseId = api_get_course_int_id();
if (isset($_REQUEST['type']) && 'teacher' === $_REQUEST['type']) { if (isset($_REQUEST['type']) && COURSEMANAGER === $_REQUEST['type']) {
if (0 != api_get_session_id()) { if (0 != api_get_session_id()) {
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
ON ON
u.id = cu.user_id AND u.id = cu.user_id AND
c_id = '".api_get_course_int_id()."' AND c_id = $courseId AND
session_id ='".$sessionId."' session_id = $sessionId
WHERE WHERE
cu.user_id IS NULL AND cu.user_id IS NULL AND
u.status = 1 AND u.status IN (1,3,10,11,12,13,16) AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) "; (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
if (api_is_multiple_url_enabled()) { if (api_is_multiple_url_enabled()) {
@ -252,14 +253,14 @@ function get_number_of_users()
FROM $user_table u FROM $user_table u
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
ON ON
u.id = cu.user_id AND cu.c_id = '".api_get_course_int_id()."' AND u.id = cu.user_id AND cu.c_id = $courseId AND
session_id ='".$sessionId."' session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ON (url_rel_user.user_id = u.id)
WHERE WHERE
cu.user_id IS NULL AND cu.user_id IS NULL AND
access_url_id = $url_access_id AND access_url_id = $url_access_id AND
u.status = 1 AND u.status IN (1,3,10,11,12,13,16) AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) (u.official_code <> 'ADMIN' OR u.official_code IS NULL)
"; ";
} }
@ -268,8 +269,8 @@ function get_number_of_users()
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id and c_id='".api_get_course_int_id()."' ON u.id = cu.user_id and c_id = $courseId
WHERE cu.user_id IS NULL AND u.status<>".DRH." "; WHERE cu.user_id IS NULL AND u.status in (1,3,10,11,12,13,16) ";
if (api_is_multiple_url_enabled()) { if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id(); $url_access_id = api_get_current_access_url_id();
@ -279,10 +280,12 @@ function get_number_of_users()
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id='".api_get_course_int_id()."' ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ON (url_rel_user.user_id = u.id)
WHERE cu.user_id IS NULL AND u.status<>".DRH." AND access_url_id= $url_access_id "; WHERE cu.user_id IS NULL
AND u.status IN (1,3,10,11,12,13,16)
AND access_url_id = $url_access_id ";
} }
} }
} }
@ -294,8 +297,8 @@ function get_number_of_users()
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
ON ON
u.id = cu.user_id AND u.id = cu.user_id AND
c_id='".api_get_course_int_id()."' AND c_id = $courseId AND
session_id ='".$sessionId."' session_id = $sessionId
WHERE WHERE
cu.user_id IS NULL AND cu.user_id IS NULL AND
u.status <> ".DRH." AND u.status <> ".DRH." AND
@ -310,8 +313,8 @@ function get_number_of_users()
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
ON ON
u.id = cu.user_id AND u.id = cu.user_id AND
c_id='".api_get_course_int_id()."' AND c_id = $courseId AND
session_id ='".$sessionId."' session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ON (url_rel_user.user_id = u.id)
WHERE WHERE
@ -325,7 +328,7 @@ function get_number_of_users()
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id='".api_get_course_int_id()."'"; ON u.id = cu.user_id AND c_id = $courseId";
// we change the SQL when we have a filter // we change the SQL when we have a filter
if (isset($_GET['subscribe_user_filter_value']) && if (isset($_GET['subscribe_user_filter_value']) &&
@ -354,7 +357,7 @@ function get_number_of_users()
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id='".api_get_course_int_id()."' ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ON (url_rel_user.user_id = u.id)
WHERE cu.user_id IS NULL AND access_url_id = $url_access_id AND u.status <> ".DRH." "; WHERE cu.user_id IS NULL AND access_url_id = $url_access_id AND u.status <> ".DRH." ";
@ -456,8 +459,8 @@ function get_user_data($from, $number_of_items, $column, $direction)
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
ON ON
u.id = cu.user_id AND u.id = cu.user_id AND
c_id ='".$courseId."' AND c_id = $courseId AND
session_id ='".$sessionId."' session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) "; ON (url_rel_user.user_id = u.id) ";
@ -485,7 +488,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id = '".$courseId."'"; ON u.id = cu.user_id AND c_id = $courseId";
// applying the filter of the additional user profile fields // applying the filter of the additional user profile fields
if (isset($_GET['subscribe_user_filter_value']) && if (isset($_GET['subscribe_user_filter_value']) &&
!empty($_GET['subscribe_user_filter_value']) && !empty($_GET['subscribe_user_filter_value']) &&
@ -500,7 +503,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
field_values.field_id = '".intval($field_identification[0])."' AND field_values.field_id = '".intval($field_identification[0])."' AND
field_values.value = '".Database::escape_string($field_identification[1])."'"; field_values.value = '".Database::escape_string($field_identification[1])."'";
} else { } else {
$sql .= "WHERE cu.user_id IS NULL AND u.status <> ".DRH." "; $sql .= " WHERE cu.user_id IS NULL AND u.status IN (1,3,10,11,12,13,16)";
} }
// adding a teacher NOT trough a session on a portal with multiple URLs // adding a teacher NOT trough a session on a portal with multiple URLs
@ -509,7 +512,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id and c_id='".$courseId."' ON u.id = cu.user_id and c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) "; ON (url_rel_user.user_id = u.id) ";
@ -524,11 +527,13 @@ function get_user_data($from, $number_of_items, $column, $direction)
ON field_values.item_id = u.id ON field_values.item_id = u.id
WHERE WHERE
cu.user_id IS NULL AND cu.user_id IS NULL AND
u.status<>".DRH." AND u.status IN (1,3,10,11,12,13,16) AND
field_values.field_id = '".intval($field_identification[0])."' AND field_values.field_id = '".intval($field_identification[0])."' AND
field_values.value = '".Database::escape_string($field_identification[1])."'"; field_values.value = '".Database::escape_string($field_identification[1])."'";
} else { } else {
$sql .= "WHERE cu.user_id IS NULL AND u.status <> ".DRH." AND access_url_id= $url_access_id "; $sql .= " WHERE cu.user_id IS NULL
AND u.status IN (1,3,10,11,12,13,16)
AND access_url_id = $url_access_id ";
} }
} }
} }
@ -600,7 +605,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id='".$courseId."' ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) "; ON (url_rel_user.user_id = u.id) ";
@ -666,7 +671,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
$from = (int) $from; $from = (int) $from;
$number_of_items = (int) $number_of_items; $number_of_items = (int) $number_of_items;
$sql .= " LIMIT $from, $number_of_items"; $sql .= " LIMIT $from, $number_of_items";
error_log($sql);
$res = Database::query($sql); $res = Database::query($sql);
$users = []; $users = [];
while ($user = Database::fetch_row($res)) { while ($user = Database::fetch_row($res)) {

Loading…
Cancel
Save