Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • project/private_message
  • issue/private_message-3102091
  • issue/private_message-3184577
  • issue/private_message-3186067
  • issue/private_message-3095101
  • issue/private_message-3164669
  • issue/private_message-3203419
  • issue/private_message-2942602
  • issue/private_message-3095232
  • issue/private_message-3216927
  • issue/private_message-3217509
  • issue/private_message-3232483
  • issue/private_message-3226703
  • issue/private_message-3231433
  • issue/private_message-3137648
  • issue/private_message-3094213
  • issue/private_message-3156194
  • issue/private_message-3183628
  • issue/private_message-3231711
  • issue/private_message-3142633
  • issue/private_message-3042276
  • issue/private_message-3236702
  • issue/private_message-3239279
  • issue/private_message-3239575
  • issue/private_message-3281258
  • issue/private_message-3243139
  • issue/private_message-3195730
  • issue/private_message-3184550
  • issue/private_message-3041599
  • issue/private_message-3179135
  • issue/private_message-3029461
  • issue/private_message-3245298
  • issue/private_message-3250059
  • issue/private_message-3261287
  • issue/private_message-3221475
  • issue/private_message-3261292
  • issue/private_message-3050359
  • issue/private_message-3249348
  • issue/private_message-3248258
  • issue/private_message-3082478
  • issue/private_message-3265901
  • issue/private_message-3300046
  • issue/private_message-2947762
  • issue/private_message-3321802
  • issue/private_message-3051300
  • issue/private_message-3207855
  • issue/private_message-3099166
  • issue/private_message-3344346
  • issue/private_message-3297889
  • issue/private_message-3261083
  • issue/private_message-3151941
  • issue/private_message-3317985
  • issue/private_message-3285143
  • issue/private_message-3337185
  • issue/private_message-3337186
  • issue/private_message-3337189
  • issue/private_message-3322900
  • issue/private_message-2977313
  • issue/private_message-3333001
  • issue/private_message-3337216
  • issue/private_message-3088743
  • issue/private_message-3337221
  • issue/private_message-3337222
  • issue/private_message-3343726
  • issue/private_message-3337224
  • issue/private_message-3339976
  • issue/private_message-3297888
  • issue/private_message-3355273
  • issue/private_message-3356586
  • issue/private_message-3378251
  • issue/private_message-3391546
  • issue/private_message-3381016
  • issue/private_message-3412209
  • issue/private_message-3414396
  • issue/private_message-3204985
  • issue/private_message-3043898
  • issue/private_message-3384791
  • issue/private_message-3121606
  • issue/private_message-3035510
  • issue/private_message-3337240
  • issue/private_message-3417386
  • issue/private_message-3183523
  • issue/private_message-3386742
  • issue/private_message-3322629
  • issue/private_message-3322625
  • issue/private_message-3417433
  • issue/private_message-3241221
  • issue/private_message-3417449
  • issue/private_message-3417461
  • issue/private_message-3271454
  • issue/private_message-3417457
  • issue/private_message-3417644
  • issue/private_message-3417654
  • issue/private_message-3417705
  • issue/private_message-3417731
  • issue/private_message-3417742
  • issue/private_message-3417747
  • issue/private_message-3417751
  • issue/private_message-3417752
  • issue/private_message-3212104
  • issue/private_message-3427223
  • issue/private_message-3365542
  • issue/private_message-3424499
  • issue/private_message-3432140
  • issue/private_message-3439400
  • issue/private_message-3454771
  • issue/private_message-3456956
  • issue/private_message-3464363
  • issue/private_message-3464371
  • issue/private_message-3470070
  • issue/private_message-3470072
  • issue/private_message-3470928
  • issue/private_message-3475462
  • issue/private_message-2987189
  • issue/private_message-3477667
  • issue/private_message-3477873
  • issue/private_message-3478456
  • issue/private_message-3054106
  • issue/private_message-3479391
  • issue/private_message-3417748
  • issue/private_message-3480219
  • issue/private_message-3482103
  • issue/private_message-3482504
  • issue/private_message-3482630
  • issue/private_message-2971692
  • issue/private_message-3484561
  • issue/private_message-3484828
  • issue/private_message-3484854
  • issue/private_message-3485607
  • issue/private_message-3486915
  • issue/private_message-3487175
  • issue/private_message-3482416
  • issue/private_message-3487689
  • issue/private_message-3487705
  • issue/private_message-3487770
  • issue/private_message-3488097
  • issue/private_message-3484915
  • issue/private_message-3488247
  • issue/private_message-3488508
  • issue/private_message-3487692
  • issue/private_message-3484246
  • issue/private_message-3488863
  • issue/private_message-3486047
  • issue/private_message-3489091
  • issue/private_message-3489205
  • issue/private_message-3490037
  • issue/private_message-3490119
  • issue/private_message-3490456
  • issue/private_message-3489224
  • issue/private_message-3490346
  • issue/private_message-3490816
  • issue/private_message-3491252
  • issue/private_message-3491271
  • issue/private_message-3492177
  • issue/private_message-3492289
  • issue/private_message-3331865
  • issue/private_message-3497800
  • issue/private_message-3499154
  • issue/private_message-3499926
  • issue/private_message-3501083
  • issue/private_message-3501286
  • issue/private_message-3501694
  • issue/private_message-3502128
  • issue/private_message-3502140
  • issue/private_message-3502159
  • issue/private_message-3502162
  • issue/private_message-3502180
  • issue/private_message-3502186
  • issue/private_message-3502190
  • issue/private_message-3502496
  • issue/private_message-3504372
  • issue/private_message-3512770
  • issue/private_message-3513969
