... | ... |
@@ -62,7 +62,7 @@ class NewsSendTestmailListener |
62 | 62 |
'date' => date('d.m.Y',$News->date), |
63 | 63 |
'headline' => $News->headline, |
64 | 64 |
'teaser' => $News->teaser ? StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) : '', |
65 |
- 'text_plain' => $strText ? strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$strText)) : strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)), |
|
65 |
+ 'text_plain' => $strText ? strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$strText)) : ($News->teaser ? strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)) : ''), |
|
66 | 66 |
'text_html' => $strText ?: $News->teaser |
67 | 67 |
); |
68 | 68 |
|
... | ... |
@@ -14,6 +14,8 @@ namespace vonRotenberg\NewsmailerBundle\EventListener; |
14 | 14 |
|
15 | 15 |
use Contao\BackendUser; |
16 | 16 |
use Contao\Config; |
17 |
+use Contao\ContentModel; |
|
18 |
+use Contao\Controller; |
|
17 | 19 |
use Contao\CoreBundle\ServiceAnnotation\Callback; |
18 | 20 |
use Contao\DataContainer; |
19 | 21 |
use Contao\Message; |
... | ... |
@@ -45,10 +47,23 @@ class NewsSendTestmailListener |
45 | 47 |
|
46 | 48 |
if ($News !== null && ($Archive = $News->getRelated('pid')) !== null && ($Notification = Notification::findByPk($Archive->nc_notification)) !== null) |
47 | 49 |
{ |
50 |
+ $strText = ''; |
|
51 |
+ $objContentElement = ContentModel::findPublishedByPidAndTable($News->id, 'tl_news'); |
|
52 |
+ |
|
53 |
+ if ($objContentElement !== null) |
|
54 |
+ { |
|
55 |
+ while ($objContentElement->next()) |
|
56 |
+ { |
|
57 |
+ $strText .= Controller::getContentElement($objContentElement->current()); |
|
58 |
+ } |
|
59 |
+ } |
|
60 |
+ |
|
48 | 61 |
$arrRow = array( |
49 | 62 |
'date' => date('d.m.Y',$News->date), |
50 | 63 |
'headline' => $News->headline, |
51 |
- 'teaser' => $News->teaser ? StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) : '' |
|
64 |
+ 'teaser' => $News->teaser ? StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) : '', |
|
65 |
+ 'text_plain' => $strText ? strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$strText)) : strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)), |
|
66 |
+ 'text_html' => $strText ?: $News->teaser |
|
52 | 67 |
); |
53 | 68 |
|
54 | 69 |
if (($objJumpTo = $Archive->getRelated('jumpTo')) !== null) |
... | ... |
@@ -59,6 +74,8 @@ class NewsSendTestmailListener |
59 | 74 |
|
60 | 75 |
$arrNewsPlain[] = date('d.m.Y',$News->date).' - '.$News->headline; |
61 | 76 |
$arrNewsHtml[] = '<div style="margin-bottom: 15px;"><h3>'.$arrRow['date'].' '.$arrRow['headline'].'</h3><p>'.$arrRow['teaser'].'</p>'. ($arrRow['url'] ? '<p><a href="'.$arrRow['url'].'">» Ganze Nachricht lesen...</a></p>' : '') .'</div>'; |
77 |
+ $arrNewsFullPlain[] = date('d.m.Y',$News->date).' - '.$News->headline . "\n" . $arrRow['text_plain']; |
|
78 |
+ $arrNewsFullHtml[] = '<div style="margin-bottom: 15px;"><h3>'.$arrRow['date'].' '.$arrRow['headline'].'</h3>' . $arrRow['text_html'] . ($arrRow['url'] ? '<p><a href="'.$arrRow['url'].'">» Ganze Nachricht lesen...</a></p>' : '') .'</div>'; |
|
62 | 79 |
|
63 | 80 |
// User |
64 | 81 |
$strEmail = $User->email; |
... | ... |
@@ -86,6 +103,8 @@ class NewsSendTestmailListener |
86 | 103 |
'member_lastname' => $strLastname, |
87 | 104 |
'news_topics' => implode("\n",$arrNewsPlain), |
88 | 105 |
'news_topics_html' => "<ul>\n<li>".str_replace('%%_TOKEN_%%',$strToken,implode("</li>\n<li>",$arrNewsHtml))."</li>\n</ul>", |
106 |
+ 'news_full' => implode("\n",$arrNewsFullPlain), |
|
107 |
+ 'news_full_html' => implode("",$arrNewsFullHtml), |
|
89 | 108 |
'member_login_token' => $strToken, |
90 | 109 |
'admin_email' => $admin_email, |
91 | 110 |
), |
... | ... |
@@ -48,7 +48,7 @@ class NewsSendTestmailListener |
48 | 48 |
$arrRow = array( |
49 | 49 |
'date' => date('d.m.Y',$News->date), |
50 | 50 |
'headline' => $News->headline, |
51 |
- 'teaser' => \Contao\StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) |
|
51 |
+ 'teaser' => $News->teaser ? StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) : '' |
|
52 | 52 |
); |
53 | 53 |
|
54 | 54 |
if (($objJumpTo = $Archive->getRelated('jumpTo')) !== null) |
... | ... |
@@ -53,7 +53,8 @@ class NewsSendTestmailListener |
53 | 53 |
|
54 | 54 |
if (($objJumpTo = $Archive->getRelated('jumpTo')) !== null) |
55 | 55 |
{ |
56 |
- $arrRow['url'] = $objJumpTo->getAbsoluteUrl(sprintf((Config::get('useAutoItem') ? '/%s' : '/items/%s'),$News->alias)).'?ltoken=%%_TOKEN_%%'; |
|
56 |
+// $arrRow['url'] = $objJumpTo->getAbsoluteUrl(sprintf((Config::get('useAutoItem') ? '/%s' : '/items/%s'),$News->alias)).'?ltoken=%%_TOKEN_%%'; |
|
57 |
+ $arrRow['url'] = $objJumpTo->getAbsoluteUrl(sprintf((Config::get('useAutoItem') ? '/%s' : '/items/%s'),$News->alias)); |
|
57 | 58 |
} |
58 | 59 |
|
59 | 60 |
$arrNewsPlain[] = date('d.m.Y',$News->date).' - '.$News->headline; |
... | ... |
@@ -65,10 +65,10 @@ class NewsSendTestmailListener |
65 | 65 |
{ |
66 | 66 |
$strLastname = $Member->firstname; |
67 | 67 |
$strFirstname = $Member->lastname; |
68 |
- /*if ($Member->nc_news_additionalEmail) |
|
68 |
+ if ($Member->nc_news_additionalEmail) |
|
69 | 69 |
{ |
70 | 70 |
$strEmail .= ','.$Member->nc_news_additionalEmail; |
71 |
- }*/ |
|
71 |
+ } |
|
72 | 72 |
// $strToken = \TokenLogin::getOrRenewUserToken($Member); |
73 | 73 |
$strToken = ''; |
74 | 74 |
} else { |
... | ... |
@@ -53,7 +53,7 @@ class NewsSendTestmailListener |
53 | 53 |
|
54 | 54 |
if (($objJumpTo = $Archive->getRelated('jumpTo')) !== null) |
55 | 55 |
{ |
56 |
- $arrRow['url'] = $objJumpTo->getAbsoluteUrl(Config::get('useAutoItem') ? '/%s' : '/items/%s').'?ltoken=%%_TOKEN_%%'; |
|
56 |
+ $arrRow['url'] = $objJumpTo->getAbsoluteUrl(sprintf((Config::get('useAutoItem') ? '/%s' : '/items/%s'),$News->alias)).'?ltoken=%%_TOKEN_%%'; |
|
57 | 57 |
} |
58 | 58 |
|
59 | 59 |
$arrNewsPlain[] = date('d.m.Y',$News->date).' - '.$News->headline; |
... | ... |
@@ -12,10 +12,14 @@ declare(strict_types=1); |
12 | 12 |
|
13 | 13 |
namespace vonRotenberg\NewsmailerBundle\EventListener; |
14 | 14 |
|
15 |
+use Contao\BackendUser; |
|
15 | 16 |
use Contao\Config; |
16 | 17 |
use Contao\CoreBundle\ServiceAnnotation\Callback; |
17 | 18 |
use Contao\DataContainer; |
19 |
+use Contao\Message; |
|
18 | 20 |
use Contao\NewsModel; |
21 |
+use Contao\StringUtil; |
|
22 |
+use Contao\System; |
|
19 | 23 |
use NotificationCenter\Model\Notification; |
20 | 24 |
|
21 | 25 |
class NewsSendTestmailListener |
... | ... |
@@ -33,9 +37,11 @@ class NewsSendTestmailListener |
33 | 37 |
*/ |
34 | 38 |
public function onSaveCallback($varValue, DataContainer $dc) |
35 | 39 |
{ |
36 |
- if ($varValue) |
|
40 |
+ if ($varValue && System::getContainer()->get('contao.security.token_checker')->hasBackendUser()) |
|
37 | 41 |
{ |
38 | 42 |
$News = NewsModel::findByPk($dc->id); |
43 |
+ $User = BackendUser::getInstance(); |
|
44 |
+ list($admin_name,$admin_email) = StringUtil::splitFriendlyEmail(Config::get('adminEmail')); |
|
39 | 45 |
|
40 | 46 |
if ($News !== null && ($Archive = $News->getRelated('pid')) !== null && ($Notification = Notification::findByPk($Archive->nc_notification)) !== null) |
41 | 47 |
{ |
... | ... |
@@ -50,41 +56,48 @@ class NewsSendTestmailListener |
50 | 56 |
$arrRow['url'] = $objJumpTo->getAbsoluteUrl(Config::get('useAutoItem') ? '/%s' : '/items/%s').'?ltoken=%%_TOKEN_%%'; |
51 | 57 |
} |
52 | 58 |
|
53 |
- |
|
54 | 59 |
$arrNewsPlain[] = date('d.m.Y',$News->date).' - '.$News->headline; |
55 | 60 |
$arrNewsHtml[] = '<div style="margin-bottom: 15px;"><h3>'.$arrRow['date'].' '.$arrRow['headline'].'</h3><p>'.$arrRow['teaser'].'</p>'. ($arrRow['url'] ? '<p><a href="'.$arrRow['url'].'">» Ganze Nachricht lesen...</a></p>' : '') .'</div>'; |
56 | 61 |
|
57 | 62 |
// User |
58 |
- $strEmail = $this->User->email; |
|
59 |
- if (($Member = \MemberModel::findActiveByEmailAndUsername($this->User->email)) !== null) |
|
63 |
+ $strEmail = $User->email; |
|
64 |
+ if (($Member = \MemberModel::findActiveByEmailAndUsername($strEmail)) !== null) |
|
60 | 65 |
{ |
61 | 66 |
$strLastname = $Member->firstname; |
62 | 67 |
$strFirstname = $Member->lastname; |
63 |
- if ($Member->nc_news_additionalEmail) |
|
68 |
+ /*if ($Member->nc_news_additionalEmail) |
|
64 | 69 |
{ |
65 | 70 |
$strEmail .= ','.$Member->nc_news_additionalEmail; |
66 |
- } |
|
67 |
- $strToken = \TokenLogin::getOrRenewUserToken($Member); |
|
71 |
+ }*/ |
|
72 |
+// $strToken = \TokenLogin::getOrRenewUserToken($Member); |
|
73 |
+ $strToken = ''; |
|
68 | 74 |
} else { |
69 |
- $arrSplitName = explode(" ", $this->User->name); |
|
75 |
+ $arrSplitName = explode(" ", $User->name); |
|
70 | 76 |
$strLastname = array_pop($arrSplitName); |
71 | 77 |
$strFirstname = implode(" ", $arrSplitName); |
72 | 78 |
$strToken = ''; |
73 | 79 |
} |
74 | 80 |
|
75 |
- $Notification->send(array |
|
81 |
+ if ($Notification->send(array |
|
76 | 82 |
( |
77 | 83 |
'member_email' => $strEmail, |
78 | 84 |
'member_firstname' => $strFirstname, |
79 | 85 |
'member_lastname' => $strLastname, |
80 | 86 |
'news_topics' => implode("\n",$arrNewsPlain), |
81 | 87 |
'news_topics_html' => "<ul>\n<li>".str_replace('%%_TOKEN_%%',$strToken,implode("</li>\n<li>",$arrNewsHtml))."</li>\n</ul>", |
82 |
- 'member_login_token' => $strToken |
|
88 |
+ 'member_login_token' => $strToken, |
|
89 |
+ 'admin_email' => $admin_email, |
|
83 | 90 |
), |
84 |
- $GLOBALS['TL_LANGUAGE']); |
|
91 |
+ $GLOBALS['TL_LANGUAGE'])) |
|
92 |
+ { |
|
93 |
+ Message::addConfirmation(sprintf($GLOBALS['TL_LANG']['tl_news']['MSC']['nc_news_testletter'],$strEmail)); |
|
94 |
+ } else { |
|
95 |
+ Message::addError($GLOBALS['TL_LANG']['tl_news']['MSC']['nc_news_testletter_error']); |
|
96 |
+ } |
|
85 | 97 |
|
86 |
- Message::addConfirmation($GLOBALS['TL_LANG']['tl_news']['MSC']['nc_news_testletter']); |
|
87 | 98 |
} |
88 | 99 |
} |
100 |
+ |
|
101 |
+ return null; |
|
89 | 102 |
} |
90 | 103 |
} |
... | ... |
@@ -21,13 +21,16 @@ use NotificationCenter\Model\Notification; |
21 | 21 |
class NewsSendTestmailListener |
22 | 22 |
{ |
23 | 23 |
/** |
24 |
- * @Callback(table="tl_news", target="fields.nc_testmail.load) |
|
24 |
+ * @Callback(table="tl_news", target="fields.nc_testmail.load") |
|
25 | 25 |
*/ |
26 | 26 |
public function onLoadCallback($varValue, DataContainer $dc) |
27 | 27 |
{ |
28 | 28 |
return null; |
29 | 29 |
} |
30 | 30 |
|
31 |
+ /** |
|
32 |
+ * @Callback(table="tl_news", target="fields.nc_testmail.save") |
|
33 |
+ */ |
|
31 | 34 |
public function onSaveCallback($varValue, DataContainer $dc) |
32 | 35 |
{ |
33 | 36 |
if ($varValue) |
1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,87 @@ |
1 |
+<?php |
|
2 |
+ |
|
3 |
+declare(strict_types=1); |
|
4 |
+ |
|
5 |
+/* |
|
6 |
+* This file is part of newsmailer bundle for Contao. |
|
7 |
+* |
|
8 |
+* (c) Benjamin Roth |
|
9 |
+* |
|
10 |
+* @license LGPL-3.0-or-later |
|
11 |
+*/ |
|
12 |
+ |
|
13 |
+namespace vonRotenberg\NewsmailerBundle\EventListener; |
|
14 |
+ |
|
15 |
+use Contao\Config; |
|
16 |
+use Contao\CoreBundle\ServiceAnnotation\Callback; |
|
17 |
+use Contao\DataContainer; |
|
18 |
+use Contao\NewsModel; |
|
19 |
+use NotificationCenter\Model\Notification; |
|
20 |
+ |
|
21 |
+class NewsSendTestmailListener |
|
22 |
+{ |
|
23 |
+ /** |
|
24 |
+ * @Callback(table="tl_news", target="fields.nc_testmail.load) |
|
25 |
+ */ |
|
26 |
+ public function onLoadCallback($varValue, DataContainer $dc) |
|
27 |
+ { |
|
28 |
+ return null; |
|
29 |
+ } |
|
30 |
+ |
|
31 |
+ public function onSaveCallback($varValue, DataContainer $dc) |
|
32 |
+ { |
|
33 |
+ if ($varValue) |
|
34 |
+ { |
|
35 |
+ $News = NewsModel::findByPk($dc->id); |
|
36 |
+ |
|
37 |
+ if ($News !== null && ($Archive = $News->getRelated('pid')) !== null && ($Notification = Notification::findByPk($Archive->nc_notification)) !== null) |
|
38 |
+ { |
|
39 |
+ $arrRow = array( |
|
40 |
+ 'date' => date('d.m.Y',$News->date), |
|
41 |
+ 'headline' => $News->headline, |
|
42 |
+ 'teaser' => \Contao\StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) |
|
43 |
+ ); |
|
44 |
+ |
|
45 |
+ if (($objJumpTo = $Archive->getRelated('jumpTo')) !== null) |
|
46 |
+ { |
|
47 |
+ $arrRow['url'] = $objJumpTo->getAbsoluteUrl(Config::get('useAutoItem') ? '/%s' : '/items/%s').'?ltoken=%%_TOKEN_%%'; |
|
48 |
+ } |
|
49 |
+ |
|
50 |
+ |
|
51 |
+ $arrNewsPlain[] = date('d.m.Y',$News->date).' - '.$News->headline; |
|
52 |
+ $arrNewsHtml[] = '<div style="margin-bottom: 15px;"><h3>'.$arrRow['date'].' '.$arrRow['headline'].'</h3><p>'.$arrRow['teaser'].'</p>'. ($arrRow['url'] ? '<p><a href="'.$arrRow['url'].'">» Ganze Nachricht lesen...</a></p>' : '') .'</div>'; |
|
53 |
+ |
|
54 |
+ // User |
|
55 |
+ $strEmail = $this->User->email; |
|
56 |
+ if (($Member = \MemberModel::findActiveByEmailAndUsername($this->User->email)) !== null) |
|
57 |
+ { |
|
58 |
+ $strLastname = $Member->firstname; |
|
59 |
+ $strFirstname = $Member->lastname; |
|
60 |
+ if ($Member->nc_news_additionalEmail) |
|
61 |
+ { |
|
62 |
+ $strEmail .= ','.$Member->nc_news_additionalEmail; |
|
63 |
+ } |
|
64 |
+ $strToken = \TokenLogin::getOrRenewUserToken($Member); |
|
65 |
+ } else { |
|
66 |
+ $arrSplitName = explode(" ", $this->User->name); |
|
67 |
+ $strLastname = array_pop($arrSplitName); |
|
68 |
+ $strFirstname = implode(" ", $arrSplitName); |
|
69 |
+ $strToken = ''; |
|
70 |
+ } |
|
71 |
+ |
|
72 |
+ $Notification->send(array |
|
73 |
+ ( |
|
74 |
+ 'member_email' => $strEmail, |
|
75 |
+ 'member_firstname' => $strFirstname, |
|
76 |
+ 'member_lastname' => $strLastname, |
|
77 |
+ 'news_topics' => implode("\n",$arrNewsPlain), |
|
78 |
+ 'news_topics_html' => "<ul>\n<li>".str_replace('%%_TOKEN_%%',$strToken,implode("</li>\n<li>",$arrNewsHtml))."</li>\n</ul>", |
|
79 |
+ 'member_login_token' => $strToken |
|
80 |
+ ), |
|
81 |
+ $GLOBALS['TL_LANGUAGE']); |
|
82 |
+ |
|
83 |
+ Message::addConfirmation($GLOBALS['TL_LANG']['tl_news']['MSC']['nc_news_testletter']); |
|
84 |
+ } |
|
85 |
+ } |
|
86 |
+ } |
|
87 |
+} |