/** * creates default objects * * @return void * * @author Sascha Koehler <*****@*****.**> * @copyright 2011 pixeltricks GmbH * @since 05.01.2011 */ public function requireDefaultRecords() { parent::requireDefaultRecords(); $checkInfoMail = DataObject::get_one('SilvercartShopEmail', sprintf("\"Identifier\" = '%s'", 'SilvercartPaymentPrepaymentBankAccountInfo')); if (!$checkInfoMail) { $infoMail = new SilvercartShopEmail(); $infoMail->setField('Identifier', 'SilvercartPaymentPrepaymentBankAccountInfo'); $infoMail->setField('Subject', _t('SilvercartPaymentPrepayment.PAYMENT_INFO')); $infoMail->setField('EmailText', ''); $infoMail->setField('Variables', "\$SilvercartOrder"); $infoMail->write(); } }
/** * Sends a mail with the given SilvercartOrder object as data provider. * * @param SilvercartOrder $order The order object that is used to fill the * mail template variables. * * @return void * * @author Sascha Koehler <*****@*****.**> * @since 27.10.2011 */ public function sendMailFor(SilvercartOrder $order) { $shopEmails = $this->SilvercartShopEmails(); if ($shopEmails) { foreach ($shopEmails as $shopEmail) { SilvercartShopEmail::send($shopEmail->Identifier, $order->CustomersEmail, array('SilvercartOrder' => $order, 'OrderNumber' => $order->OrderNumber, 'CustomersEmail' => $order->CustomersEmail, 'FirstName' => $order->SilvercartInvoiceAddress()->FirstName, 'Surname' => $order->SilvercartInvoiceAddress()->Surname, 'Salutation' => $order->SilvercartInvoiceAddress()->Salutation)); } } $this->extend('updateSendMailFor', $order); }
/** * send a confirmation mail with order details to the customer $member * * @author Roland Lehmann <*****@*****.**>, Sebastian Diel <*****@*****.**> * @since 26.08.2011 * @return void */ public function sendConfirmationMail() { $params = array('MailOrderConfirmation' => array('Template' => 'MailOrderConfirmation', 'Recipient' => $this->CustomersEmail, 'Variables' => array('FirstName' => $this->SilvercartInvoiceAddress()->FirstName, 'Surname' => $this->SilvercartInvoiceAddress()->Surname, 'Salutation' => $this->SilvercartInvoiceAddress()->getSalutationText(), 'SilvercartOrder' => $this), 'Attachments' => null), 'MailOrderNotification' => array('Template' => 'MailOrderNotification', 'Recipient' => SilvercartConfig::DefaultMailOrderNotificationRecipient(), 'Variables' => array('FirstName' => $this->SilvercartInvoiceAddress()->FirstName, 'Surname' => $this->SilvercartInvoiceAddress()->Surname, 'Salutation' => $this->SilvercartInvoiceAddress()->getSalutationText(), 'SilvercartOrder' => $this), 'Attachments' => null)); $result = $this->extend('updateConfirmationMail', $params); SilvercartShopEmail::send($params['MailOrderConfirmation']['Template'], $params['MailOrderConfirmation']['Recipient'], $params['MailOrderConfirmation']['Variables'], $params['MailOrderConfirmation']['Attachments']); SilvercartShopEmail::send($params['MailOrderNotification']['Template'], $params['MailOrderNotification']['Recipient'], $params['MailOrderNotification']['Variables'], $params['MailOrderNotification']['Attachments']); $this->extend('onAfterConfirmationMail'); }
/** * Send the contact message via email. * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 07.08.2014 */ public function send() { $silvercartPluginCall = SilvercartPlugin::call($this, 'send'); if (!$silvercartPluginCall) { SilvercartShopEmail::send('ContactMessage', SilvercartConfig::DefaultContactMessageRecipient(), array('FirstName' => $this->FirstName, 'Surname' => $this->Surname, 'Street' => $this->Street, 'StreetNumber' => $this->StreetNumber, 'Postcode' => $this->Postcode, 'City' => $this->City, 'SilvercartCountry' => $this->SilvercartCountry(), 'Email' => $this->Email, 'Phone' => $this->Phone, 'Message' => str_replace('\\r\\n', '<br/>', nl2br($this->Message)))); } }
/** * Creates the default SilvercartShopEmails if not exists * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 02.05.2012 */ public function createDefaultShopEmails() { $shopEmailRegistrationOptIn = SilvercartShopEmail::get()->filter('Identifier', 'RegistrationOptIn')->first(); if (!$shopEmailRegistrationOptIn) { $shopEmailRegistrationOptIn = new SilvercartShopEmail(); $shopEmailRegistrationOptIn->setField('Identifier', 'RegistrationOptIn'); $shopEmailRegistrationOptIn->setField('Subject', _t('SilvercartRegistrationPage.PLEASE_COFIRM', 'please confirm Your registration')); $shopEmailRegistrationOptIn->setField('EmailText', _t('SilvercartRegistrationPage.CONFIRMATION_TEXT', '<h1>Complete registration</h1><p>Please confirm Your activation or copy the link to Your Browser.</p><p><a href="$ConfirmationLink">Confirm registration</a></p><p>In case You did not register please ignore this mail.</p><p>Your shop team</p>')); $shopEmailRegistrationOptIn->write(); } $shopEmailRegistrationConfirmation = SilvercartShopEmail::get()->filter('Identifier', 'RegistrationConfirmation')->first(); if (!$shopEmailRegistrationConfirmation) { $shopEmailRegistrationConfirmation = new SilvercartShopEmail(); $shopEmailRegistrationConfirmation->setField('Identifier', 'RegistrationConfirmation'); $shopEmailRegistrationConfirmation->setField('Subject', _t('SilvercartRegistrationPage.THANKS', 'Many thanks for Your registration')); $shopEmailRegistrationConfirmation->setField('EmailText', _t('SilvercartRegistrationPage.SUCCESS_TEXT', '<h1>Registration completed successfully!</h1><p>Many thanks for Your registration.</p><p>Have a nice time on our website!</p><p>Your webshop team</p>')); $shopEmailRegistrationConfirmation->write(); } $checkOrderMail = SilvercartShopEmail::get()->filter('Identifier', 'MailOrderConfirmation')->first(); if (!$checkOrderMail) { $orderMail = new SilvercartShopEmail(); $orderMail->setField('Identifier', 'MailOrderConfirmation'); $orderMail->setField('Subject', _t('SilvercartShopEmail.ORDER_ARRIVED_EMAIL_SUBJECT')); $orderMail->setField('Variables', "\$FirstName\n\$Surname\n\$Salutation\n\$Order"); $defaultTemplateFile = Director::baseFolder() . '/silvercart/templates/email/SilvercartMailOrderConfirmation.ss'; if (is_file($defaultTemplateFile)) { $defaultTemplate = SilvercartShopEmail::parse(file_get_contents($defaultTemplateFile)); } else { $defaultTemplate = ''; } $orderMail->setField('EmailText', $defaultTemplate); $orderMail->write(); } $orderMail = SilvercartShopEmail::get()->filter('Identifier', 'MailOrderNotification')->first(); if (!$orderMail) { $orderMail = new SilvercartShopEmail(); $orderMail->setField('Identifier', 'MailOrderNotification'); $orderMail->setField('Subject', _t('SilvercartShopEmail.NEW_ORDER_PLACED')); $orderMail->setField('Variables', "\$FirstName\n\$Surname\n\$Salutation\n\$Order"); $defaultTemplateFile = Director::baseFolder() . '/silvercart/templates/email/SilvercartMailOrderNotification.ss'; if (is_file($defaultTemplateFile)) { $defaultTemplate = SilvercartShopEmail::parse(file_get_contents($defaultTemplateFile)); } else { $defaultTemplate = ''; } $orderMail->setField('EmailText', $defaultTemplate); $orderMail->write(); } $contactEmail = SilvercartShopEmail::get()->filter('Identifier', 'ContactMessage')->first(); if (!$contactEmail) { $contactEmail = new SilvercartShopEmail(); $contactEmail->setField('Identifier', 'ContactMessage'); $contactEmail->setField('Subject', _t('SilvercartContactFormPage.REQUEST', 'request via contact form')); $contactEmail->setField('Variables', "\$FirstName\n\$Surname\n\$Email\n\$Message"); $contactEmail->setField('EmailText', _t('SilvercartContactMessage.TEXT')); $contactEmail->write(); } $shopEmailNewsletterOptIn = SilvercartShopEmail::get()->filter('Identifier', 'NewsletterOptIn')->first(); if (!$shopEmailNewsletterOptIn) { $shopEmailNewsletterOptIn = new SilvercartShopEmail(); $shopEmailNewsletterOptIn->setField('Identifier', 'NewsletterOptIn'); $shopEmailNewsletterOptIn->setField('Subject', _t('SilvercartNewsletterOptInConfirmationPage.TITLE')); $shopEmailNewsletterOptIn->setField('EmailText', _t('SilvercartNewsletterOptInConfirmationPage.EMAIL_CONFIRMATION_TEXT')); $shopEmailNewsletterOptIn->write(); } $shopEmailNewsletterOptInConfirmation = SilvercartShopEmail::get()->filter('Identifier', 'NewsletterOptInConfirmation')->first(); if (!$shopEmailNewsletterOptInConfirmation) { $shopEmailNewsletterOptInConfirmation = new SilvercartShopEmail(); $shopEmailNewsletterOptInConfirmation->setField('Identifier', 'NewsletterOptInConfirmation'); $shopEmailNewsletterOptInConfirmation->setField('Subject', _t('SilvercartNewsletterOptInConfirmationPage.TITLE_THANKS')); $shopEmailNewsletterOptInConfirmation->setField('EmailText', _t('SilvercartNewsletterOptInConfirmationPage.CONFIRMATIONSUCCESSMESSAGE')); $shopEmailNewsletterOptInConfirmation->write(); } $shopEmailForgotPasswordEmail = SilvercartShopEmail::get()->filter('Identifier', 'ForgotPasswordEmail')->first(); if (!$shopEmailForgotPasswordEmail) { $shopEmailForgotPasswordEmail = new SilvercartShopEmail(); $shopEmailForgotPasswordEmail->Identifier = 'ForgotPasswordEmail'; $shopEmailForgotPasswordEmail->Subject = _t('SilvercartShopEmail.FORGOT_PASSWORD_SUBJECT'); $shopEmailForgotPasswordEmail->Variables = "\$FirstName\n\$Surname\n\$Salutation\n\$PasswordResetLink"; $defaultTemplateFile = Director::baseFolder() . '/silvercart/templates/email/ForgotPasswordEmail.ss'; if (is_file($defaultTemplateFile)) { $defaultTemplate = SilvercartShopEmail::parse(file_get_contents($defaultTemplateFile)); } else { $defaultTemplate = ''; } $shopEmailForgotPasswordEmail->EmailText = $defaultTemplate; $shopEmailForgotPasswordEmail->write(); } $shopEmailOrderShippedNotification = SilvercartShopEmail::get()->filter('Identifier', 'OrderShippedNotification')->first(); if (!$shopEmailOrderShippedNotification) { $shopEmailOrderShippedNotification = new SilvercartShopEmail(); $shopEmailOrderShippedNotification->setField('Identifier', 'OrderShippedNotification'); $shopEmailOrderShippedNotification->setField('Subject', _t('SilvercartShopEmail.ORDER_SHIPPED_NOTIFICATION_SUBJECT')); $shopEmailOrderShippedNotification->setField('Variables', "\$FirstName\n\$Surname\n\$Salutation\n\$SilvercartOrder"); $defaultTemplateFile = Director::baseFolder() . '/silvercart/templates/email/SilvercartMailOrderShippedNotification.ss'; if (is_file($defaultTemplateFile)) { $defaultTemplate = SilvercartShopEmail::parse(file_get_contents($defaultTemplateFile)); } else { $defaultTemplate = ''; } $shopEmailOrderShippedNotification->setField('EmailText', $defaultTemplate); $shopEmailOrderShippedNotification->write(); } $shopEmailRevocationNotification = SilvercartShopEmail::get()->filter('Identifier', 'RevocationNotification')->first(); if (!$shopEmailRevocationNotification) { $shopEmailRevocationNotification = new SilvercartShopEmail(); $shopEmailRevocationNotification->Identifier = 'RevocationNotification'; $shopEmailRevocationNotification->Subject = _t('SilvercartMailRevocationNotification.Subject'); $shopEmailRevocationNotification->Variables = ''; $defaultTemplateFile = Director::baseFolder() . '/silvercart/templates/email/SilvercartMailRevocationNotification.ss'; if (is_file($defaultTemplateFile)) { $defaultTemplate = SilvercartShopEmail::parse(file_get_contents($defaultTemplateFile)); } else { $defaultTemplate = ''; } $shopEmailRevocationNotification->EmailText = $defaultTemplate; $shopEmailRevocationNotification->write(); $shopEmailRevocationConfirmation = new SilvercartShopEmail(); $shopEmailRevocationConfirmation->Identifier = 'RevocationConfirmation'; $shopEmailRevocationConfirmation->Subject = _t('SilvercartMailRevocationConfirmation.Subject'); $shopEmailRevocationConfirmation->Variables = ''; $defaultTemplateFile = Director::baseFolder() . '/silvercart/templates/email/SilvercartMailRevocationConfirmation.ss'; if (is_file($defaultTemplateFile)) { $defaultTemplate = SilvercartShopEmail::parse(file_get_contents($defaultTemplateFile)); } else { $defaultTemplate = ''; } $shopEmailRevocationConfirmation->EmailText = $defaultTemplate; $shopEmailRevocationConfirmation->write(); } // attribute ShopEmails to order status $orderStatus = SilvercartOrderStatus::get()->filter('Code', 'shipped')->sort('ID')->first(); $orderEmail = SilvercartShopEmail::get()->filter('Identifier', 'OrderShippedNotification')->sort('ID')->first(); if ($orderStatus && $orderEmail) { $orderStatus->SilvercartShopEmails()->add($orderEmail); } }
/** * sends email to defined address * * @param string $identifier identifier for email template * @param string $to recipients email address * @param array $variables array with template variables that can be called in the template * @param array $attachments absolute filename to an attachment file * * @return bool * * @author Sebastian Diel <*****@*****.**>, * Sascha Koehler <*****@*****.**> * @since 16.06.2014 */ public static function send($identifier, $to, $variables = array(), $attachments = null) { $mailObj = SilvercartShopEmail::get()->filter('Identifier', $identifier)->first(); if (!$mailObj) { return false; } $emailText = trim($mailObj->EmailText); if (is_null($emailText) || empty($emailText)) { return false; } $emailSubject = trim($mailObj->Subject); if (is_null($emailSubject) || empty($emailSubject)) { return false; } if (!is_array($variables)) { $variables = array(); } $templateVariables = new ArrayData($variables); $emailTextTemplate = new SSViewer_FromString($mailObj->EmailText); $emailText = HTTP::absoluteURLs($emailTextTemplate->process($templateVariables)); $emailSubjectTemplate = new SSViewer_FromString($mailObj->Subject); $emailSubject = HTTP::absoluteURLs($emailSubjectTemplate->process($templateVariables)); $email = new Email(SilvercartConfig::EmailSender(), $to, $emailSubject, $mailObj->EmailText); $email->setTemplate('SilvercartShopEmail'); $email->populateTemplate(array('ShopEmailSubject' => $emailSubject, 'ShopEmailMessage' => $emailText)); self::attachFiles($email, $attachments); $email->send(); if (SilvercartConfig::GlobalEmailRecipient() != '') { $email = new Email(SilvercartConfig::EmailSender(), SilvercartConfig::GlobalEmailRecipient(), $emailSubject, $mailObj->EmailText); $email->setTemplate('SilvercartShopEmail'); $email->populateTemplate(array('ShopEmailSubject' => $emailSubject, 'ShopEmailMessage' => $emailText)); $email->send(); } //Send the email to additional standard receipients from the n:m //relation AdditionalReceipients; //Email address is validated. if ($mailObj->AdditionalReceipients()->exists()) { foreach ($mailObj->AdditionalReceipients() as $additionalReceipient) { if ($additionalReceipient->getEmailAddressWithName() && Email::validEmailAddress($additionalReceipient->Email)) { $to = $additionalReceipient->getEmailAddressWithName(); } elseif ($additionalReceipient->getEmailAddress() && Email::validEmailAddress($additionalReceipient->Email)) { $to = $additionalReceipient->getEmailAddress(); } else { continue; } $email = new Email(SilvercartConfig::EmailSender(), $to, $emailSubject, $mailObj->EmailText); $email->setTemplate('SilvercartShopEmail'); $email->populateTemplate(array('ShopEmailSubject' => $emailSubject, 'ShopEmailMessage' => $emailText)); self::attachFiles($email, $attachments); $email->send(); } } }
/** * Send confirmation mail to customer * * @param Customer $salutation Das Kundenobjekt * @param string $firstName ... * @param string $surName ... * @param string $email ... * * @return void * * @author Sascha Koehler <*****@*****.**> * @since 25.10.2010 */ public function sendConfirmationMail($salutation, $firstName, $surName, $email) { SilvercartShopEmail::send('NewsletterOptInConfirmation', $email, array('Salutation' => $salutation, 'FirstName' => $firstName, 'Surname' => $surName, 'Email' => $email)); }
/** * executed if there are no valdation errors on submit * Form data is saved in session * * @param SS_HTTPRequest $data contains the frameworks form data * @param Form $form not used * @param array $formData contains the modules form data * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 16.06.2014 */ protected function submitSuccess($data, $form, $formData) { $formData['RevocationOrderData'] = str_replace('\\r\\n', "\n", $formData['RevocationOrderData']); $config = SilvercartConfig::getConfig(); $country = DataObject::get_by_id('SilvercartCountry', $formData['Country']); $variables = array('Email' => $formData['Email'], 'Salutation' => $formData['Salutation'], 'FirstName' => $formData['FirstName'], 'Surname' => $formData['Surname'], 'Street' => $formData['Street'], 'StreetNumber' => $formData['StreetNumber'], 'Addition' => $formData['Addition'], 'Postcode' => $formData['Postcode'], 'City' => $formData['City'], 'Country' => $country, 'OrderDate' => $formData['OrderDate'], 'OrderNumber' => $formData['OrderNumber'], 'RevocationOrderData' => str_replace('\\r\\n', '<br/>', nl2br($formData['RevocationOrderData'])), 'CurrentDate' => $this->getCurrentDate(), 'ShopName' => $config->ShopName, 'ShopStreet' => $config->ShopStreet, 'ShopStreetNumber' => $config->ShopStreetNumber, 'ShopPostcode' => $config->ShopPostcode, 'ShopCity' => $config->ShopCity, 'ShopCountry' => $config->ShopCountry()); SilvercartShopEmail::send('RevocationNotification', SilvercartConfig::DefaultMailOrderNotificationRecipient(), $variables); SilvercartShopEmail::send('RevocationConfirmation', $formData['Email'], $variables); $revocationPage = SilvercartRevocationFormPage::get()->first(); $this->Controller()->redirect($revocationPage->Link('success')); }
/** * Sends an email with opt-in link to the given address. * * @param string $salutation The salutation to use * @param string $firstName The first name to use * @param string $surName The last name to use * @param string $email The email address to use * @param string $confirmationHash The hash value to use for identification * * @return void * * @author Sascha Koehler <*****@*****.**> * @since 25.08.2011 */ public static function sendOptInEmailTo($salutation, $firstName, $surName, $email, $confirmationHash) { SilvercartShopEmail::send('NewsletterOptIn', $email, array('Salutation' => $salutation, 'FirstName' => $firstName, 'Surname' => $surName, 'Email' => $email, 'ConfirmationLink' => Director::absoluteURL(SilvercartPage_Controller::PageByIdentifierCode("SilvercartNewsletterOptInConfirmationPage")->Link()) . '?h=' . urlencode($confirmationHash))); }
/** * Uses DataObject based, editable templates to send the email * * @param integer $messageID ??? * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 25.11.2015 */ public function send($messageID = null) { $variables = $this->template_data->toMap(); $variables['PasswordResetLink'] = Director::absoluteURL($this->template_data->PasswordResetLink); /* @var $member Member */ $member = singleton('Member'); foreach ($member->db() as $dbFieldName => $dbFieldType) { if (!array_key_exists($dbFieldName, $variables)) { $variables[$dbFieldName] = $this->template_data->{$dbFieldName}; } } $variables['SalutationText'] = SilvercartTools::getSalutationText($variables['Salutation']); SilvercartShopEmail::send('ForgotPasswordEmail', $this->To(), $variables); }