173 results
Show changes
Commits on Source (3)
......@@ -6,6 +6,7 @@ privatemessagenotification
# Third-party technologies
Blackfire
mailsystem
xhprof
# Contributor names and usernames
......@@ -27,3 +28,6 @@ edutrul
heddn
phjou
sylchuk
# Test strings
Aerosmith
......@@ -2,7 +2,7 @@
## Command provided by https://github.com/ddev/ddev-drupal-contrib
web_environment:
# If desired, override to a different version of Drupal core in via the project's DDEV config
- DRUPAL_CORE=^10
- DRUPAL_CORE=^11
- SIMPLETEST_DB=mysql://db:db@db/db
- SIMPLETEST_BASE_URL=http://web
- BROWSERTEST_OUTPUT_DIRECTORY=/tmp
......
......@@ -23,9 +23,11 @@
},
"require-dev": {
"drupal/rules": "^4.0",
"drush/drush": "^12.5 || ^13"
"drupal/symfony_mailer_lite": "^2.0",
"drush/drush": "^12.5 || ^13.3"
},
"config": {
"sort-packages": true,
"allow-plugins": {
"php-http/discovery": true,
"tbachert/spi": true
......
......@@ -3,10 +3,6 @@
/**
* @file
* Primary module hooks for Private Message Notify module.
*
* @DCG
* This file is no longer required in Drupal 8.
* @see https://www.drupal.org/node/2217931
*/
use Drupal\private_message\Entity\PrivateMessageInterface;
......
parameters:
private_message_notify.notifier.class: 'Drupal\private_message_notify\Service\PrivateMessageNotifier'
services:
private_message_notify.notifier:
class: '%private_message_notify.notifier.class%'
class: Drupal\private_message_notify\Service\PrivateMessageNotifier
arguments:
- '@private_message.service'
- '@current_user'
......@@ -12,3 +9,4 @@ services:
- '@entity_type.manager'
- '@message_notify.sender'
- '@module_handler'
- '@logger.factory'
type: module
name: Private Message Notify Test
package: Testing
core_version_requirement: ^9.3 || ^10 || ^11
dependencies:
- private_message:private_message_notify
<?php
/**
* @file
* Hook implementations for Private Message Notify Test module.
*/
declare(strict_types=1);
/**
* Implements hook_mail_alter().
*/
function private_message_notify_test_mail_alter(array &$message): void {
if ($message['module'] === 'message_notify' && $message['key'] === 'private_message_notification') {
$message['headers']['Content-Type'] = 'text/html';
}
}
<?php
declare(strict_types=1);
namespace Drupal\Tests\private_message_notify\Kernel;
use Drupal\Core\Test\AssertMailTrait;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\private_message\Traits\PrivateMessageTestTrait;
use Drupal\filter\Entity\FilterFormat;
use Drupal\message\Entity\MessageTemplate;
use Drupal\message\MessageTemplateInterface;
use Drupal\private_message\Entity\PrivateMessage;
use Drupal\private_message\Entity\PrivateMessageThread;
/**
* @coversDefaultClass \Drupal\private_message_notify\Service\PrivateMessageNotifier
* @group private_message
*/
class PrivateMessageNotifierTest extends KernelTestBase {
use AssertMailTrait;
use PrivateMessageTestTrait;
/**
* {@inheritdoc}
*/
protected static $modules = [
'field',
'filter',
'mailsystem',
'message',
'message_notify',
'private_message',
'private_message_notify',
'private_message_notify_test',
'symfony_mailer_lite',
'system',
'text',
'user',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->config('system.site')->set('name', 'Aerosmith')->save();
// Theme us needed for mail body rendering.
$this->container->get('theme_installer')->install(['stark']);
$this->config('system.theme')
->set('admin', 'stark')
->set('default', 'stark')
->save();
$this->installEntitySchema('user');
$this->installSchema('user', ['users_data']);
$this->createTestingUsers();
$this->installEntitySchema('message');
$this->installEntitySchema('private_message_thread');
$this->installEntitySchema('private_message');
$this->installSchema('private_message', ['pm_thread_history']);
$this->installConfig([
'filter',
'message',
'message_notify',
'private_message_notify',
]);
// Enable notifications.
$this->config('private_message.settings')
->set('enable_notifications', TRUE)
->set('notify_by_default', TRUE)
->save();
// Use rich HTML in email body.
FilterFormat::create([
'format' => 'basic_html',
'name' => 'Basic HTML',
'filters' => [
'filter_html' => [
'status' => 1,
'settings' => [
'allowed_html' => '<p> <strong>',
],
],
],
])->save();
$messageTemplate = MessageTemplate::load('private_message_notification');
assert($messageTemplate instanceof MessageTemplateInterface);
$text = $messageTemplate->get('text');
$text[1]['format'] = 'basic_html';
$messageTemplate->set('text', $text)->save();
$this->config('mailsystem.settings')
->set('theme', 'stark')
->set('defaults', [
'sender' => 'test_mail_collector',
'formatter' => 'symfony_mailer_lite',
])->save();
}
/**
* @covers ::notify
* @covers \private_message_tokens
*/
public function testEmailMarkup(): void {
$thread = PrivateMessageThread::create([
'members' => [$this->users['a'], $this->users['b']],
'private_messages' => [],
]);
$privateMessage = PrivateMessage::create([
'owner' => $this->users['a'],
'message' => [
'value' => "<p><strong>Janie</strong>'s Got a Gun</p><script type=\"Danger!\"></script>",
'format' => 'basic_html',
],
]);
// Create a new.
$this->container->get('private_message.thread_manager')
->saveThread($privateMessage, $thread->getMembers(), $thread);
foreach ($this->getMails() as $mail) {
if ($mail['module'] !== 'message_notify' || $mail['key'] !== 'private_message_notification') {
continue;
}
$this->assertSame('Private message at Aerosmith', $mail['subject']);
// Cast from MarkupInterface to string.
$body = (string) $mail['body'];
$this->assertStringContainsString("<p><strong>Janie</strong>'s Got a Gun</p>",
$body);
// .No encoded HTML.
$this->assertStringNotContainsString('&lt;', $body);
$this->assertStringNotContainsString('&gt;', $body);
// Dangerous tags are stripped out.
$this->assertStringNotContainsString('Danger!', $body);
$this->assertStringNotContainsString('<script', $body);
$this->assertStringNotContainsString('</script>', $body);
}
}
}
parameters:
private_message.mapper.class: 'Drupal\private_message\Mapper\PrivateMessageMapper'
private_message.service.class: 'Drupal\private_message\Service\PrivateMessageService'
private_message.ban_manager.class: 'Drupal\private_message\Service\PrivateMessageBanManager'
cache_context.private_message_thread.class: 'Drupal\private_message\Cache\Context\PrivateMessageThreadCacheContext'
private_message.thread_manager.class: 'Drupal\private_message\Service\PrivateMessageThreadManager'
private_message.private_message_config_form_manager.class: 'Drupal\private_message\PluginManager\PrivateMessageConfigFormManager'
services:
private_message.mapper:
class: '%private_message.mapper.class%'
class: Drupal\private_message\Mapper\PrivateMessageMapper
arguments:
- '@database'
- '@current_user'
private_message.service:
class: '%private_message.service.class%'
class: Drupal\private_message\Service\PrivateMessageService
arguments:
- '@private_message.mapper'
- '@current_user'
......@@ -25,7 +17,7 @@ services:
- '@datetime.time'
private_message.ban_manager:
class: '%private_message.ban_manager.class%'
class: Drupal\private_message\Service\PrivateMessageBanManager
arguments:
- '@current_user'
- '@entity_type.manager'
......@@ -33,25 +25,17 @@ services:
- '@messenger'
cache_context.private_message_thread:
class: '%cache_context.private_message_thread.class%'
class: Drupal\private_message\Cache\Context\PrivateMessageThreadCacheContext
arguments:
- '@current_route_match'
tags:
- { name: cache.context }
private_message.thread_manager:
class: '%private_message.thread_manager.class%'
class: Drupal\private_message\Service\PrivateMessageThreadManager
arguments:
- '@private_message.service'
private_message.private_message_config_form_manager:
class: '%private_message.private_message_config_form_manager.class%'
class: Drupal\private_message\PluginManager\PrivateMessageConfigFormManager
parent: default_plugin_manager
private_message.commands:
class: \Drupal\private_message\Drush\Commands\PrivateMessageCommands
arguments:
- '@private_message.service'
- '@entity_type.manager'
tags:
- { name: drush.command }
......@@ -116,7 +116,7 @@ function private_message_tokens($type, $tokens, array $data, array $options, Bub
break;
case 'message':
$replacements[$original] = $private_message->getMessage();
$replacements[$original] = $private_message->get('message')->processed;
break;
case 'author-name':
......