diff --git a/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php b/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php index 89ea4eee38785..8b4bd4a078a22 100644 --- a/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php +++ b/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php @@ -198,6 +198,12 @@ public static function getHumanReadableLogMessage($log, $generateLinks = true) $messageData['type'] = Text::_($messageData['type']); } + // Remove links from the message template, if we should not generate links. + if (!$generateLinks) { + $message = preg_replace('//', '', $message); + $message = str_replace('', '', $message); + } + $linkMode = Factory::getApplication()->get('force_ssl', 0) >= 1 ? Route::TLS_FORCE : Route::TLS_IGNORE; foreach ($messageData as $key => $value) { diff --git a/administrator/components/com_actionlogs/src/Model/ActionlogModel.php b/administrator/components/com_actionlogs/src/Model/ActionlogModel.php index 53b4aeff79519..932de5be9698a 100644 --- a/administrator/components/com_actionlogs/src/Model/ActionlogModel.php +++ b/administrator/components/com_actionlogs/src/Model/ActionlogModel.php @@ -151,6 +151,7 @@ protected function sendNotificationEmails($messages, $username, $context) $lang->load('com_actionlogs', JPATH_ADMINISTRATOR); ActionlogsHelper::loadTranslationFiles($extension); $temp = []; + $tempPlain = []; foreach ($messages as $message) { $m = []; @@ -159,14 +160,23 @@ protected function sendNotificationEmails($messages, $username, $context) $m['date'] = HTMLHelper::_('date', $message->log_date, 'Y-m-d H:i:s T', 'UTC'); $m['username'] = $username; $temp[] = $m; + + // copy replacement tags array and set non-HTML message. + $mPlain = array_merge([], $m); + $mPlain['message'] = ActionlogsHelper::getHumanReadableLogMessage($message, false); + $tempPlain[] = $mPlain; } $templateData = [ 'messages' => $temp, ]; + $templateDataPlain = [ + 'messages' => $tempPlain, + ]; $mailer = new MailTemplate('com_actionlogs.notification', $app->getLanguage()->getTag()); $mailer->addTemplateData($templateData); + $mailer->addTemplateData($templateDataPlain, true); foreach ($recipients as $recipient) { $mailer->addRecipient($recipient); diff --git a/libraries/src/Mail/MailTemplate.php b/libraries/src/Mail/MailTemplate.php index b74c2b67d17f5..db5dcfb52c9cb 100644 --- a/libraries/src/Mail/MailTemplate.php +++ b/libraries/src/Mail/MailTemplate.php @@ -60,6 +60,13 @@ class MailTemplate */ protected $data = []; + /** + * + * @var string[] + * @since __DEPLOY_VERSION__ + */ + protected $plain_data = []; + /** * * @var string[] @@ -164,14 +171,19 @@ public function setReplyTo($mail, $name = '') * Add data to replace in the template * * @param array $data Associative array of strings to replace + * @param bool $plain Only use the data for plain-text emails. * * @return void * * @since 4.0.0 */ - public function addTemplateData($data) + public function addTemplateData($data, $plain = false) { - $this->data = array_merge($this->data, $data); + if (!$plain) { + $this->data = array_merge($this->data, $data); + } else { + $this->plain_data = array_merge($this->plain_data, $data); + } } /** @@ -233,7 +245,9 @@ public function send() $this->mailer->setSubject($subject); $mailStyle = $config->get('mail_style', 'plaintext'); - $plainBody = $this->replaceTags(Text::_($mail->body), $this->data); + // Use the plain-text replacement data, if specified. + $plainData = $this->plain_data ?: $this->data; + $plainBody = $this->replaceTags(Text::_($mail->body), $plainData); $htmlBody = $this->replaceTags(Text::_($mail->htmlbody), $this->data); if ($mailStyle === 'plaintext' || $mailStyle === 'both') {