COURSEMANAGER and SESSIONADMIN can be course teachers - refs BT#20094

pull/4364/head
Angel Fernando Quiroz Campos 3 years ago
parent 17a963fcee
commit 3461886c46
  1. 2
      main/inc/ajax/user_manager.ajax.php
  2. 5
      main/inc/lib/sessionmanager.lib.php
  3. 26
      main/user/subscribe_user.php
  4. 7
      main/user/user.php

@ -395,7 +395,7 @@ switch ($action) {
} }
$qb $qb
->andWhere('u.status != '.DRH.' AND u.status != '.ANONYMOUS) ->andWhere('u.status = '.COURSEMANAGER)
->orderBy( ->orderBy(
$sortByFirstName $sortByFirstName
? 'u.firstname, u.firstname' ? 'u.firstname, u.firstname'

@ -3490,9 +3490,10 @@ class SessionManager
$tblSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tblSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tblUser = Database::get_main_table(TABLE_MAIN_USER); $tblUser = Database::get_main_table(TABLE_MAIN_USER);
$allowedTeachers = implode(',', [COURSEMANAGER, SESSIONADMIN]);
// check if user is a teacher // check if user is a teacher
$sql = "SELECT * FROM $tblUser $sql = "SELECT * FROM $tblUser WHERE status IN ($allowedTeachers) AND user_id = $userId";
WHERE status = 1 AND user_id = $userId";
$rsCheckUser = Database::query($sql); $rsCheckUser = Database::query($sql);

@ -331,6 +331,8 @@ function get_number_of_users()
if (isset($_REQUEST['type']) && $_REQUEST['type'] == COURSEMANAGER) { if (isset($_REQUEST['type']) && $_REQUEST['type'] == COURSEMANAGER) {
if (api_get_session_id() != 0) { if (api_get_session_id() != 0) {
$allowedRoles = implode(',', [COURSEMANAGER, SESSIONADMIN]);
$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
@ -340,7 +342,7 @@ function get_number_of_users()
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 ($allowedRoles) 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()) {
@ -358,17 +360,19 @@ function get_number_of_users()
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 ($allowedRoles) AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) (u.official_code <> 'ADMIN' OR u.official_code IS NULL)
"; ";
} }
} }
} else { } else {
$allowedRoles = implode(',', [COURSEMANAGER]);
$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='".api_get_course_int_id()."'
WHERE cu.user_id IS NULL AND u.status<>".DRH." "; WHERE cu.user_id IS NULL AND u.status IN ($allowedRoles)";
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();
@ -381,7 +385,7 @@ function get_number_of_users()
ON u.id = cu.user_id AND c_id='".api_get_course_int_id()."' ON u.id = cu.user_id AND c_id='".api_get_course_int_id()."'
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 ($allowedRoles) AND access_url_id= $url_access_id ";
} }
} }
} }
@ -550,6 +554,8 @@ function get_user_data($from, $number_of_items, $column, $direction)
if (isset($_REQUEST['type']) && $_REQUEST['type'] == COURSEMANAGER) { if (isset($_REQUEST['type']) && $_REQUEST['type'] == COURSEMANAGER) {
// adding a teacher through a session // adding a teacher through a session
if (!empty($sessionId)) { if (!empty($sessionId)) {
$allowedRoles = implode(',', [COURSEMANAGER, SESSIONADMIN]);
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
@ -571,15 +577,17 @@ function get_user_data($from, $number_of_items, $column, $direction)
ON field_values.item_id = u.user_id ON field_values.item_id = u.user_id
WHERE WHERE
cu.user_id IS NULL AND cu.user_id IS NULL AND
u.status = 1 AND u.status IN ($allowedRoles) AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL) 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=1 AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL) "; $sql .= "WHERE cu.user_id IS NULL AND u.status IN ($allowedRoles) AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
} }
$sql .= " AND access_url_id = $url_access_id"; $sql .= " AND access_url_id = $url_access_id";
} else { } else {
$allowedRoles = implode(',', [COURSEMANAGER]);
// adding a teacher NOT through a session // adding a teacher NOT through a session
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
@ -595,7 +603,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
LEFT JOIN $table_user_field_values field_values LEFT JOIN $table_user_field_values field_values
ON field_values.item_id = u.user_id ON field_values.item_id = u.user_id
WHERE WHERE
cu.user_id IS NULL AND u.status<>".DRH." AND cu.user_id IS NULL AND u.status IN ($allowedRoles) 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 {
@ -623,11 +631,11 @@ function get_user_data($from, $number_of_items, $column, $direction)
ON field_values.item_id = u.user_id ON field_values.item_id = u.user_id
WHERE WHERE
cu.user_id IS NULL AND cu.user_id IS NULL AND
u.status<>".DRH." AND u.status IN ($allowedRoles) 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 ($allowedRoles) AND access_url_id= $url_access_id ";
} }
} }
} }

@ -11,6 +11,9 @@
* @author Roan Embrechts * @author Roan Embrechts
* @author Julio Montoya, Several fixes * @author Julio Montoya, Several fixes
*/ */
use Chamilo\CoreBundle\Entity\Session;
$use_anonymous = true; $use_anonymous = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$current_course_tool = TOOL_USER; $current_course_tool = TOOL_USER;
@ -683,9 +686,9 @@ function get_number_of_users()
$status = $type; $status = $type;
} else { } else {
if ($type == COURSEMANAGER) { if ($type == COURSEMANAGER) {
$status = 2; $status = Session::COACH;
} else { } else {
$status = 0; $status = Session::STUDENT;
} }
} }

Loading…
Cancel
Save