/**
  * @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());
 }
示例#2
0
 /**
  * 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;
     }
 }
示例#3
0
 /**
  * @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();
 }
示例#4
0
 /**
  * @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());
 }
示例#5
0
 /**
  * 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;
 }
示例#6
0
 /**
  * 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;
 }
示例#8
0
 /**
  *
  *
  * @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 . '%"');
 }
示例#9
0
 /**
  * @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());
 }
示例#10
0
<?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();
示例#11
0
 * 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();