diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 0b2d8fe0bd..468e29ca20 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -8118,9 +8118,11 @@ class TrackingCourseLog } /** + * @param array $exclude Extra fields to be skipped, by ID + * * @return string */ - public static function display_additional_profile_fields() + public static function display_additional_profile_fields($exclude = []) { // getting all the extra profile fields that are defined by the platform administrator $extra_fields = UserManager::get_extra_fields(0, 50, 5, 'ASC'); @@ -8134,6 +8136,10 @@ class TrackingCourseLog $return .= ''; $extra_fields_to_show = 0; foreach ($extra_fields as $key => $field) { + // exclude extra profile fields by id + if (in_array($field[0], $exclude)) { + continue; + } // show only extra fields that are visible + and can be filtered, added by J.Montoya if ($field[6] == 1 && $field[8] == 1) { if (isset($_GET['additional_profile_field']) && $field[0] == $_GET['additional_profile_field']) { @@ -8692,6 +8698,25 @@ class TrackingCourseLog } } + $data = Session::read('default_additional_user_profile_info'); + $defaultExtraFieldInfo = Session::read('default_extra_field_info'); + if (isset($defaultExtraFieldInfo) && isset($data)) { + foreach ($data as $clave => $val) { + if (isset($val[$user['user_id']])) { + if (is_array($val[$user['user_id']])) { + $user_row[$defaultExtraFieldInfo[$clave]['variable']] = implode( + ', ', + $val[$user['user_id']] + ); + } else { + $user_row[$defaultExtraFieldInfo[$clave]['variable']] = $val[$user['user_id']]; + } + } else { + $user_row[$defaultExtraFieldInfo[$clave]['variable']] = ''; + } + } + } + if (api_get_setting('show_email_addresses') === 'true') { $user_row['email'] = $user['col4']; } @@ -8717,6 +8742,8 @@ class TrackingCourseLog Session::erase('additional_user_profile_info'); Session::erase('extra_field_info'); + Session::erase('default_additional_user_profile_info'); + Session::erase('default_extra_field_info'); Session::write('user_id_list', $userIdList); return $users; diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index e14cc6ffcc..b77cab3743 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -221,6 +221,12 @@ $_configuration['system_stable'] = NEW_VERSION_STABLE; //); // Course log - Default columns to hide //$_configuration['course_log_hide_columns'] = ['columns' => [1, 9]]; +// Course log - User extra fields to show as columns for default +// For example, to show as a default column the user extra field with id 15 and 37 on site 1: +// [1 => [15, 37]]; +// Same config plus site 3 and extra fields with id 53 and 55: +// [1 => [15, 37], 2 => [53, 55]]; +//$_configuration['course_log_default_extra_fields'] = [1 => []]; // Unoconv binary file //$_configuration['unoconv.binaries'] = '/usr/bin/unoconv'; // Proxy settings for access external services diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index 7d6a1a1223..0386614a48 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -206,6 +206,32 @@ if (isset($_GET['additional_profile_field'])) { Session::write('additional_user_profile_info', $userProfileInfo); Session::write('extra_field_info', $extra_info); +$defaultExtraFields = []; +$defaultExtraFieldsFromSettings = []; +$defaultExtraFieldsFromSettings = api_get_configuration_value('course_log_default_extra_fields'); +if (isset($defaultExtraFieldsFromSettings)) { + $default_extra_fields = $defaultExtraFieldsFromSettings; + $defaultExtraInfo = []; + $defaultUserProfileInfo = []; + + $user_array = []; + foreach ($studentList as $key => $item) { + $user_array[] = $key; + } + + foreach ($default_extra_fields as $fieldId) { + // Fetching only the user that are loaded NOT ALL user in the portal. + $defaultUserProfileInfo[$fieldId] = TrackingCourseLog::getAdditionalProfileInformationOfFieldByUser( + $fieldId, + $user_array + ); + $defaultExtraInfo[$fieldId] = UserManager::get_extra_field_information($fieldId); + } + + Session::write('default_additional_user_profile_info', $defaultUserProfileInfo); + Session::write('default_extra_field_info', $defaultExtraInfo); +} + Display::display_header($nameTools, 'Tracking'); $actionsLeft = TrackingCourseLog::actionsLeft('users', $sessionId); @@ -589,7 +615,7 @@ if ($nbStudents > 0) { Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), '', ICON_SIZE_SMALL). get_lang('ExportAsCSV') .' '); - $extraFieldSelect = TrackingCourseLog::display_additional_profile_fields(); + $extraFieldSelect = TrackingCourseLog::display_additional_profile_fields($default_extra_fields); if (!empty($extraFieldSelect)) { $html .= $extraFieldSelect; } @@ -745,6 +771,13 @@ if ($nbStudents > 0) { $parameters['additional_profile_field'] = $fieldId; } } + if (isset($default_extra_fields)) { + foreach ($defaultExtraInfo as $field) { + $table->set_header($counter, $field['display_text'], false); + $headers[$field['variable']] = $field['display_text']; + $counter++; + } + } $table->set_header($counter, get_lang('Details'), false); $headers['Details'] = get_lang('Details');