Internal: Restrict forum notifications to session participants - refs BT#21550

pull/5405/head
christianbeeznst 1 year ago
parent 886e7c00c9
commit 12ff1b7074
  1. 13
      public/main/forum/forumfunction.inc.php

@ -4293,7 +4293,7 @@ function set_notification($content, $id, $addOnly = false, $userInfo = [], $cour
* *
* @since May 2008, dokeos 1.8.5 * @since May 2008, dokeos 1.8.5
*/ */
function get_notifications($content, $id) function get_notifications(string $content, int $id): array
{ {
// Database table definition // Database table definition
$table_users = Database::get_main_table(TABLE_MAIN_USER); $table_users = Database::get_main_table(TABLE_MAIN_USER);
@ -4306,14 +4306,21 @@ function get_notifications($content, $id)
$field = 'forum_id'; $field = 'forum_id';
} }
$id = (int) $id; $sessionId = api_get_session_id();
$conditionSession = "";
if (!empty($sessionId)) {
$users = SessionManager::getUsersByCourseSession($sessionId, api_get_course_info());
if (!empty($users)) {
$conditionSession = " AND user.id IN(".implode(',', $users).")";
}
}
$sql = "SELECT user.id as user_id, user.firstname, user.lastname, user.email, user.id user $sql = "SELECT user.id as user_id, user.firstname, user.lastname, user.email, user.id user
FROM $table_users user, $table_notification notification FROM $table_users user, $table_notification notification
WHERE WHERE
notification.c_id = $course_id AND user.active = 1 AND notification.c_id = $course_id AND user.active = 1 AND
user.id = notification.user_id AND user.id = notification.user_id AND
notification.$field = $id "; notification.$field = $id $conditionSession";
$result = Database::query($sql); $result = Database::query($sql);
$return = []; $return = [];

Loading…
Cancel
Save