Forum: Include all coaches in session notifications - refs BT#21550

pull/5426/head
christianbeeznst 1 year ago
parent ba4db014e8
commit f1c16adf45
  1. 7
      public/main/forum/forumfunction.inc.php
  2. 39
      public/main/inc/lib/sessionmanager.lib.php

@ -4362,7 +4362,12 @@ function send_notifications(CForum $forum, CForumThread $thread, $post_id = 0)
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications');
if (1 === $subscribe) {
$users_to_be_notified = CourseManager::get_user_list_from_course_code(api_get_course_id(), api_get_session_id());
$sessionId = api_get_session_id();
if (!empty($sessionId)) {
$users_to_be_notified = SessionManager::getAllUserIdsInSession($sessionId);
} else {
$users_to_be_notified = CourseManager::get_user_list_from_course_code(api_get_course_id());
}
}
if (is_array($users_to_be_notified)) {

@ -10104,4 +10104,43 @@ class SessionManager
return in_array($userId, $adminIds);
}
/**
* Retrieves all user IDs associated with a session including coaches and students.
*
* @param int $sessionId The session ID.
* @return array An array of user IDs.
*/
public static function getAllUserIdsInSession(int $sessionId): array
{
$users = [];
$session = api_get_session_entity($sessionId);
if ($session) {
$courses = $session->getCourses();
if (!empty($courses)) {
foreach ($courses as $sessionRelCourse) {
$course = $sessionRelCourse->getCourse();
$coachSubscriptions = $session->getSessionRelCourseRelUsersByStatus($course, Session::COURSE_COACH);
foreach ($coachSubscriptions as $coachSubscription) {
$users[]['user_id'] = $coachSubscription->getUser()->getId();
}
$userCourseSubscriptions = $session->getSessionRelCourseRelUsersByStatus($course, Session::STUDENT);
foreach ($userCourseSubscriptions as $courseSubscription) {
$users[]['user_id'] = $courseSubscription->getUser()->getId();
}
}
}
$generalCoachesId = self::getGeneralCoachesIdForSession($sessionId);
if (!empty($generalCoachesId)) {
foreach ($generalCoachesId as $generalCoachId) {
$users[]['user_id'] = $generalCoachId;
}
}
}
return $users;
}
}

Loading…
Cancel
Save