Upgrade 1-11.38

This commit is contained in:
xesmyd
2026-03-30 14:10:30 +02:00
parent f2a7e6d1fc
commit ac648ef29d
24665 changed files with 69682 additions and 2205004 deletions
+37 -12
View File
@@ -2052,6 +2052,22 @@ class SessionManager
$course_list[] = $row['c_id'];
}
// Build list of users already subscribed to the session as students.
// This allows us to avoid re-enrolling them into all courses again
// when they are already part of the session (preserves manual
// unsubscriptions at the course level).
$usersAlreadyInSession = [];
if (!empty($userList)) {
$userIdsStr = "'".implode("','", $userList)."'";
$sql = "SELECT user_id FROM $tbl_session_rel_user
WHERE session_id = $sessionId AND relation_type = 0
AND user_id IN ($userIdsStr)";
$resUsersInSession = Database::query($sql);
while ($row = Database::fetch_array($resUsersInSession)) {
$usersAlreadyInSession[] = (int) $row['user_id'];
}
}
if ($session->getSendSubscriptionNotification() &&
is_array($userList)
) {
@@ -2154,8 +2170,8 @@ class SessionManager
$usersToSubscribeInCourse = array_filter(
$userList,
function ($userId) use ($existingUsers) {
return !in_array($userId, $existingUsers);
function ($userId) use ($existingUsers, $usersAlreadyInSession) {
return !in_array($userId, $existingUsers) && !in_array($userId, $usersAlreadyInSession);
}
);
@@ -3277,7 +3293,8 @@ class SessionManager
$from = null,
$to = null,
$urlId = 0,
$onlyThisSessionList = []
$onlyThisSessionList = [],
$includeSessionWithNoCourse = false
) {
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$session_category_table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
@@ -3287,6 +3304,12 @@ class SessionManager
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$urlId = empty($urlId) ? api_get_current_access_url_id() : (int) $urlId;
$return_array = [];
$courseFrom = "LEFT JOIN ".$session_course_table." sco ON (sco.session_id = s.id)
INNER JOIN ".$course_table." c ON sco.c_id = c.id";
if ($includeSessionWithNoCourse) {
$courseFrom = "";
}
$sql_query = " SELECT
DISTINCT(s.id),
@@ -3302,8 +3325,7 @@ class SessionManager
INNER JOIN $user_table u ON s.id_coach = u.user_id
INNER JOIN $table_access_url_rel_session ar ON ar.session_id = s.id
LEFT JOIN $session_category_table sc ON s.session_category_id = sc.id
LEFT JOIN $session_course_table sco ON (sco.session_id = s.id)
INNER JOIN $course_table c ON sco.c_id = c.id
$courseFrom
WHERE ar.access_url_id = $urlId ";
$availableFields = [
@@ -5987,9 +6009,9 @@ class SessionManager
* @param int $sessionId
* @param int $courseId
*
* @return array
* @return array<int, int>
*/
public static function getCoachesByCourseSession($sessionId, $courseId)
public static function getCoachesByCourseSession($sessionId, $courseId): array
{
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sessionId = (int) $sessionId;
@@ -6005,7 +6027,7 @@ class SessionManager
$coaches = [];
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) {
$coaches[] = $row['user_id'];
$coaches[] = (int) $row['user_id'];
}
}
@@ -10047,9 +10069,9 @@ class SessionManager
}
// 2. SESSION DATA
$row2 = [$courseInfo['title']];
$row2[] = $sessionInfo['access_start_date'];
$row2[] = $sessionInfo['access_end_date'];
$row2 = $config['course_field_value'] ? [$config['course_field_value']] : [$courseInfo['title']];
$row2[] = (new DateTime($sessionInfo['access_start_date']))->format('d/m/Y');
$row2[] = (new DateTime($sessionInfo['access_end_date']))->format('d/m/Y');
$extraValuesObj = new ExtraFieldValue('session');
$sessionExtra = $extraValuesObj->getAllValuesByItem($sessionId);
@@ -10058,6 +10080,9 @@ class SessionManager
foreach ($sessionFields as $entry) {
if (!empty($entry['field'])) {
$value = $sessionExtraMap[$entry['field']] ?? '';
if (!empty($entry['numberOfLetter']) && $entry['numberOfLetter'] > 0) {
$value = mb_substr($value, 0, $entry['numberOfLetter']);
}
} else {
$value = '';
}
@@ -10104,7 +10129,7 @@ class SessionManager
$userInfo = api_get_user_info($userId);
$row = [];
$row[] = $rowIndex === 0 ? get_lang('Learners') : '';
$row[] = get_lang('Learners');
$userExtraObj = new ExtraFieldValue('user');
$userExtra = $userExtraObj->getAllValuesByItem($userId);