From 13ae07525a8212220d432aba38374795c24f2714 Mon Sep 17 00:00:00 2001 From: Christian Beeznest Date: Thu, 8 May 2025 11:32:05 -0500 Subject: [PATCH] Session: Use config-defined headers and order for Excel export - refs BT#22533 --- main/inc/lib/sessionmanager.lib.php | 53 +++++++++++++++++------------ main/session/resume_session.php | 11 +++--- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index d19f1816f11..829471ef1f5 100755 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -10159,6 +10159,10 @@ public static function exportCourseSessionReport(int $sessionId, string $courseC } $config = api_get_configuration_value('session_course_excel_export'); + if (empty($config)) { + die('Configuration not set.'); + } + $sessionFields = $config['session_fields'] ?? []; $userFieldsBefore = $config['user_fields_before'] ?? []; $userFieldsAfter = $config['user_fields_after'] ?? []; @@ -10168,14 +10172,8 @@ public static function exportCourseSessionReport(int $sessionId, string $courseC $header1[] = get_lang('StartDate'); $header1[] = get_lang('EndDate'); - $extraField = new ExtraFieldModel('session'); - $extraDefs = $extraField->get_all(); - $extraDefsByVariable = array_column($extraDefs, null, 'variable'); - - foreach ($sessionFields as $field) { - if (isset($extraDefsByVariable[$field])) { - $header1[] = $extraDefsByVariable[$field]['display_text'] ?? $field; - } + foreach ($sessionFields as $entry) { + $header1[] = $entry['header'] ?? ''; } // 2. SESSION DATA @@ -10187,24 +10185,27 @@ public static function exportCourseSessionReport(int $sessionId, string $courseC $sessionExtra = $extraValuesObj->getAllValuesByItem($sessionId); $sessionExtraMap = array_column($sessionExtra, 'value', 'variable'); - foreach ($sessionFields as $field) { - $value = $sessionExtraMap[$field] ?? ''; + foreach ($sessionFields as $entry) { + if (!empty($entry['field'])) { + $value = $sessionExtraMap[$entry['field']] ?? ''; + } else { + $value = ''; + } $row2[] = $value; } // 3. USER HEADER - $header3 = ['']; - $extraFieldUser = new ExtraFieldModel('user'); - $extraDefsUser = $extraFieldUser->get_all(); - $extraDefsByVariableUser = array_column($extraDefsUser, null, 'variable'); + $header3 = ['']; - foreach ($userFieldsBefore as $field) { - $header3[] = $extraDefsByVariableUser[$field]['display_text'] ?? $field; + foreach ($userFieldsBefore as $entry) { + $header3[] = $entry['header'] ?? ''; } + $header3[] = get_lang('FirstName'); $header3[] = get_lang('LastName'); - foreach ($userFieldsAfter as $field) { - $header3[] = $extraDefsByVariableUser[$field]['display_text'] ?? $field; + + foreach ($userFieldsAfter as $entry) { + $header3[] = $entry['header'] ?? ''; } // 4. USERS WITH CERTIFICATE @@ -10239,16 +10240,24 @@ public static function exportCourseSessionReport(int $sessionId, string $courseC $userExtra = $userExtraObj->getAllValuesByItem($userId); $userExtraMap = array_column($userExtra, 'value', 'variable'); - foreach ($userFieldsBefore as $field) { - $value = $userExtraMap[$field] ?? ''; + foreach ($userFieldsBefore as $entry) { + if (!empty($entry['field'])) { + $value = $userExtraMap[$entry['field']] ?? ''; + } else { + $value = ''; + } $row[] = $value; } $row[] = $userInfo['firstname']; $row[] = $userInfo['lastname']; - foreach ($userFieldsAfter as $field) { - $value = $userExtraMap[$field] ?? ''; + foreach ($userFieldsAfter as $entry) { + if (!empty($entry['field'])) { + $value = $userExtraMap[$entry['field']] ?? ''; + } else { + $value = ''; + } $row[] = $value; } diff --git a/main/session/resume_session.php b/main/session/resume_session.php index 56a5330b6ee..8a293ce986c 100644 --- a/main/session/resume_session.php +++ b/main/session/resume_session.php @@ -300,10 +300,13 @@ $codePath."user/user_export.php?file_type=csv&course_session={$course->getCode()}:$sessionId&addcsvheader=1" ); - $courseItem .= Display::url( - Display::return_icon('excel.png', get_lang('ExportCertifiedUsersExcel')), - api_get_self()."?id_session=$sessionId&action=export_certified_course_users&course_code=".$course->getCode() - ); + $config = api_get_configuration_value('session_course_excel_export'); + if (!empty($config)) { + $courseItem .= Display::url( + Display::return_icon('excel.png', get_lang('ExportCertifiedUsersExcel')), + api_get_self()."?id_session=$sessionId&action=export_certified_course_users&course_code=".$course->getCode() + ); + } $courseItem .= Display::url( Display::return_icon('statistics.gif', get_lang('Tracking')),