Skip to content

Commit 83431b1

Browse files
TatevikGrtatevikg1
andauthored
Check max mail size in send campaign command (#373)
* Add: check max mail size * MessageDataManager * Update message status * Update coderabbit config * After review 0 * Use HTMLPurifier * Use precached message data * After review 1 --------- Co-authored-by: Tatevik <[email protected]>
1 parent 158fac6 commit 83431b1

23 files changed

+544
-134
lines changed

.coderabbit.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,3 @@ reviews:
7373
# code_guidelines:
7474
# filePatterns:
7575
# - ".github/AGENT.md"
76-
77-
checks:
78-
docstring_coverage:
79-
enabled: false

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@
7878
"webklex/php-imap": "^6.2",
7979
"ext-imap": "*",
8080
"tatevikgr/rss-feed": "dev-main",
81-
"ext-pdo": "*"
81+
"ext-pdo": "*",
82+
"ezyang/htmlpurifier": "^4.19"
8283
},
8384
"require-dev": {
8485
"phpunit/phpunit": "^9.5",

config/PhpCodeSniffer/ruleset.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030

3131
<!-- Commenting -->
3232
<rule ref="Generic.Commenting.Fixme"/>
33-
<rule ref="Generic.Commenting.Todo"/>
33+
<rule ref="Generic.Commenting.Todo">
34+
<severity>0</severity>
35+
</rule>
3436
<rule ref="PEAR.Commenting.InlineComment"/>
3537
<rule ref="Squiz.Commenting.DocCommentAlignment"/>
3638
<rule ref="Squiz.Commenting.EmptyCatchComment"/>

config/parameters.yml.dist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,5 @@ parameters:
8787
env(MAILQUEUE_THROTTLE): '5'
8888
messaging.max_process_time: '%%env(MESSAGING_MAX_PROCESS_TIME)%%'
8989
env(MESSAGING_MAX_PROCESS_TIME): '600'
90+
messaging.max_mail_size: '%%env(MAX_MAILSIZE)%%'
91+
env(MAX_MAILSIZE): '209715200'

config/services.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,21 @@ services:
5050
lazy: true
5151
tags:
5252
- { name: 'doctrine.dbal.schema_filter', connection: 'default' }
53+
54+
HTMLPurifier_Config:
55+
class: HTMLPurifier_Config
56+
factory: [ 'HTMLPurifier_Config', 'createDefault' ]
57+
calls:
58+
- [ set, [ 'Cache.SerializerPath', '%kernel.cache_dir%/htmlpurifier' ] ]
59+
- [ set, [ 'HTML.ForbiddenElements', [ 'script', 'style' ] ] ]
60+
- [ set, [ 'CSS.Disable', true ] ]
61+
- [ set, [ 'URI.DisableJavaScript', true ] ]
62+
- [ set, [ 'URI.DisableDataURI', true ] ]
63+
- [ set, [ 'HTML.Doctype', 'HTML5' ] ]
64+
- [ set, [ 'HTML.Allowed', 'p,br,b,strong,i,em,u,a[href|title],ul,ol,li,blockquote,img[src|alt|title],span,div'] ]
65+
66+
HTMLPurifier:
67+
class: HTMLPurifier
68+
arguments:
69+
- '@HTMLPurifier_Config'
70+

config/services/managers.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,7 @@ services:
110110
PhpList\Core\Domain\Messaging\Service\Manager\SendProcessManager:
111111
autowire: true
112112
autoconfigure: true
113+
114+
PhpList\Core\Domain\Messaging\Service\Manager\MessageDataManager:
115+
autowire: true
116+
autoconfigure: true

config/services/messenger.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ services:
2929
autoconfigure: true
3030
tags: [ 'messenger.message_handler' ]
3131

32+
PhpList\Core\Domain\Messaging\MessageHandler\CampaignProcessorMessageHandler:
33+
autowire: true
34+
arguments:
35+
$maxMailSize: '%messaging.max_mail_size%'
36+
3237
PhpList\Core\Domain\Subscription\MessageHandler\DynamicTableMessageHandler:
3338
autowire: true
3439
autoconfigure: true

config/services/repositories.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,8 @@ services:
140140
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
141141
arguments:
142142
- PhpList\Core\Domain\Messaging\Model\SendProcess
143+
144+
PhpList\Core\Domain\Messaging\Repository\MessageDataRepository:
145+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
146+
arguments:
147+
- PhpList\Core\Domain\Messaging\Model\MessageData

src/Domain/Analytics/Service/LinkTrackService.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PhpList\Core\Domain\Analytics\Model\LinkTrack;
1010
use PhpList\Core\Domain\Analytics\Repository\LinkTrackRepository;
1111
use PhpList\Core\Domain\Messaging\Model\Message;
12+
use PhpList\Core\Domain\Messaging\Model\Message\MessageContent;
1213

1314
class LinkTrackService
1415
{
@@ -38,15 +39,12 @@ public function isExtractAndSaveLinksApplicable(): bool
3839
* @return LinkTrack[] The saved LinkTrack entities
3940
* @throws MissingMessageIdException
4041
*/
41-
public function extractAndSaveLinks(Message $message, int $userId): array
42+
public function extractAndSaveLinks(MessageContent $content, int $userId, ?int $messageId = null): array
4243
{
4344
if (!$this->isExtractAndSaveLinksApplicable()) {
4445
return [];
4546
}
4647

47-
$content = $message->getContent();
48-
$messageId = $message->getId();
49-
5048
if ($messageId === null) {
5149
throw new MissingMessageIdException();
5250
}

src/Domain/Identity/Service/PermissionChecker.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ private function resolveRelatedEntity(DomainModel $resource, string $relatedClas
7070
}
7171

7272
if ($resource instanceof Message && $relatedClass === SubscriberList::class) {
73+
// todo: check which one is correct
74+
// return $resource->getListMessages()->map(fn(ListMessage $lm) => $lm->getList())->toArray();
7375
return $resource->getListMessages()->map(fn($lm) => $lm->getSubscriberList())->toArray();
7476
}
7577

0 commit comments

Comments
 (0)