From 4fb383d07b3f313b9e09ca27eccb6eff3034a57a Mon Sep 17 00:00:00 2001 From: juancp-contidosdixitais <93096561+juancp-contidosdixitais@users.noreply.github.com> Date: Sat, 19 Oct 2024 01:12:40 +0200 Subject: [PATCH 1/2] Admin: Add configuration setting 'hide_my_progress_tab' to hide the 'My Progress' tab - refs #5191 --- main/inc/lib/banner.lib.php | 27 +++++++++++++++------------ main/install/configuration.dist.php | 3 +++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/main/inc/lib/banner.lib.php b/main/inc/lib/banner.lib.php index bf1cad05ded..e59369c0651 100755 --- a/main/inc/lib/banner.lib.php +++ b/main/inc/lib/banner.lib.php @@ -89,19 +89,22 @@ function get_tabs($courseId = null) $navigation['session_my_space']['key'] = 'my-space'; $navigation['session_my_space']['icon'] = 'my-space.png'; } else { - $navigation['session_my_progress']['url'] = api_get_path(WEB_CODE_PATH); - // Link to my progress - switch (api_get_setting('gamification_mode')) { - case 1: - $navigation['session_my_progress']['url'] .= 'gamification/my_progress.php'; - break; - default: - $navigation['session_my_progress']['url'] .= 'auth/my_progress.php'; - } + $hideMyProgressTab = api_get_configuration_value('hide_my_progress_tab'); + if (true !== $hideMyProgressTab) { + $navigation['session_my_progress']['url'] = api_get_path(WEB_CODE_PATH); + // Link to my progress + switch (api_get_setting('gamification_mode')) { + case 1: + $navigation['session_my_progress']['url'] .= 'gamification/my_progress.php'; + break; + default: + $navigation['session_my_progress']['url'] .= 'auth/my_progress.php'; + } - $navigation['session_my_progress']['title'] = get_lang('MyProgress'); - $navigation['session_my_progress']['key'] = 'my-progress'; - $navigation['session_my_progress']['icon'] = 'my-progress.png'; + $navigation['session_my_progress']['title'] = get_lang('MyProgress'); + $navigation['session_my_progress']['key'] = 'my-progress'; + $navigation['session_my_progress']['icon'] = 'my-progress.png'; + } } } diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index 9f4d3e7a3e7..0192a159b66 100644 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -990,6 +990,9 @@ // Block access to any user to "my progress" page //$_configuration['block_my_progress_page'] = false; +// Hides the "my progress" tab from the navigation menu +//$_configuration['hide_my_progress_tab'] = false; + // Add user extra fields in report: main/mySpace/exercise_category_report.php //$_configuration['exercise_category_report_user_extra_fields'] = ['fields' => ['skype', 'rssfeeds']]; From 20ec8e75c5c4f780b411eb0b30eda8b5683d69d5 Mon Sep 17 00:00:00 2001 From: juancp-contidosdixitais <93096561+juancp-contidosdixitais@users.noreply.github.com> Date: Sat, 19 Oct 2024 01:19:12 +0200 Subject: [PATCH 2/2] Tracking: Improve message tracking (remove duplicate and add seeing sent/received) (#5237) --- main/inc/lib/message.lib.php | 51 ++++++++++++++++++++++++++++++++++++ main/mySpace/myStudents.php | 6 ++--- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/main/inc/lib/message.lib.php b/main/inc/lib/message.lib.php index 21c380d3c8e..584e370c7c9 100755 --- a/main/inc/lib/message.lib.php +++ b/main/inc/lib/message.lib.php @@ -3049,6 +3049,57 @@ public static function getUsersThatHadConversationWithUser($userId, $startDate = return $userList; } + /** + * Retrieves a list of users with whom the specified user has exchanged messages within an optional date range. + * + * @param int $userId The user ID for whom to retrieve message exchange. + * @param string|null $startDate Start date to filter the messages (optional). + * @param string|null $endDate End date to filter the messages (optional). + * + * @return array Array of user information for each user with whom the specified user has exchanged messages. + */ + public static function getMessageExchangeWithUser($userId, $startDate = null, $endDate = null) + { + $messagesTable = Database::get_main_table(TABLE_MESSAGE); + $userId = (int) $userId; + + if ($startDate !== null) { + $startDate = Database::escape_string($startDate); + } + if ($endDate !== null) { + $endDate = Database::escape_string($endDate); + } + + $sql = "SELECT DISTINCT user_sender_id AS user_id + FROM $messagesTable + WHERE user_receiver_id = $userId" . + ($startDate ? " AND send_date >= '$startDate'" : "") . + ($endDate ? " AND send_date <= '$endDate'" : "") . + " UNION + SELECT DISTINCT user_receiver_id + FROM $messagesTable + WHERE user_sender_id = $userId" . + ($startDate ? " AND send_date >= '$startDate'" : "") . + ($endDate ? " AND send_date <= '$endDate'" : ""); + + $result = Database::query($sql); + $users = Database::store_result($result); + + $userList = []; + foreach ($users as $userData) { + $userId = $userData['user_id']; + if (empty($userId)) { + continue; + } + $userInfo = api_get_user_info($userId); + if ($userInfo) { + $userList[$userId] = $userInfo; + } + } + + return $userList; + } + /** * @param int $userId * @param int $otherUserId diff --git a/main/mySpace/myStudents.php b/main/mySpace/myStudents.php index 6c2b92acf18..73fef8f1a3d 100755 --- a/main/mySpace/myStudents.php +++ b/main/mySpace/myStudents.php @@ -2405,11 +2405,11 @@ function ($hookHeader) { $allow = api_get_configuration_value('allow_user_message_tracking'); if ($allow && (api_is_drh() || api_is_platform_admin())) { if ($filterMessages) { - $users = MessageManager::getUsersThatHadConversationWithUser($student_id, $coachAccessStartDate, $coachAccessEndDate); + $users = MessageManager::getMessageExchangeWithUser($student_id, $coachAccessStartDate, $coachAccessEndDate); } else { - $users = MessageManager::getUsersThatHadConversationWithUser($student_id); + $users = MessageManager::getMessageExchangeWithUser($student_id); } - $users = MessageManager::getUsersThatHadConversationWithUser($student_id); + echo Display::page_subheader2(get_lang('MessageTracking')); $table = new HTML_Table(['class' => 'table']);