/** * @magentoDataFixture Mage/Adminhtml/controllers/_files/newsletter_sample.php * @magentoAppIsolation disabled */ public function testSaveActionQueueTemplateAndVerifySuccessMessage() { $postForQueue = array('sender_email' => '*****@*****.**', 'sender_name' => 'john doe', 'subject' => 'test subject', 'text' => 'newsletter text'); $this->getRequest()->setPost($postForQueue); $this->_model->loadByCode('some_unique_code'); $this->getRequest()->setParam('template_id', $this->_model->getId()); $this->dispatch('backend/admin/newsletter_queue/save'); /** * Check that errors was generated and set to session */ $this->assertEmpty(Mage::getSingleton('Mage_Backend_Model_Session')->getMessages(false)->getErrors()); /** * Check that success message is set */ $successMessages = Mage::getSingleton('Mage_Backend_Model_Session')->getMessages(false)->getItemsByType(Mage_Core_Model_Message::SUCCESS); $this->assertCount(1, $successMessages, 'Success message was not set'); $this->assertEquals('The newsletter queue has been saved.', current($successMessages)->getCode()); }
/** * Check usage of template code in other templates * * @param Mage_Newsletter_Model_Template $template * @return boolean */ public function checkCodeUsage(Mage_Newsletter_Model_Template $template) { if ($template->getTemplateActual() != 0 || is_null($template->getTemplateActual())) { $bind = array('template_id' => $template->getId(), 'template_code' => $template->getTemplateCode(), 'template_actual' => 1); $select = $this->_getReadAdapter()->select()->from($this->getMainTable(), new Zend_Db_Expr('COUNT(template_id)'))->where('template_id != :template_id')->where('template_code = :template_code')->where('template_actual = :template_actual'); $countOfCodes = $this->_getReadAdapter()->fetchOne($select, $bind); return $countOfCodes > 0; } else { return false; } }
/** * @magentoConfigFixture install/design/theme/full_name default/default/default * @magentoConfigFixture adminhtml/design/theme/full_name default/default/default * @magentoConfigFixture current_store design/theme/full_name default/iphone/default * @magentoConfigFixture fixturestore_store design/theme/full_name default/default/blue * @magentoAppIsolation enabled * @dataProvider getProcessedTemplateDataProvider */ public function testGetProcessedTemplate($area, $store, $design) { $this->markTestIncomplete('Test partially fails bc of MAGETWO-557.'); $this->_model->setTemplateText('{{skin url="Mage_Page::favicon.ico"}}'); $this->assertStringEndsWith('skin/frontend/default/default/default/en_US/Mage_Page/favicon.ico', $this->_model->getProcessedTemplate()); $this->_model->emulateDesign($store, $area); $expectedTemplateText = "skin/{$area}/{$design}/en_US/Mage_Page/favicon.ico"; $this->assertStringEndsWith($expectedTemplateText, $this->_model->getProcessedTemplate()); $this->_model->revertDesign(); }
/** * @magentoAppIsolation enabled * @magentoDataFixture Mage/Adminhtml/controllers/_files/newsletter_sample.php */ public function testDeleteActionTemplateAndVerifySuccessMessage() { $this->_model->loadByCode('some_unique_code'); $this->getRequest()->setParam('id', $this->_model->getId()); $this->dispatch('backend/admin/newsletter_template/delete'); /** * Check that errors was generated and set to session */ $this->assertEmpty(Mage::getSingleton('Mage_Backend_Model_Session')->getMessages(false)->getErrors()); /** * Check that success message is set */ $successMessages = Mage::getSingleton('Mage_Backend_Model_Session')->getMessages(false)->getItemsByType(Mage_Core_Model_Message::SUCCESS); $this->assertCount(1, $successMessages, 'Success message was not set'); $this->assertEquals('The newsletter template has been deleted.', current($successMessages)->getCode()); }
/** * Prepares template for saving, validates input data * * @param Mage_Newsletter_Model_Template $template * @return array */ protected function _prepareSave(Mage_Newsletter_Model_Template $template) { $data = array(); $data['template_code'] = $template->getTemplateCode(); $data['template_text'] = $template->getTemplateText(); $data['template_text_preprocessed'] = $template->getTemplateTextPreprocessed(); $data['template_type'] = (int) $template->getTemplateType(); $data['template_subject'] = $template->getTemplateSubject(); $data['template_sender_name'] = $template->getTemplateSenderName(); $data['template_sender_email'] = $template->getTemplateSenderEmail(); $data['template_actual'] = !is_null($template->getTemplateActual()) && $template->getTemplateActual() == 0 ? 0 : 1; if (!$template->getAddedAt()) { $template->setAddedAt(Mage::getSingleton('core/date')->gmtDate()); $template->setModifiedAt(Mage::getSingleton('core/date')->gmtDate()); } $data['modified_at'] = $template->getModifiedAt(); $data['added_at'] = $template->getAddedAt(); if ($this->checkCodeUsage($template)) { Mage::throwException(Mage::helper('newsletter')->__('Duplicate of template code')); } $validators = array('template_code' => array(Zend_Filter_Input::ALLOW_EMPTY => false), 'template_type' => 'Alnum', 'template_sender_email' => 'EmailAddress', 'template_sender_name' => array(Zend_Filter_Input::ALLOW_EMPTY => false)); $validateInput = new Zend_Filter_Input(array(), $validators, $data); if (!$validateInput->isValid()) { $errorString = ''; foreach ($validateInput->getMessages() as $message) { if (is_array($message)) { foreach ($message as $str) { $errorString .= $str . "\n"; } } else { $errorString .= $message . "\n"; } } Mage::throwException($errorString); } return $data; }
/** * Send mail to subscriber * * @param Mage_Newsletter_Model_Subscriber|string $subscriber subscriber Model or E-mail * @param array $variables template variables * @param string|null $name receiver name (if subscriber model not specified) * @param Mage_Newsletter_Model_Queue|null $queue queue model, used for problems reporting. * @return boolean **/ public function send($subscriber, array $variables = array(), $name = null, Mage_Newsletter_Model_Queue $queue = null) { if (!$this->isValidForSend()) { return false; } // If it's not enabled, just return the parent result. if (!Mage::helper('smtppro')->isEnabled()) { return parent::send($subscriber, $variables, $name, $queue); } $email = ''; if ($subscriber instanceof Mage_Newsletter_Model_Subscriber) { $email = $subscriber->getSubscriberEmail(); if (is_null($name) && ($subscriber->hasCustomerFirstname() || $subscriber->hasCustomerLastname())) { $name = $subscriber->getCustomerFirstname() . ' ' . $subscriber->getCustomerLastname(); } } else { $email = (string) $subscriber; } $mail = $this->getMail(); if (Mage::getStoreConfigFlag(Mage_Newsletter_Model_Subscriber::XML_PATH_SENDING_SET_RETURN_PATH)) { // This is important for SPAM I think, what value should it be? $mail->setReturnPath($this->getTemplateSenderEmail()); } $transport = Mage::helper('smtppro')->getTransport(); $dev = Mage::helper('smtppro')->getDevelopmentMode(); if ($dev == "contact") { $email = Mage::getStoreConfig('contacts/email/recipient_email'); } elseif ($dev == "supress") { # we bail out, but report success return true; } $mail->addTo($email, $name); $text = $this->getProcessedTemplate($variables, true); if ($this->isPlain()) { $mail->setBodyText($text); } else { $mail->setBodyHTML($text); } $mail->setSubject($this->getProcessedTemplateSubject($variables)); $mail->setFrom($this->getTemplateSenderEmail(), $this->getTemplateSenderName()); // If we are using store emails as reply-to's set the header if (Mage::helper('smtppro')->isReplyToStoreEmail()) { // Later versions of Zend have a method for this, and disallow direct header setting... if (method_exists($mail, "setReplyTo")) { $mail->setReplyTo($this->getTemplateSenderEmail(), $this->getTemplateSenderName()); } else { $mail->addHeader('Reply-To', $this->getTemplateSenderEmail()); } } try { $mail->send($transport); Mage::dispatchEvent('smtppro_email_after_send', array('to' => $email, 'template' => $this->getTemplateId(), 'subject' => $mail->getSubject(), 'html' => !$this->isPlain(), 'email_body' => $text)); $this->_mail = null; if (!is_null($queue)) { $subscriber->received($queue); } } catch (Exception $e) { if ($subscriber instanceof Mage_Newsletter_Model_Subscriber) { // If letter sent for subscriber, we create a problem report entry $problem = Mage::getModel('newsletter/problem'); $problem->addSubscriberData($subscriber); if (!is_null($queue)) { $problem->addQueueData($queue); } $problem->addErrorData($e); $problem->save(); if (!is_null($queue)) { $subscriber->received($queue); } } else { // Otherwise throw error to upper level throw $e; } return false; } return true; }
/** * Send mail to subscriber * * @param Mage_Newsletter_Model_Subscriber|string $subscriber subscriber Model or E-mail * @param array $variables template variables * @param string|null $name receiver name (if subscriber model not specified) * @param Mage_Newsletter_Model_Queue|null $queue queue model, used for problems reporting. * @return boolean * @deprecated since 1.4.0.1 **/ public function send($subscriber, array $variables = array(), $name = null, Mage_Newsletter_Model_Queue $queue = null) { //Check to see if module is enabled, otherwise return parent if (!Mage::helper('sailthruemail')->isTransactionalEmailEnabled()) { return parent::send($subscriber, $variables, $name, $queue); } if (!$this->isValidForSend()) { return false; } $email = ''; if ($subscriber instanceof Mage_Newsletter_Model_Subscriber) { $email = $subscriber->getSubscriberEmail(); if (is_null($name) && ($subscriber->hasCustomerFirstname() || $subscriber->hasCustomerLastname())) { $name = $subscriber->getCustomerFirstname() . ' ' . $subscriber->getCustomerLastname(); } } else { $email = (string) $subscriber; } if (Mage::getStoreConfigFlag(Mage_Core_Model_Email_Template::XML_PATH_SENDING_SET_RETURN_PATH)) { $this->getMail()->setReturnPath($this->getTemplateSenderEmail()); } ini_set('SMTP', Mage::getStoreConfig('system/smtp/host')); ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port')); $mail = $this->getMail(); $mail->addTo($email, $name); $text = $this->getProcessedTemplate($variables, true); if ($this->isPlain()) { $mail->setBodyText($text); } else { $mail->setBodyHTML($text); } $mail->setSubject($this->getProcessedTemplateSubject($variables)); $mail->setFrom($this->getTemplateSenderEmail(), $this->getTemplateSenderName()); /* * SAILTHRU CODE SHOULD GO IN TRY - CATCH BLOCK BELOW */ try { $mail->send(); $this->_mail = null; if (!is_null($queue)) { $subscriber->received($queue); } } catch (Exception $e) { if ($subscriber instanceof Mage_Newsletter_Model_Subscriber) { // If letter sent for subscriber, we create a problem report entry $problem = Mage::getModel('newsletter/problem'); $problem->addSubscriberData($subscriber); if (!is_null($queue)) { $problem->addQueueData($queue); } $problem->addErrorData($e); $problem->save(); if (!is_null($queue)) { $subscriber->received($queue); } } else { // Otherwise throw error to upper level throw $e; } return false; } return true; }
/** * * * @param Mage_Newsletter_Model_Queue $queue */ public function addNewsletterGroupFilter(Mage_Newsletter_Model_Template $template) { // get the newsletter_group_id from the template $newsletterGroupId = $template->getNewsletterGroupId(); $this->getSelect()->where('`main_table`.`newsletter_group_id` LIKE "%' . $newsletterGroupId . '%"'); }
/** * @magentoConfigFixture current_store system/smtp/disable 0 * @magentoAppIsolation enabled * @dataProvider isValidToSendDataProvider */ public function testIsValidToSend($senderEmail, $senderName, $subject, $isValid) { $this->_model->setTemplateSenderEmail($senderEmail)->setTemplateSenderName($senderName)->setTemplateSubject($subject); $this->assertSame($isValid, $this->_model->isValidForSend()); }
<?php /** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * * @category Magento * @package Mage_Newsletter * @subpackage integration_tests * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ $template = new Mage_Newsletter_Model_Template(); $template->setTemplateCode('fixture_tpl')->setTemplateText('<p>Follow this link to unsubscribe</p> <!-- This tag is for unsubscribe link --> <p><a href="{{var subscriber.getUnsubscriptionLink()}}">{{var subscriber.getUnsubscriptionLink()}}</a></p>')->setTemplateType(2)->setTemplateSubject('Subject')->setTemplateSenderName('CustomerSupport')->setTemplateSenderEmail('*****@*****.**')->setTemplateActual(1)->save();
* NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * * @category Magento * @package Mage_Newsletter * @subpackage integration_tests * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ require __DIR__ . '/template.php'; require __DIR__ . '/subscribers.php'; $template = new Mage_Newsletter_Model_Template(); $template->load('fixture_tpl', 'template_code'); $templateId = $template->getId(); $currentStore = Mage::app()->getStore()->getId(); $otherStore = Mage::app()->getStore('fixturestore')->getId(); $queue = new Mage_Newsletter_Model_Queue(); $queue->setTemplateId($templateId)->setNewsletterText('{{skin url="images/logo.gif"}}')->setNewsletterSubject('Subject')->setNewsletterSenderName('CustomerSupport')->setNewsletterSenderEmail('*****@*****.**')->setQueueStatus(Mage_Newsletter_Model_Queue::STATUS_NEVER)->setQueueStartAtByString(0)->setStores(array($currentStore, $otherStore))->save();