diff --git a/main/course_info/infocours.php b/main/course_info/infocours.php index ba5d9a2b97..6658473309 100755 --- a/main/course_info/infocours.php +++ b/main/course_info/infocours.php @@ -710,6 +710,26 @@ if ($allowLPReturnLink === 'true') { $form->addGroup($group, '', [get_lang('LpReturnLink')]); } +if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $group = [ + $form->createElement( + 'radio', + 'lp_show_max_or_average_progress', + null, + get_lang('LpMaxProgress'), + 'max' + ), + $form->createElement( + 'radio', + 'lp_show_max_or_average_progress', + null, + get_lang('LpAverageProgress'), + 'average' + ), + ]; + $form->addGroup($group, '', [get_lang('lpShowMaxProgressOrAverage')]); +} + $exerciseInvisible = api_get_setting('exercise_invisible_in_session'); $configureExerciseVisibility = api_get_setting('configure_exercise_visibility_in_course'); diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index a38c22961a..049c5530cb 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -5822,6 +5822,10 @@ class CourseManager $courseSettings[] = 'portfolio_max_score'; } + if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $courseSettings[] = 'lp_show_max_or_average_progress'; + } + if (!empty($pluginCourseSettings)) { $courseSettings = array_merge( $courseSettings, diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 517b25b671..8213526ca5 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -5237,7 +5237,6 @@ class Tracking if (!empty($session_id)) { $sessionCondition = " AND s.id = $session_id"; } - $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); // Get the list of sessions where the user is subscribed as student if (api_is_multiple_url_enabled()) { @@ -5345,6 +5344,13 @@ class Tracking foreach ($courses as $course_code => $course_title) { $courseInfo = api_get_course_info($course_code); $courseId = $courseInfo['real_id']; + $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); + if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $lpShowProgressCourseSetting = api_get_course_setting('lp_show_max_or_average_progress', $courseInfo, true); + if (in_array($lpShowProgressCourseSetting, ['max', 'average'])) { + $lpShowMaxProgress = ('max' === $lpShowProgressCourseSetting); + } + } $total_time_login = self::get_time_spent_on_the_course( $user_id, @@ -8977,6 +8983,14 @@ class TrackingCourseLog } } + $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); + if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $lpShowProgressCourseSetting = api_get_course_setting('lp_show_max_or_average_progress', $courseInfo, true); + if (in_array($lpShowProgressCourseSetting, ['max', 'average'])) { + $lpShowMaxProgress = ('max' === $lpShowProgressCourseSetting); + } + } + while ($user = Database::fetch_array($res, 'ASSOC')) { $userIdList[] = $user['user_id']; $user['official_code'] = $user['col0']; @@ -9006,7 +9020,6 @@ class TrackingCourseLog true ); - $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); $avg_student_progress = Tracking::get_avg_student_progress( $user['user_id'], $course_code, diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index ff3103d61f..a723341922 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -492,6 +492,8 @@ ALTER TABLE sys_announcement ADD COLUMN visible_boss INT DEFAULT 0; //$_configuration['lp_category_accordion'] = false; // Show the best progress instead of averages in reporting of learnpaths // $_configuration['lp_show_max_progress_instead_of_average'] = false; +// Enable redefinition of the setting to show the best progress instead of averages in reporting of learnpaths at a course level. +// $_configuration['lp_show_max_progress_or_average_enable_course_level_redefinition'] = false; // Show view accordion lp_item_view // $_configuration['lp_view_accordion'] = false; // Allow export learning paths to students diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index a33d49e1be..05ba0ef280 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -30,6 +30,12 @@ $from_myspace = false; $from = isset($_GET['from']) ? $_GET['from'] : null; $origin = api_get_origin(); $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); +if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $lpShowProgressCourseSetting = api_get_course_setting('lp_show_max_or_average_progress'); + if (in_array($lpShowProgressCourseSetting, ['max', 'average'])) { + $lpShowMaxProgress = ('max' === $lpShowProgressCourseSetting); + } +} // Starting the output buffering when we are exporting the information. $export_csv = isset($_GET['export']) && 'csv' === $_GET['export'] ? true : false; @@ -779,10 +785,12 @@ if ($nbStudents > 0) { } } if (isset($defaultExtraFields)) { - foreach ($defaultExtraInfo as $field) { - $table->set_header($counter, $field['display_text'], false); - $headers[$field['variable']] = $field['display_text']; - $counter++; + if (!empty($defaultExtraInfo)) { + 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);