From c489f3bc5c34689b1a56c0d492747c5d6f840b49 Mon Sep 17 00:00:00 2001 From: christianbeeznst Date: Tue, 29 Oct 2024 22:21:29 -0500 Subject: [PATCH] Internal: Fix URL handling in notification links for CLI script - refs BT#22050 --- public/main/inc/lib/message.lib.php | 6 ++-- public/main/inc/lib/notification.lib.php | 31 +++++++++------------ tests/scripts/disable_user_conditions.php | 34 ++++++++++++++++++++--- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/public/main/inc/lib/message.lib.php b/public/main/inc/lib/message.lib.php index ac26e81c84..b8750e40d0 100644 --- a/public/main/inc/lib/message.lib.php +++ b/public/main/inc/lib/message.lib.php @@ -132,7 +132,8 @@ class MessageManager $forwardId = 0, $checkCurrentAudioId = false, $forceTitleWhenSendingEmail = false, - $msgType = null + $msgType = null, + $baseUrl = null ) { $group_id = (int) $group_id; $receiverUserId = (int) $receiverUserId; @@ -374,7 +375,8 @@ class MessageManager $content, $sender_info, $attachmentAddedByMail, - $forceTitleWhenSendingEmail + $forceTitleWhenSendingEmail, + $baseUrl ); } else { $usergroup = new UserGroupModel(); diff --git a/public/main/inc/lib/notification.lib.php b/public/main/inc/lib/notification.lib.php index 2d1085858e..cef83c7227 100644 --- a/public/main/inc/lib/notification.lib.php +++ b/public/main/inc/lib/notification.lib.php @@ -228,7 +228,8 @@ class Notification extends Model $content, $senderInfo = [], $attachments = [], - $forceTitleWhenSendingEmail = false + $forceTitleWhenSendingEmail = false, + $baseUrl = null ) { $this->type = (int) $type; $messageId = (int) $messageId; @@ -267,7 +268,7 @@ class Notification extends Model $userInfo = api_get_user_info($user_id); $recipientLanguage = !empty($userInfo['locale']) ? $userInfo['locale'] : null; - $content = $this->formatContent($messageId, $content, $senderInfo, $recipientLanguage); + $content = $this->formatContent($messageId, $content, $senderInfo, $recipientLanguage, $baseUrl); $titleToNotification = $this->formatTitle($title, $senderInfo, $forceTitleWhenSendingEmail, $recipientLanguage); // Extra field was deleted or removed? Use the default status. @@ -353,11 +354,13 @@ class Notification extends Model * * @return string * */ - public function formatContent($messageId, $content, $senderInfo, $recipientLanguage = null) + public function formatContent($messageId, $content, $senderInfo, $recipientLanguage = null, $baseUrl = null) { $newMessageText = $linkToNewMessage = ''; $showEmail = ('true' === api_get_setting('mail.show_user_email_in_notification')); $senderInfoName = ''; + $baseUrl = $baseUrl ?: rtrim(api_get_path(WEB_PATH), '/'); + if (!empty($senderInfo) && isset($senderInfo['complete_name'])) { $senderInfoName = $senderInfo['complete_name']; if ($showEmail && isset($senderInfo['complete_name_with_email_forced'])) { @@ -370,7 +373,7 @@ class Notification extends Model $newMessageText = ''; $linkToNewMessage = Display::url( get_lang('See message', $recipientLanguage), - api_get_path(WEB_PATH).'resources/messages/show?id=/api/messages/'.$messageId + $baseUrl . '/resources/messages/show?id=/api/messages/' . $messageId ); break; case self::NOTIFICATION_TYPE_MESSAGE: @@ -386,7 +389,7 @@ class Notification extends Model } $linkToNewMessage = Display::url( get_lang('See message', $recipientLanguage), - api_get_path(WEB_PATH).'resources/messages/show?id=/api/messages/'.$messageId + $baseUrl . '/resources/messages/show?id=/api/messages/' . $messageId ); break; case self::NOTIFICATION_TYPE_INVITATION: @@ -398,7 +401,7 @@ class Notification extends Model } $linkToNewMessage = Display::url( get_lang('See invitation', $recipientLanguage), - api_get_path(WEB_CODE_PATH).'social/invitations.php' + $baseUrl . '/main/social/invitations.php' ); break; case self::NOTIFICATION_TYPE_GROUP: @@ -408,15 +411,15 @@ class Notification extends Model $newMessageText = sprintf(get_lang('You have received a new message in group %s', $recipientLanguage), $senderName); $senderName = Display::url( $senderInfoName, - api_get_path(WEB_CODE_PATH).'social/profile.php?'.$senderInfo['user_info']['user_id'] + $baseUrl . '/main/social/profile.php?' . $senderInfo['user_info']['user_id'] ); - $newMessageText .= '
'.get_lang('User', $recipientLanguage).': '.$senderName; + $newMessageText .= '
' . get_lang('User', $recipientLanguage) . ': ' . $senderName; } - $groupUrl = api_get_path(WEB_PATH).'resources/usergroups/show/'.$senderInfo['group_info']['id']; + $groupUrl = $baseUrl . '/resources/usergroups/show/' . $senderInfo['group_info']['id']; $linkToNewMessage = Display::url(get_lang('See message', $recipientLanguage), $groupUrl); break; } - $preferenceUrl = api_get_path(WEB_CODE_PATH).'auth/profile.php'; + $preferenceUrl = $baseUrl . '/main/auth/profile.php'; // You have received a new message text if (!empty($newMessageText)) { @@ -435,14 +438,6 @@ class Notification extends Model Display::url($preferenceUrl, $preferenceUrl) ).''; - /*if (!empty($hook)) { - $hook->setEventData(['content' => $content]); - $data = $hook->notifyNotificationContent(HOOK_EVENT_TYPE_POST); - if (isset($data['content'])) { - $content = $data['content']; - } - }*/ - return $content; } diff --git a/tests/scripts/disable_user_conditions.php b/tests/scripts/disable_user_conditions.php index f2c5b732fa..aa89721114 100644 --- a/tests/scripts/disable_user_conditions.php +++ b/tests/scripts/disable_user_conditions.php @@ -18,6 +18,8 @@ die('Remove the "die()" statement on line '.__LINE__.' to execute this script'.PHP_EOL); require_once __DIR__.'/../../public/main/inc/global.inc.php'; +$options = getopt('', ['url:']); +$baseUrl = isset($options['url']) ? rtrim($options['url'], '/') : null; $senderId = api_get_setting('platform.disable_user_conditions_sender_id'); if (empty($senderId)) { @@ -98,7 +100,13 @@ foreach ($students as $student) { 0, 0, 0, - $senderId + $senderId, + false, + 0, + false, + false, + null, + $baseUrl ); UserManager::disable($studentId); } @@ -157,7 +165,13 @@ foreach ($students as $student) { 0, 0, 0, - $senderId + $senderId, + false, + 0, + false, + false, + null, + $baseUrl ); UserManager::disable($studentId); } @@ -223,7 +237,13 @@ foreach ($students as $student) { 0, 0, 0, - $senderId + $senderId, + false, + 0, + false, + false, + null, + $baseUrl ); UserManager::disable($studentId); if (!empty($bossInfo) && !empty($subjectBoss)) { @@ -237,7 +257,13 @@ foreach ($students as $student) { 0, 0, 0, - $senderId + $senderId, + false, + 0, + false, + false, + null, + $baseUrl ); } UserManager::removeAllBossFromStudent($studentId);