/** * 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(); } } }