66
77use PhpList \Core \Domain \Common \Model \ValidationContext ;
88use PhpList \Core \Domain \Messaging \Model \Dto \CreateTemplateDto ;
9+ use PhpList \Core \Domain \Messaging \Model \Dto \UpdateTemplateDto ;
910use PhpList \Core \Domain \Messaging \Model \Template ;
1011use PhpList \Core \Domain \Messaging \Repository \TemplateRepository ;
1112use PhpList \Core \Domain \Messaging \Validator \TemplateImageValidator ;
1213use PhpList \Core \Domain \Messaging \Validator \TemplateLinkValidator ;
13- use PhpList \Core \Domain \Subscription \Model \Dto \UpdateSubscriberDto ;
14- use PhpList \Core \Domain \Subscription \Model \Subscriber ;
1514
1615class TemplateManager
1716{
@@ -35,11 +34,11 @@ public function __construct(
3534 public function create (CreateTemplateDto $ createTemplateDto ): Template
3635 {
3736 $ template = (new Template ($ createTemplateDto ->title ))
38- ->setContent ($ createTemplateDto ->content )
3937 ->setText ($ createTemplateDto ->text );
4038
41- if ($ createTemplateDto ->fileContent ) {
42- $ template ->setContent ($ createTemplateDto ->fileContent );
39+ $ content = $ createTemplateDto ->fileContent ?? $ createTemplateDto ->content ;
40+ if ($ content !== null ) {
41+ $ template ->setContent ($ content );
4342 }
4443
4544 $ context = (new ValidationContext ())
@@ -59,19 +58,38 @@ public function create(CreateTemplateDto $createTemplateDto): Template
5958 return $ template ;
6059 }
6160
62- public function update (UpdateSubscriberDto $ updateSubscriberDto ): Subscriber
61+ public function update (Template $ template , UpdateTemplateDto $ updateTemplateDto ): Template
6362 {
64- /** @var Subscriber $subscriber */
65- $ subscriber = $ this ->templateRepository ->find ($ updateSubscriberDto ->subscriberId );
63+ if ($ updateTemplateDto ->title !== null ) {
64+ $ template ->setTitle ($ updateTemplateDto ->title );
65+ }
66+
67+ if ($ updateTemplateDto ->text !== null ) {
68+ $ template ->setText ($ updateTemplateDto ->text );
69+ }
70+
71+ $ content = $ updateTemplateDto ->fileContent ?? $ updateTemplateDto ->content ;
72+ if ($ content !== null ) {
73+ $ template ->setContent ($ content );
74+ }
75+
76+ $ context = (new ValidationContext ())
77+ ->set ('checkLinks ' , $ updateTemplateDto ->shouldCheckLinks )
78+ ->set ('checkImages ' , $ updateTemplateDto ->shouldCheckImages )
79+ ->set ('checkExternalImages ' , $ updateTemplateDto ->shouldCheckExternalImages );
80+
81+ $ this ->templateLinkValidator ->validate ($ template ->getContent () ?? '' , $ context );
82+
83+ $ imageUrls = $ this ->templateImageManager ->extractAllImages ($ template ->getContent () ?? '' );
84+ $ this ->templateImageValidator ->validate ($ imageUrls , $ context );
6685
67- $ subscriber ->setEmail ($ updateSubscriberDto ->email );
68- $ subscriber ->setConfirmed ($ updateSubscriberDto ->confirmed );
69- $ subscriber ->setBlacklisted ($ updateSubscriberDto ->blacklisted );
70- $ subscriber ->setHtmlEmail ($ updateSubscriberDto ->htmlEmail );
71- $ subscriber ->setDisabled ($ updateSubscriberDto ->disabled );
72- $ subscriber ->setExtraData ($ updateSubscriberDto ->additionalData );
86+ foreach ($ template ->getImages () as $ image ) {
87+ $ this ->templateImageManager ->delete ($ image );
88+ }
89+
90+ $ this ->templateImageManager ->createImagesFromImagePaths ($ imageUrls , $ template );
7391
74- return $ subscriber ;
92+ return $ template ;
7593 }
7694
7795 public function delete (Template $ template ): void
0 commit comments