<?php declare(strict_types=1); /* * This file is part of newsmailer bundle for Contao. * * (c) Benjamin Roth * * @license LGPL-3.0-or-later */ namespace vonRotenberg\NewsmailerBundle\EventListener; use Contao\Config; use Contao\CoreBundle\ServiceAnnotation\Callback; use Contao\DataContainer; use Contao\NewsModel; use NotificationCenter\Model\Notification; class NewsSendTestmailListener { /** * @Callback(table="tl_news", target="fields.nc_testmail.load") */ public function onLoadCallback($varValue, DataContainer $dc) { return null; } /** * @Callback(table="tl_news", target="fields.nc_testmail.save") */ public function onSaveCallback($varValue, DataContainer $dc) { if ($varValue) { $News = NewsModel::findByPk($dc->id); if ($News !== null && ($Archive = $News->getRelated('pid')) !== null && ($Notification = Notification::findByPk($Archive->nc_notification)) !== null) { $arrRow = array( 'date' => date('d.m.Y',$News->date), 'headline' => $News->headline, 'teaser' => \Contao\StringUtil::substr(strip_tags(str_ireplace(array('<br />','<br>','<br/>','</p>','<p>'),' ',$News->teaser)),128) ); if (($objJumpTo = $Archive->getRelated('jumpTo')) !== null) { $arrRow['url'] = $objJumpTo->getAbsoluteUrl(Config::get('useAutoItem') ? '/%s' : '/items/%s').'?ltoken=%%_TOKEN_%%'; } $arrNewsPlain[] = date('d.m.Y',$News->date).' - '.$News->headline; $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>'; // User $strEmail = $this->User->email; if (($Member = \MemberModel::findActiveByEmailAndUsername($this->User->email)) !== null) { $strLastname = $Member->firstname; $strFirstname = $Member->lastname; if ($Member->nc_news_additionalEmail) { $strEmail .= ','.$Member->nc_news_additionalEmail; } $strToken = \TokenLogin::getOrRenewUserToken($Member); } else { $arrSplitName = explode(" ", $this->User->name); $strLastname = array_pop($arrSplitName); $strFirstname = implode(" ", $arrSplitName); $strToken = ''; } $Notification->send(array ( 'member_email' => $strEmail, 'member_firstname' => $strFirstname, 'member_lastname' => $strLastname, 'news_topics' => implode("\n",$arrNewsPlain), 'news_topics_html' => "<ul>\n<li>".str_replace('%%_TOKEN_%%',$strToken,implode("</li>\n<li>",$arrNewsHtml))."</li>\n</ul>", 'member_login_token' => $strToken ), $GLOBALS['TL_LANGUAGE']); Message::addConfirmation($GLOBALS['TL_LANG']['tl_news']['MSC']['nc_news_testletter']); } } } }