%PDF- %PDF-
Direktori : /var/www/html/bbw/farmaci/kritik-portale/module/Basis/src/Basis/Handler/ |
Current File : /var/www/html/bbw/farmaci/kritik-portale/module/Basis/src/Basis/Handler/MailHandler.php |
<?php /** * Created by PhpStorm. * User: Julian Gilles * Date: 28.07.14 * Time: 11:08 */ namespace Basis\Handler; use Basis\Event\Event; use Basis\Handler\BaseHandler; use Basis\Model\User\UserFactory; use Exception; use ReviewBase\DB\TableGateway\Feature\CertifiedOrNullFeature; use ReviewBase\DB\TableGateway\Feature\InspectFeature; use SlmMail\Mail\Message\Mandrill; use SlmMail\Mail\Transport\HttpTransport; use SlmMail\Service\MandrillService; use Zend\I18n\Translator\Translator; use Zend\Mail; use Zend\Mime\Message as MimeMessage; use Zend\Mime\Part as MimePart; use Zend\Http\Client; use Zend\Json\Json; use Zend\Mail\Storage\Folder\Maildir; class MailHandler extends BaseHandler { protected $_contentHtml = <<<'HTML' <tr> <td width="600" colspan="3" height="8" class="layout"> </td> </tr> <tr> <td width="10"></td> <td width="580">*|CONTENT|*</td> <td width="10"></td> </tr> <tr> <td width="600" colspan="3" height="38" class="layout"> </td> </tr> HTML; protected $_serviceLocator; /* * @var \SlmMail\Mail\Transport\HttpTransport $_mandrillTransport */ protected $_mandrillTransport; /* * @var \SlmMail\Service\MandrillService $_mandrillService */ protected $_mandrillService; protected $_urlViewHelper; /* * @var string $baseUrl */ protected $_baseUrl; protected $_fromMail; protected $_fromMailNoReply; protected $_fromName; protected $_developmentOutgoingMail; protected $_bccMail; // protected $_developmentEmailMode; protected $_applicationConfig = null; protected $_emailConfig; protected $_emailMode; protected $_useMailcatcher; protected $_helpDeskLink; protected $_translator = null; protected $_marketingURL = null; protected $_teamName = null; /* * @var \Basis\Model\User\UserFactory $_userFactory */ // protected $_userFactory; public function __construct($serviceLocator, HttpTransport $mandrillTransport, MandrillService $mandrillService, $translator, $applicationConfig, $emailConfig)//, $developmentEmailMode, $useMailcatcher) //UserFactory $userFactory) { $this->_emailConfig = $emailConfig; $this->_applicationConfig; $this->translator = $translator; $this->_marketingURL = $this->translator->translate('marketingURL'); $this->_helpDeskLink = $applicationConfig['helpdesk_url'];//'https://apotheken-kritik.zendesk.com/hc/de'; $this->_fromMail = $applicationConfig['support_email_address'];//"support@apotheken-kritik.de"; $this->_fromMailNoReply = $applicationConfig['noreply_email_address'];//"noreply@apotheken-kritik.de"; $this->_fromName = $applicationConfig['from_name_email'];//"apotheken-kritik.de"; $this->_teamName = $applicationConfig['team_name']; //@todo replace developing outgoing email to slack channel email $this->_developmentOutgoingMail = $this->_emailConfig['catchAllEmail'];//"florian.koller@conlabz.de"; $this->_bccMail = $this->_developmentOutgoingMail; $this->_emailMode = $this->_emailConfig['emailMode']; $this->_urlViewHelper = $serviceLocator->get('viewhelpermanager')->get('url'); $this->_showUrlViewHelper = $serviceLocator->get('viewhelpermanager')->get('ReviewPharmacy\View\Helper\ShowUrlHelper'); $this->_serviceLocator = $serviceLocator; $this->_mandrillTransport = $mandrillTransport; $this->_mandrillService = $mandrillService; //$this->_userFactory = new \Basis\Model\User\UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $this->_baseUrl = $applicationConfig['base_url'];//getenv('APPLICATION_ENV') == "development" ? "http://www.apotheken-kritik.dev" : "http://www.apotheken-kritik.de"; // $this->_developmentEmailMode = $developmentEmailMode; // $this->_useMailcatcher = $useMailcatcher; // Entity //$this->setTable('user'); //$this->setEntityType("Basis\Entity\UserEntity"); // listening $this->addEvent("Basis\Event\User\UserChangedCreatedAt", "sendRegistrationMail"); $this->addEvent("Basis\Event\User\UserChangedRemind", "sendRemindMail"); $this->addEvent("Basis\Event\User\UserChangedForgotten", "sendForgottenMail"); $this->addEvent("Basis\Event\User\UserSendMailClaimInformation", "sendClaimInformationMail"); $this->addEvent("Basis\Event\User\UserSendMailClaimCollision", "sendClaimCollisionMail"); $this->addEvent("Basis\Event\User\UserSendMailClaimSuccessful", "sendClaimSuccessfulMail"); $this->addEvent("Basis\Event\User\UserChangedVerifyMail", "sendRegistrationMail"); $this->addEvent("ReviewBase\Event\RateableObjectSite\RateableObjectSiteSendMailClaimActivation", "sendClaimActivationMail"); $this->addEvent("ReviewBase\Event\RateableObjectSite\RateableObjectSiteSendMailClaimActivationReminder", "sendClaimActivationReminderMail"); $this->addEvent("ReviewBase\Event\AbstractRateableObject\AbstractRateableObjectCreated", "sendPharmacyCreatedMail"); $this->addEvent("ReviewBase\Event\AbstractRateableObject\AbstractRateableObjectChanged", "sendPharmacyChangedMail"); $this->addEvent("ReviewBase\Event\AbstractReview\ReviewApprovedMail", "sendCommentNotificationMail"); } private function renderMailContent($text) { $html = ""; $html .= str_replace("*|CONTENT|*", $text, $this->_contentHtml); return $html; } protected function renderMailContentIntoTemplate($title, $text, $templateHTML) { //render mail content into content part $html = ''; $html .= str_replace('*|CONTENT|*', $text, $this->_contentHtml); //render title into template $templateHTML = str_replace('*|TITLE|*', $title, $templateHTML); //render content part into template $templateHTML = str_replace('*|CONTENT|*', $html, $templateHTML); return $templateHTML; } protected function sendMail($from, $to, $subject, $content, $title, $ignoreDevelopmentEmailMode = false) { try { $this->transportEmail($from, $to, $subject, $content, $title, $ignoreDevelopmentEmailMode); } catch(Exception $e) { $e->getMessage(); } } protected function transportEmail ($from, $to, $subject, $content, $title, $ignoreDevelopmentEmailMode = false) { /** * if developmentEmailMode is set to true && flag to ignore is not set * send emails to developer email address */ // if ($this->_developmentEmailMode && !$ignoreDevelopmentEmailMode) // { // $to = $this->_developmentOutgoingMail; // } $originalToRecipient = $to; //rewrite all recipients to development email address $to = $this->_developmentOutgoingMail; //this is a developer option only (from code and not from config) if ($ignoreDevelopmentEmailMode) { $to = $originalToRecipient; } //decide how to transport if ($this->_emailMode === 'production') { $this->_useMailcatcher = false; //explicitly set recipient to original - this is outgoing email $to = $originalToRecipient; } elseif ($this->_emailMode === 'staging') { $this->_useMailcatcher = false; //make sure to send to development email address $to = $this->_developmentOutgoingMail; } else { //development mode assumed or all else $this->_useMailcatcher = true; } //send normally (via Mandrill) with configured email address if(!$this->_useMailcatcher) { $client = new Client(); $client->setOptions(array('sslcapath' => '/etc/ssl/certs')); $this->_mandrillService->setClient($client); $message = new Mandrill(); $message->addFrom($from, $this->_fromName); $message->addTo($to); $message->setSubject($subject); $message->setEncoding("UTF-8"); $message->setTemplate("apotheken-notification"); $message->setOption("important", true); $message->setGlobalVariables( array( "title" => $title, "content" => $this->renderMailContent( $content ), "likeurl" => "$this->_baseUrl", "email" => $from, "webversion" => "$this->_baseUrl" ) ); //use mandrill transport layer try { $this->_mandrillTransport->send($message); } catch(Exception $e) { $e->getMessage(); } } elseif ($this->_useMailcatcher) { /** * we are on local development so use sendmail for emails and Mailcatcher will get them */ $mailcatcherMessage = new Mail\Message(); $mailcatcherMessage->setEncoding('UTF-8'); $mandrillResponse = null; //render template from mandrill and use this with the content for the message body $client = new Client(); $client->setOptions(array('sslcapath' => '/etc/ssl/certs')); $this->_mandrillService->setClient($client); //try to render template try { $mandrillResponse = $this->_mandrillService->renderTemplate('apotheken-notification'); } catch(Exception $e) { $e->getMessage(); } //check if there was a valid && usable response from mandrill if (isset($mandrillResponse) && array_key_exists('html', $mandrillResponse)) { $mandrillTemplateWithContent = $this->renderMailContentIntoTemplate($title, $content, $mandrillResponse['html']); $html = new MimePart($mandrillTemplateWithContent); $html->type = "text/html"; $body = new MimeMessage(); $body->addPart($html); $mailcatcherMessage->setBody($body); } else { //use plain text content without template since none could be rendered $textOnlyContent = $title . '<br>' . $content; $mailcatcherMessage->setBody($textOnlyContent); } $mailcatcherMessage->addTo($to); $mailcatcherMessage->setFrom($from); $mailcatcherMessage->setSubject($subject); $mailcatcherTransport = new Mail\Transport\Sendmail(); $mailcatcherTransport->send($mailcatcherMessage); } } protected function getUserEmail($entityID) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $user = $userFactory->getUser($entityID); $userEmail = $user->getEmail(); return $userEmail; } protected function getPharmacyEditLink($entityID) { $link = "<a mc:disable-tracking href='" . $this->_baseUrl . "masterdata/pharmacy/" . $entityID ."'>Apotheke verwalten</a>"; return $link; } protected function sendClaimCollisionMail(Event $event) { $id = $event->getEntityId(); $userEmail = $this->getUserEmail($id); $params = $event->getParams(false); $subject = "Übernahme der Apotheke: " . $params->aponame; $title = "Apotheke wird schon verwaltet"; $content = "Die von Ihnen beanspruchte Apotheke wird aktuell schon von " . "einem Nutzer verwaltet. Bitte setzen Sie sich mit unserem Support " . "in Verbindung falls Sie der Auffassung sind die Berechtigung zu haben " . "die Apotheke zu verwalten.<br>" . "Den HelpDesk-Bereich erreichen Sie über nachfolgenden Link.<br> " . "<a mc:disable-tracking href='" . $this->_helpDeskLink ."'>An Support wenden</a>"; $this->sendMail($this->_fromMail, $userEmail, $subject, $content, $title, true); } protected function sendClaimSuccessfulMail(Event $event) { $id = $event->getEntityId(); $userEmail = $this->getUserEmail($id); $params = $event->getParams(false); $subject = "Übernahme der Apotheke: " . $params->aponame; $title = "Übernahme erfolgreich"; $content = "Die von Ihnen beanspruchte Apotheke wurde Ihnen zur Verwaltung " . "übertragen. Sie können diese nun in Ihrem Benutzerkonto und " . "über den nachfolgenden Link bearbeiten. <br><br>" . $this->getPharmacyEditLink($params->entityid); /** * ignore development email mode since these emails will be send to * registered users */ $this->sendMail($this->_fromMailNoReply, $userEmail, $subject, $content, $title, true); } protected function sendClaimActivationMail(Event $event) { $id = $event->getEntityId(); $params = $event->getParams(false); $pharmacyEmail = $params->sentTo; $subject = "Aktivierung des verantwortlichen Nutzers der Apotheke " . $params->aponame; $title = "Aktivierung prüfen"; $userString = $params->usersalutation . " " . $params->usertitle . " " . $params->username . " " . $params->userlastname; $content = "Sehr geehrte Damen und Herren, <br>" . "Auf " . $this->_marketingURL . " hat ein Benutzer die Verwaltung " . "Ihres Apothekeneintrages beantragt. <br><br>" . "Wollen Sie dem folgenden Nutzer die Verwaltung der Apotheke: <br>" . $params->aponame . " gestatten?<br>" . "Nutzerdaten: <br>" . $userString . " (" . $params->useremail . ")<br>" . "Sie können den Nutzer als Verwalter der Apotheke freischalten " . "indem Sie den nachfolgenden Aktivierungslink aufrufen.<br><br>" . "<a mc:disable-tracking href='" . $this->_baseUrl."activate/" . $params->hash ."'>" . $userString . " als Verwalter aktivieren</a>"; $this->sendMail($this->_fromMail, $pharmacyEmail, $subject, $content, $title); } protected function sendClaimActivationReminderMail(Event $event) { $id = $event->getEntityId(); $params = $event->getParams(false); $pharmacyEmail = $params->sentTo; $subject = "Erinnerung zur Aktivierung des verantwortlichen Nutzers der Apotheke " . $params->aponame; $title = "Erinnerung: Aktivierung prüfen"; $userString = $params->usersalutation . " " . $params->usertitle . " " . $params->username . " " . $params->userlastname; $content = "Sehr geehrte Damen und Herren, <br>" . "Auf $this->_marketingURL hat ein Benutzer die Verwaltung " . "Ihres Apothekeneintrages beantragt. <br>" . "Die angeforderte Verknüpfung zwischen Nutzer und Apotheke ist " . "noch nicht abgeschlossen. Sie können dies über den folgenden Link " . "nachholen. <br><br>" . "Wollen Sie dem folgenden Nutzer die Verwaltung der Apotheke: <br>" . $params->aponame . " gestatten?<br>" . "Nutzerdaten: <br>" . $userString . " (" . $params->useremail . ")<br>" . "Sie können den Nutzer als Verwalter der Apotheke freischalten " . "indem Sie den nachfolgenden Aktivierungslink aufrufen.<br><br>" . "<a mc:disable-tracking href='" . $this->_baseUrl."activate/" . $params->hash ."'>" . $userString . " als Verwalter aktivieren</a>"; $this->sendMail($this->_fromMail, $pharmacyEmail, $subject, $content, $title); } protected function sendClaimInformationMail(Event $event) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $id = $event->getEntityId(); $user = $userFactory->getUser($id); $userEmail = $user->getEmail(); $params = $event->getParams(false); $subject = "Übernahme der Apotheke: " . $params->aponame; $title = "Eintrag übernehmen"; $content = "Die von Ihnen beanspruchte Apotheke kann Ihnen nicht direkt " . "zugeordnet werden. Bitte erstellen Sie in unserem Supportbereich " . "eine entsprechende Anfrage, ein Mitarbeiter wird sich dann um " . "diese kümmern und Ihnen nach erfolgter Prüfung die Apotheke zuweisen. " . "Den HelpDesk-Bereich erreichen Sie über nachfolgenden Link.<br> " . "<a mc:disable-tracking href='" . $this->_helpDeskLink ."'>An Support wenden</a>"; $this->sendMail($this->_fromMailNoReply, $userEmail, $subject, $content, $title, true); } protected function sendPharmacyCreatedMail(Event $event) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $pharmacy = $event->getRateableObject(); $owner = $userFactory->getUser($pharmacy->getOwner()); $ownerEmail = $owner->getEmail(); $statusOfPharmacy = $pharmacy->getStatus(); /** * only send email if the one was created from frontend user and has * to await approval from support */ if($statusOfPharmacy === InspectFeature::STATUS_INSPECT) { $subject = "Neuanlage der Apotheke: " . $pharmacy->getName(); $title = "Apotheke in Prüfung befindlich"; $content = "Die von Ihnen angelegte Apotheke befindet sich in der Prüfung. <br>" . "Sobald diese freigeschaltet wird werden Sie darüber informiert."; $this->sendMail($this->_fromMailNoReply, $ownerEmail, $subject, $content, $title, true); } } protected function sendPharmacyOwnerChangedMail($pharmacy, $oldOwnerID, $newOwnerID) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $subject = "Verwalterwechsel der Apotheke: " . $pharmacy->getName(); $title = "Wechsel des verantwortlichen Nutzers"; if (!empty($oldOwnerID)) { $oldOwner = $userFactory->getUser($oldOwnerID); $oldOwnerEmail = $oldOwner->getEmail(); $content = "Sehr geehrte/r " . $oldOwner->getSalutation() . " " . $oldOwner->getTitle() . " " . $oldOwner->getSurname() . ",<br> Die Verwaltung der Apotheke: " . $pharmacy->getName() . " wurde auf einen anderen Nutzer übertragen."; $this->sendMail($this->_fromMailNoReply, $oldOwnerEmail, $subject, $content, $title); } if (!empty($newOwnerID)) { $newOwner = $userFactory->getUser($newOwnerID); $newOwnerEmail = $newOwner->getEmail(); $content = "Sehr geehrte/r " . $newOwner->getSalutation() . " " . $newOwner->getTitle() . " " . $newOwner->getSurname() . ",<br> Die Verwaltung der Apotheke " . $pharmacy->getName() . " wurde auf Sie übertragen. Sie " . "erreichen diese über nachfolgenden Link. Dort können Sie " . "die Apotheke verwalten.<br>" . "<a mc:disable-tracking href='" . $this->_baseUrl . "masterdata/pharmacy/" . $pharmacy->getId() ."'>Apotheke verwalten</a>"; $this->sendMail($this->_fromMailNoReply, $newOwnerEmail, $subject, $content, $title); } } protected function sendPharmacyChangedMail(Event $event) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $changedData = Json::decode($event->getParams()); $pharmacy = $event->getRateableObject(); $ownerID = $pharmacy->getOwner(); // $oldOwnerID = $changedData->oldOwnerID; /** * check if only the owner of the pharmacy changed, if so only send * an owner change message and no data change email */ $changedDataArray = Json::decode($event->getParams(), true); $onlyOwnerChanged = false; $countOfChangedFields = count($changedDataArray); if (($countOfChangedFields === 2) && array_key_exists('oldOwnerID', $changedDataArray) && array_key_exists('owner', $changedDataArray)) { $onlyOwnerChanged = true; } /** * check if there was a change in ownership of the object and send emails * accordingly */ if (array_key_exists('oldOwnerID', $changedDataArray) && ($changedDataArray['oldOwnerID'] !== $ownerID)) { $this->sendPharmacyOwnerChangedMail($pharmacy, $changedDataArray['oldOwnerID'], $ownerID); } if (!empty($ownerID) && !$onlyOwnerChanged) { $owner = $userFactory->getUser($ownerID); $ownerEmail = $owner->getEmail(); $subject = 'Änderungen an Ihrer Apotheke: '.$pharmacy->getName(); $title = 'Apothekendatenänderung'; $content = "Sehr geehrte/r " . $owner->getSalutation() . " " . $owner->getTitle() . " " . $owner->getSurname() . ",<br> Die Daten Ihrer Apotheke: " . $pharmacy->getName() . " haben " . "sich geändert. Falls Sie diese Änderungen durchgeführt haben, " . "müssen Sie nichts weiter unternehmen. Die Änderungen können " . "Sie über nachfolgenden Link einsehen.<br>" . "<a mc:disable-tracking href='" . $this->_baseUrl . "masterdata/pharmacy/" . $pharmacy->getId() ."'>Änderungen prüfen</a><br>" . "Für den Fall das Sie diese Änderungen nicht vorgenommen haben " . "kontaktieren Sie bitte unseren Support."; $this->sendMail($this->_fromMail, $ownerEmail, $subject, $content, $title); } } protected function sendRegistrationMail(Event $event) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $id = $event->getEntityId(); $user = $userFactory->getUser($id); $userMail = is_null($user->getVerifyMail()) ? $user->getEmail() : $user->getVerifyMail(); /* * send registration mail if * - user is new and not active * - user should confirm a new mail address */ if($user->getActive() == "0" || !is_null($user->getVerifyMail())){ $client = new Client(); $client->setOptions(array('sslcapath' => '/etc/ssl/certs')); $this->_mandrillService->setClient($client); $userString = $this->getUserSalutationString($user); $textContent = $userString . ",<br> klicken Sie bitte auf folgenden Link um Ihren Zugang zu aktivieren:<br><br> <a mc:disable-tracking href='" . $this->_baseUrl . "register/confirm/". $user->getHash() ."'>Jetzt $this->_marketingURL - Konto aktivieren</a>" . "<br><br>" . "Ihre Zugangsdaten lauten: <br>" . "E-Mail-Adresse: " . $userMail . "<br>" . "Passwort: --- nur Ihnen bekannt --- <br><br>" . "Ihre Registrierung ist völlig kostenlos und beinhaltet keinerlei " . "Verbindlichkeiten. Ihre E-Mail-Adresse wird nicht bekannt gegeben. " . "Bei weiteren Fragen finden Sie Informationen in unserem Hilfe-Bereich. " . "Sollten Sie Ihre Frage nicht finden, helfen wir Ihnen unter der " . "E-Mail-Adresse $this->_fromMail gerne weiter.<br><br>" . "Mit freundlichen Grüßen<br>" . "Ihr $this->_teamName Team<br><br>" . "Sollte der oben stehende Link nicht funktionieren, kopieren Sie sich " . "bitte diesen Link und rufen Sie ihn in einem Browser-Fenster auf: <br><br>" . $this->_baseUrl. "register/confirm/". $user->getHash() ."<br><br>" . "Bitte beachten Sie: Dies ist eine automatisch generierte E-Mail - " . "eine Antwort auf diese E-Mail ist nicht möglich. Weitergehende " . "Informationen finden Sie in unseren Nutzungsbedingungen und FAQs."; // $message = new Mandrill(); // $message->addFrom($this->_fromMailNoReply, $this->_fromName); // $message->addTo($userMail); // $message->setSubject("Ihre Registrierung bei apotheken-kritik.de"); // $message->setEncoding("UTF-8"); // $message->setTemplate("apotheken-notification"); // $message->setOption("important", true); // // $message->setGlobalVariables( // array( // "title" => "Aktivierung der Registrierung", // "content" => $this->renderMailContent( // $textContent ), // "likeurl" => "http://www.apotheken-kritik.de", // "email" => $this->_fromMailNoReply, // "webversion" => "http://www.apotheken-kritik.de" // ) // ); // try { // $this->_mandrillTransport->send($message); // } catch(Exception $e) { // $e->getMessage(); // } $title = "Aktivierung der Registrierung"; $subject = "Ihre Registrierung bei $this->_marketingURL"; $content = $this->renderMailContent($textContent); $this->sendMail($this->_fromMailNoReply, $userMail, $subject, $content, $title, true); } } protected function sendRemindMail(Event $event) { $params = $event->getParams(false); if($params->remind){ $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $client = new Client(); $client->setOptions(array('sslcapath' => '/etc/ssl/certs')); $this->_mandrillService->setClient($client); $id = $event->getEntityId(); $user = $userFactory->getUser($id); // $message = new Mandrill(); // $message->addFrom($this->_fromMailNoReply, $this->_fromName); // $message->addTo($user->getEmail()); // $message->setSubject("Erinnerung: Ihre Registrierung bei apotheken-kritik.de"); // $message->setEncoding("UTF-8"); // $message->setTemplate("apotheken-notification"); // $message->setOption("important", true); $userString = $this->getUserSalutationString($user); $textContent = $userString . ",<br>" . "die Aktivierung Ihres Zugangs für $this->_marketingURL ist noch nicht abgeschlossen.<br>" . "klicken Sie bitte auf folgenden Link um Ihren Zugang zu aktivieren:<br><br>" . "<a mc:disable-tracking href='" . $this->_baseUrl . "register/confirm/". $user->getHash() ."'>Jetzt $this->_marketingURL - Konto aktivieren</a>" . "<br><br>" . "Ihre Zugangsdaten lauten: <br>" . "E-Mail-Adresse: " . $user->getEmail() . "<br>" . "Passwort: --- nur Ihnen bekannt --- <br>" . "Ihre Registrierung ist völlig kostenlos und beinhaltet keinerlei " . "Verbindlichkeiten. Ihre E-Mail-Adresse wird nicht bekannt gegeben.<br>" . "Bei weiteren Fragen finden Sie Informationen in unserem Hilfe-Bereich. " . "Sollten Sie Ihre Frage nicht finden, helfen wir Ihnen unter der " . "E-Mail-Adresse $this->_fromMail gerne weiter.<br><br>" . "Mit freundlichen Grüßen<br>" . "Ihr $this->_teamName Team<br><br>" . "Sollte der oben stehende Link nicht funktionieren, kopieren Sie sich " . "bitte diesen Link und rufen Sie ihn in einem Fenster auf: <br>" . $this->_baseUrl. "register/confirm/". $user->getHash() ."<br>" . "Bitte beachten Sie: Dies ist eine automatisch generierte E-Mail - " . "eine Antwort auf diese E-Mail ist nicht möglich. Weitergehende " . "Informationen finden Sie in unseren Nutzungsbedingungen und FAQs."; // $message->setGlobalVariables( // array( // "title" => "Erinnerungsmail", // "content" => $this->renderMailContent( // $textContent ), // "likeurl" => "http://www.apotheken-kritik.de", // "email" => $this->_fromMailNoReply, // "webversion" => "http://www.apotheken-kritik.de" // ) // ); // // try { // $this->_mandrillTransport->send($message); // } catch(Exception $e) { // $e->getMessage(); // } $title = "Erinnerungsmail"; $subject = "Erinnerung: Ihre Registrierung bei $this->_marketingURL"; $content = $this->renderMailContent($textContent); $this->sendMail($this->_fromMailNoReply, $user->getEmail(), $subject, $content, $title, true); } } protected function sendForgottenMail(Event $event) { $params = $event->getParams(false); if($params->forgotten){ $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); $id = $event->getEntityId(); $user = $userFactory->getUser($id); // $client = new Client(); // $client->setOptions(array('sslcapath' => '/etc/ssl/certs')); // $this->_mandrillService->setClient($client); // // $message = new Mandrill(); // $message->addFrom($this->_fromMailNoReply, $this->_fromName); // $message->addTo($user->getEmail()); // $message->setSubject("Passwort zurücksetzen"); // $message->setEncoding("UTF-8"); // $message->setTemplate("apotheken-notification"); // $message->setOption("important", true); $userString = $this->getUserSalutationString($user); $textContent = $userString . ",<br> um Ihr Passwort für $this->_marketingURL zurückzusetzen, klicken Sie bitte auf den unten folgenden Link.<br><br> <a mc:disable-tracking href='" . $this->_baseUrl . "register/setback/". $user->getHash() ."'>Passwort zurücksetzen</a>"; // $message->setGlobalVariables( // array( // "title" => "Passwort zurücksetzen", // "content" => $this->renderMailContent( // $textContent ), // "likeurl" => "http://www.apotheken-kritik.de", // "email" => $this->_fromMailNoReply, // "webversion" => "http://www.apotheken-kritik.de" // ) // ); // try { // $this->_mandrillTransport->send($message); // } catch(Exception $e) { // $e->getMessage(); // } $title = "Passwort zurücksetzen"; $subject = $title; $content = $this->renderMailContent($textContent); $this->sendMail($this->_fromMailNoReply, $user->getEmail(), $subject, $content, $title, true); } } protected function getUserSalutationString($user) { $salutation = $user->getSalutation(); switch($salutation) { case 'Herr': $salutation = "Sehr geehrter ". $salutation; break; case 'Frau': $salutation = "Sehr geehrte ". $salutation; break; default: $salutation = "Sehr geehrte/r "; break; } $userString = $salutation . " " . $user->getTitle(); $surname = $user->getSurname(); $userString = $userString . " " . $surname; // if(!empty($surname)) // { // $userString = $userString . " " . $surname; // } // else // { // $userString = $userString . " " . $user->getUsername(); // } return $userString; } protected function sendCommentNotificationMail(Event $event) { $userFactory = new UserFactory($this->_serviceLocator, $this->_serviceLocator->get("eventBus")); /** @var \ReviewPharmacy\Model\ReviewPharmacy $review */ $review = $event->getReview(); /** @var \ReviewPharmacy\Model\Pharmacy $pharmacy */ $pharmacy = $event->getRateableObject(); $emailExists = false; $ownerExists = false; $owner = $userFactory->getUser($pharmacy->getOwner()); $ownerEmail = $owner->getEmail(); $pharmacyEmail = $pharmacy->getEmail(); if (!empty($ownerEmail)) { $ownerExists = true; $emailAddress = $ownerEmail; } else { $ownerExists = false; $emailAddress = $pharmacyEmail; } if (!empty($emailAddress)) { $emailExists = true; } if($emailExists && $review->getCommentStatus() == CertifiedOrNullFeature::STATUS_CERTIFIED) { $salutation = "Sehr geehrte Damen und Herren"; if ($ownerExists) { $salutation = $this->getUserSalutationString($owner); } $subject = "Neue Empfehlung auf $this->_marketingURL"; $title = "Empfehlung"; $content = $salutation . ",<br><br> auf $this->_marketingURL hat ein Benutzer " . "zu Ihrer Apotheke " . $pharmacy->getName() . " eine Empfehlung abgegeben." // . "zu Ihrer Apotheke " . $pharmacy->getName() . " folgende Bewertung verfasst: <br><br>" // . "<blockquote><i><q>" . $review->getComment() . "</q></i></blockquote>"; . "<br><br>" . "Sie können die Empfehlung des Nutzers über nachfolgenden Link lesen: " . "<a mc:disable-tracking href='" . substr($this->_baseUrl, 0, -1) . $this->_showUrlViewHelper->__invoke(['id' => $pharmacy->getId(), "clientName" => $pharmacy->getName(), "city" => $pharmacy->getCity()], ['fragment' => $review->getId()]) . "'>Empfehlung lesen</a><br><br>"; if(!$ownerExists) { $content .= "Falls Sie noch nicht über einen Account auf $this->_marketingURL " . "verfügen können Sie sich über nachfolgenden Link registrieren:<br><br>" . "<a mc:disable-tracking href='" . $this->_baseUrl . "register" . "'>Registrieren auf $this->_marketingURL</a><br><br>"; // $content .= "<br><br>" // . "Sie können die Bewertung des Nutzers über nachfolgenden Link lesen: " // . "<a mc:disable-tracking href='" . $this->_baseUrl . "show/" // . $pharmacy->getId() ."#" . $review->getId() . "'>Bewertung lesen</a><br><br>" // . "Falls Sie noch nicht über einen Account auf apotheken-kritik.de " // . "verfügen können Sie sich über nachfolgenden Link registrieren:<br><br>" // . "<a mc:disable-tracking href='" . $this->_baseUrl . "register" // . "'>Registrieren auf apotheken-kritik.de</a><br><br>"; } else { //if($pharmacy->getPlanAttributeValue("review_answerable")){ $content .= "Unter folgenden Link können Sie, falls Ihre Apotheke eine Premium-Apotheke ist, eine Antwort auf die Empfehlung verfassen: <a mc:disable-tracking href='" . $this->_baseUrl . "masterdata/answer/" . $review->getId() . "'>" . $this->translator->translate('Reply to recommendation'). "</a><br><br>"; //} } $content .= "Auf $this->_marketingURL haben Sie die Möglichkeit im Basispaket kostenlos " . "die wichtigsten Informationen Ihrer Apotheke zu verwalten. Dazu gehören " . "unter anderem die Verwaltung der Stammdaten, die Angabe von Öffnungszeiten " . "und Notdiensten sowie die Möglichkeit ein " . "repräsentatives Bild Ihrer Apotheke zu hinterlegen."; $this->sendMail($this->_fromMailNoReply, $emailAddress, $subject, $content, $title, false); } } }