From 490d31ce276009e417325c04197dfa3fb4a012bd Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 19 Nov 2021 11:13:29 -0500 Subject: [PATCH 1/5] Lp: Add option to display max or average progress in reporting - refs BT#19309 --- main/course_info/infocours.php | 20 ++++++++++++++++++++ main/inc/lib/course.lib.php | 4 ++++ main/inc/lib/tracking.lib.php | 6 ++++++ main/install/configuration.dist.php | 2 ++ main/tracking/courseLog.php | 3 +++ 5 files changed, 35 insertions(+) diff --git a/main/course_info/infocours.php b/main/course_info/infocours.php index 8f3cc8e555..f9009e92e8 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 35ab9c6983..3d92496079 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -5820,6 +5820,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 c6cd162523..fb5711dade 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -5238,6 +5238,9 @@ class Tracking $sessionCondition = " AND s.id = $session_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')) { + $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress')); + } // Get the list of sessions where the user is subscribed as student if (api_is_multiple_url_enabled()) { @@ -9007,6 +9010,9 @@ 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')) { + $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress')); + } $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 705d60e7ce..fd2d9c6216 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..0d26e483cf 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -30,6 +30,9 @@ $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')) { + $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress')); +} // Starting the output buffering when we are exporting the information. $export_csv = isset($_GET['export']) && 'csv' === $_GET['export'] ? true : false; From 2ae72a3581083eb67b9521df98155acc841312d7 Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 19 Nov 2021 13:58:10 -0500 Subject: [PATCH 2/5] Lp: Fix get value from course setting - refs BT#19309 --- main/inc/lib/tracking.lib.php | 16 +++++++++------- main/tracking/courseLog.php | 10 ++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index fb5711dade..16431dbd40 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -5238,9 +5238,6 @@ class Tracking $sessionCondition = " AND s.id = $session_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')) { - $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress')); - } // Get the list of sessions where the user is subscribed as student if (api_is_multiple_url_enabled()) { @@ -5349,6 +5346,10 @@ class Tracking $courseInfo = api_get_course_info($course_code); $courseId = $courseInfo['real_id']; + if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress', $courseInfo, true)); + } + $total_time_login = self::get_time_spent_on_the_course( $user_id, $courseId @@ -8980,6 +8981,11 @@ 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')) { + $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress', $courseInfo, true)); + } + while ($user = Database::fetch_array($res, 'ASSOC')) { $userIdList[] = $user['user_id']; $user['official_code'] = $user['col0']; @@ -9009,10 +9015,6 @@ class TrackingCourseLog true ); - $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')) { - $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress')); - } $avg_student_progress = Tracking::get_avg_student_progress( $user['user_id'], $course_code, diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index 0d26e483cf..3e436289ae 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -782,10 +782,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); From 413ac1e0dd17114ca2bd9da95e1bf8d08d068efc Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 24 Nov 2021 12:57:15 -0500 Subject: [PATCH 3/5] Lp: Fix max or average progress from course setting - refs BT#19309 --- main/inc/lib/tracking.lib.php | 10 ++++++++-- main/tracking/courseLog.php | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 16431dbd40..475f74f65f 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -5347,7 +5347,10 @@ class Tracking $courseId = $courseInfo['real_id']; if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { - $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress', $courseInfo, true)); + $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( @@ -8983,7 +8986,10 @@ 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')) { - $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress', $courseInfo, true)); + $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')) { diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index 3e436289ae..05ba0ef280 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -31,7 +31,10 @@ $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')) { - $lpShowMaxProgress = ('max' === api_get_course_setting('lp_show_max_or_average_progress')); + $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. From e19591257c0376298a19385498e4cb64df27761a Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 26 Nov 2021 15:34:45 -0500 Subject: [PATCH 4/5] Lp: Fix option to display max or average progress in reporting using settings - refs BT#19309 --- main/inc/lib/tracking.lib.php | 7 +++---- main/tracking/courseLog.php | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 475f74f65f..66f5b88313 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,8 +5344,8 @@ class Tracking foreach ($courses as $course_code => $course_title) { $courseInfo = api_get_course_info($course_code); $courseId = $courseInfo['real_id']; - - if (api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); + if ($lpShowMaxProgress && 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); @@ -8985,7 +8984,7 @@ 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')) { + if ($lpShowMaxProgress && 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); diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index 05ba0ef280..62e031928b 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -30,7 +30,7 @@ $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')) { +if ($lpShowMaxProgress && 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); From b590f6df749b22aab41d4892862d2edbf9f6895e Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 29 Nov 2021 17:49:05 -0500 Subject: [PATCH 5/5] Lp: Fix display max or average progress in reporting - refs BT#19309 --- main/inc/lib/tracking.lib.php | 4 ++-- main/tracking/courseLog.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 66f5b88313..30488d3b37 100755 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -5345,7 +5345,7 @@ class Tracking $courseInfo = api_get_course_info($course_code); $courseId = $courseInfo['real_id']; $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); - if ($lpShowMaxProgress && api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + 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); @@ -8984,7 +8984,7 @@ class TrackingCourseLog } $lpShowMaxProgress = api_get_configuration_value('lp_show_max_progress_instead_of_average'); - if ($lpShowMaxProgress && api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { + 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); diff --git a/main/tracking/courseLog.php b/main/tracking/courseLog.php index 62e031928b..05ba0ef280 100755 --- a/main/tracking/courseLog.php +++ b/main/tracking/courseLog.php @@ -30,7 +30,7 @@ $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 ($lpShowMaxProgress && api_get_configuration_value('lp_show_max_progress_or_average_enable_course_level_redefinition')) { +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);