Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage_Newsletter_Block_Subscribe
  • Mage_Newsletter_Helper_Data
  • Mage_Newsletter_ManageController
  • Mage_Newsletter_Model_Message
  • Mage_Newsletter_Model_Mysql4_Problem
  • Mage_Newsletter_Model_Mysql4_Problem_Collection
  • Mage_Newsletter_Model_Mysql4_Queue
  • Mage_Newsletter_Model_Mysql4_Queue_Collection
  • Mage_Newsletter_Model_Mysql4_Subscriber
  • Mage_Newsletter_Model_Mysql4_Subscriber_Collection
  • Mage_Newsletter_Model_Mysql4_Template
  • Mage_Newsletter_Model_Mysql4_Template_Collection
  • Mage_Newsletter_Model_Observer
  • Mage_Newsletter_Model_Problem
  • Mage_Newsletter_Model_Queue
  • Mage_Newsletter_Model_Resource_Problem
  • Mage_Newsletter_Model_Resource_Problem_Collection
  • Mage_Newsletter_Model_Resource_Queue
  • Mage_Newsletter_Model_Resource_Queue_Collection
  • Mage_Newsletter_Model_Resource_Subscriber
  • Mage_Newsletter_Model_Resource_Subscriber_Collection
  • Mage_Newsletter_Model_Resource_Template
  • Mage_Newsletter_Model_Resource_Template_Collection
  • Mage_Newsletter_Model_Session
  • Mage_Newsletter_Model_Subscriber
  • Mage_Newsletter_Model_Template
  • Mage_Newsletter_Model_Template_Filter
  • Mage_Newsletter_SubscriberController
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Magento
  4:  *
  5:  * NOTICE OF LICENSE
  6:  *
  7:  * This source file is subject to the Open Software License (OSL 3.0)
  8:  * that is bundled with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://opensource.org/licenses/osl-3.0.php
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@magentocommerce.com so we can send you a copy immediately.
 14:  *
 15:  * DISCLAIMER
 16:  *
 17:  * Do not edit or add to this file if you wish to upgrade Magento to newer
 18:  * versions in the future. If you wish to customize Magento for your
 19:  * needs please refer to http://www.magentocommerce.com for more information.
 20:  *
 21:  * @category    Mage
 22:  * @package     Mage_Newsletter
 23:  * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 24:  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 25:  */
 26: 
 27: /**
 28:  * Template model
 29:  *
 30:  * @method Mage_Newsletter_Model_Resource_Template _getResource()
 31:  * @method Mage_Newsletter_Model_Resource_Template getResource()
 32:  * @method string getTemplateCode()
 33:  * @method Mage_Newsletter_Model_Template setTemplateCode(string $value)
 34:  * @method Mage_Newsletter_Model_Template setTemplateText(string $value)
 35:  * @method Mage_Newsletter_Model_Template setTemplateTextPreprocessed(string $value)
 36:  * @method string getTemplateStyles()
 37:  * @method Mage_Newsletter_Model_Template setTemplateStyles(string $value)
 38:  * @method int getTemplateType()
 39:  * @method Mage_Newsletter_Model_Template setTemplateType(int $value)
 40:  * @method string getTemplateSubject()
 41:  * @method Mage_Newsletter_Model_Template setTemplateSubject(string $value)
 42:  * @method string getTemplateSenderName()
 43:  * @method Mage_Newsletter_Model_Template setTemplateSenderName(string $value)
 44:  * @method string getTemplateSenderEmail()
 45:  * @method Mage_Newsletter_Model_Template setTemplateSenderEmail(string $value)
 46:  * @method int getTemplateActual()
 47:  * @method Mage_Newsletter_Model_Template setTemplateActual(int $value)
 48:  * @method string getAddedAt()
 49:  * @method Mage_Newsletter_Model_Template setAddedAt(string $value)
 50:  * @method string getModifiedAt()
 51:  * @method Mage_Newsletter_Model_Template setModifiedAt(string $value)
 52:  *
 53:  * @category    Mage
 54:  * @package     Mage_Newsletter
 55:  * @author      Magento Core Team <core@magentocommerce.com>
 56:  */
 57: class Mage_Newsletter_Model_Template extends Mage_Core_Model_Template
 58: {
 59:     /**
 60:      * Template Text Preprocessed flag
 61:      *
 62:      * @var bool
 63:      */
 64:     protected $_preprocessFlag = false;
 65: 
 66:     /**
 67:      * Mail object
 68:      *
 69:      * @var Zend_Mail
 70:      */
 71:     protected $_mail;
 72: 
 73:     /**
 74:      * Initialize resource model
 75:      *
 76:      */
 77:     protected function _construct()
 78:     {
 79:         $this->_init('newsletter/template');
 80:     }
 81: 
 82:     /**
 83:      * Validate Newsletter template
 84:      *
 85:      * @throws Mage_Core_Exception
 86:      * @return bool
 87:      */
 88:     public function validate()
 89:     {
 90:         $validators = array(
 91:             'template_code'         => array(Zend_Filter_Input::ALLOW_EMPTY => false),
 92:             'template_type'         => 'Int',
 93:             'template_sender_email' => 'EmailAddress',
 94:             'template_sender_name'  => array(Zend_Filter_Input::ALLOW_EMPTY => false)
 95:         );
 96:         $data = array();
 97:         foreach (array_keys($validators) as $validateField) {
 98:             $data[$validateField] = $this->getDataUsingMethod($validateField);
 99:         }
100: 
101:         $validateInput = new Zend_Filter_Input(array(), $validators, $data);
102:         if (!$validateInput->isValid()) {
103:             $errorMessages = array();
104:             foreach ($validateInput->getMessages() as $messages) {
105:                 if (is_array($messages)) {
106:                     foreach ($messages as $message) {
107:                         $errorMessages[] = $message;
108:                     }
109:                 }
110:                 else {
111:                     $errorMessages[] = $messages;
112:                 }
113:             }
114: 
115:             Mage::throwException(join("\n", $errorMessages));
116:         }
117:     }
118: 
119:     /**
120:      * Processing object before save data
121:      *
122:      * @return Mage_Newsletter_Model_Template
123:      */
124:     protected function _beforeSave()
125:     {
126:         $this->validate();
127:         return parent::_beforeSave();
128:     }
129: 
130:     /**
131:      * Load template by code
132:      *
133:      * @param string $templateCode
134:      * @return Mage_Newsletter_Model_Template
135:      */
136:     public function loadByCode($templateCode)
137:     {
138:         $this->_getResource()->loadByCode($this, $templateCode);
139:         return $this;
140:     }
141: 
142:     /**
143:      * Return true if this template can be used for sending queue as main template
144:      *
145:      * @return boolean
146:      * @deprecated since 1.4.0.1
147:      */
148:     public function isValidForSend()
149:     {
150:         return !Mage::getStoreConfigFlag('system/smtp/disable')
151:             && $this->getTemplateSenderName()
152:             && $this->getTemplateSenderEmail()
153:             && $this->getTemplateSubject();
154:     }
155: 
156:     /**
157:      * Getter for template type
158:      *
159:      * @return int|string
160:      */
161:     public function getType(){
162:         return $this->getTemplateType();
163:     }
164: 
165:     /**
166:      * Check is Preprocessed
167:      *
168:      * @return bool
169:      */
170:     public function isPreprocessed()
171:     {
172:         return strlen($this->getTemplateTextPreprocessed()) > 0;
173:     }
174: 
175:     /**
176:      * Check Template Text Preprocessed
177:      *
178:      * @return bool
179:      */
180:     public function getTemplateTextPreprocessed()
181:     {
182:         if ($this->_preprocessFlag) {
183:             $this->setTemplateTextPreprocessed($this->getProcessedTemplate());
184:         }
185: 
186:         return $this->getData('template_text_preprocessed');
187:     }
188: 
189:     /**
190:      * Retrieve processed template
191:      *
192:      * @param array $variables
193:      * @param bool $usePreprocess
194:      * @return string
195:      */
196:     public function getProcessedTemplate(array $variables = array(), $usePreprocess = false)
197:     {
198:         /* @var $processor Mage_Newsletter_Model_Template_Filter */
199:         $processor = Mage::helper('newsletter')->getTemplateProcessor();
200: 
201:         if (!$this->_preprocessFlag) {
202:             $variables['this'] = $this;
203:         }
204: 
205:         if (Mage::app()->isSingleStoreMode()) {
206:             $processor->setStoreId(Mage::app()->getStore());
207:         } else {
208:             $processor->setStoreId(Mage::app()->getRequest()->getParam('store_id'));
209:         } 
210: 
211:         $processor
212:             ->setIncludeProcessor(array($this, 'getInclude'))
213:             ->setVariables($variables);
214: 
215:         if ($usePreprocess && $this->isPreprocessed()) {
216:             return $processor->filter($this->getPreparedTemplateText(true));
217:         }
218: 
219:         return $processor->filter($this->getPreparedTemplateText());
220:     }
221: 
222:     /**
223:      * Makes additional text preparations for HTML templates
224:      *
225:      * @param bool $usePreprocess Use Preprocessed text or original text
226:      * @return string
227:      */
228:     public function getPreparedTemplateText($usePreprocess = false)
229:     {
230:         $text = $usePreprocess ? $this->getTemplateTextPreprocessed() : $this->getTemplateText();
231: 
232:         if ($this->_preprocessFlag || $this->isPlain() || !$this->getTemplateStyles()) {
233:             return $text;
234:         }
235:         // wrap styles into style tag
236:         $html = "<style type=\"text/css\">\n%s\n</style>\n%s";
237:         return sprintf($html, $this->getTemplateStyles(), $text);
238:     }
239: 
240:     /**
241:      * Retrieve included template
242:      *
243:      * @param string $templateCode
244:      * @param array $variables
245:      * @return string
246:      */
247:     public function getInclude($templateCode, array $variables)
248:     {
249:         return Mage::getModel('newsletter/template')
250:             ->loadByCode($templateCode)
251:             ->getProcessedTemplate($variables);
252:     }
253: 
254:     /**
255:      * Retrieve mail object instance
256:      *
257:      * @return Zend_Mail
258:      * @deprecated since 1.4.0.1
259:      */
260:     public function getMail()
261:     {
262:         if (is_null($this->_mail)) {
263:             $this->_mail = new Zend_Mail('utf-8');
264:         }
265:         return $this->_mail;
266:     }
267: 
268: 
269:     /**
270:      * Send mail to subscriber
271:      *
272:      * @param   Mage_Newsletter_Model_Subscriber|string   $subscriber   subscriber Model or E-mail
273:      * @param   array                                     $variables    template variables
274:      * @param   string|null                               $name         receiver name (if subscriber model not specified)
275:      * @param   Mage_Newsletter_Model_Queue|null          $queue        queue model, used for problems reporting.
276:      * @return boolean
277:      * @deprecated since 1.4.0.1
278:      **/
279:     public function send($subscriber, array $variables = array(), $name=null, Mage_Newsletter_Model_Queue $queue=null)
280:     {
281:         if (!$this->isValidForSend()) {
282:             return false;
283:         }
284: 
285:         $email = '';
286:         if ($subscriber instanceof Mage_Newsletter_Model_Subscriber) {
287:             $email = $subscriber->getSubscriberEmail();
288:             if (is_null($name) && ($subscriber->hasCustomerFirstname() || $subscriber->hasCustomerLastname()) ) {
289:                 $name = $subscriber->getCustomerFirstname() . ' ' . $subscriber->getCustomerLastname();
290:             }
291:         }
292:         else {
293:             $email = (string) $subscriber;
294:         }
295: 
296:         if (Mage::getStoreConfigFlag(Mage_Core_Model_Email_Template::XML_PATH_SENDING_SET_RETURN_PATH)) {
297:             $this->getMail()->setReturnPath($this->getTemplateSenderEmail());
298:         }
299: 
300:         ini_set('SMTP', Mage::getStoreConfig('system/smtp/host'));
301:         ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
302: 
303:         $mail = $this->getMail();
304:         $mail->addTo($email, $name);
305:         $text = $this->getProcessedTemplate($variables, true);
306: 
307:         if ($this->isPlain()) {
308:             $mail->setBodyText($text);
309:         }
310:         else {
311:             $mail->setBodyHTML($text);
312:         }
313: 
314:         $mail->setSubject($this->getProcessedTemplateSubject($variables));
315:         $mail->setFrom($this->getTemplateSenderEmail(), $this->getTemplateSenderName());
316: 
317:         try {
318:             $mail->send();
319:             $this->_mail = null;
320:             if (!is_null($queue)) {
321:                 $subscriber->received($queue);
322:             }
323:         }
324:         catch (Exception $e) {
325:             if ($subscriber instanceof Mage_Newsletter_Model_Subscriber) {
326:                 // If letter sent for subscriber, we create a problem report entry
327:                 $problem = Mage::getModel('newsletter/problem');
328:                 $problem->addSubscriberData($subscriber);
329:                 if (!is_null($queue)) {
330:                     $problem->addQueueData($queue);
331:                 }
332:                 $problem->addErrorData($e);
333:                 $problem->save();
334: 
335:                 if (!is_null($queue)) {
336:                     $subscriber->received($queue);
337:                 }
338:             } else {
339:                 // Otherwise throw error to upper level
340:                 throw $e;
341:             }
342:             return false;
343:         }
344: 
345:         return true;
346:     }
347: 
348:     /**
349:      * Prepare Process (with save)
350:      *
351:      * @return Mage_Newsletter_Model_Template
352:      * @deprecated since 1.4.0.1
353:      */
354:     public function preprocess()
355:     {
356:         $this->_preprocessFlag = true;
357:         $this->save();
358:         $this->_preprocessFlag = false;
359:         return $this;
360:     }
361: 
362:     /**
363:      * Retrieve processed template subject
364:      *
365:      * @param array $variables
366:      * @return string
367:      */
368:     public function getProcessedTemplateSubject(array $variables)
369:     {
370:         $processor = new Varien_Filter_Template();
371: 
372:         if (!$this->_preprocessFlag) {
373:             $variables['this'] = $this;
374:         }
375: 
376:         $processor->setVariables($variables);
377:         return $processor->filter($this->getTemplateSubject());
378:     }
379: 
380:     /**
381:      * Retrieve template text wrapper
382:      *
383:      * @return string
384:      */
385:     public function getTemplateText()
386:     {
387:         if (!$this->getData('template_text') && !$this->getId()) {
388:             $this->setData('template_text',
389:                 Mage::helper('newsletter')->__('Follow this link to unsubscribe <!-- This tag is for unsubscribe link  --><a href="{{var subscriber.getUnsubscriptionLink()}}">{{var subscriber.getUnsubscriptionLink()}}</a>')
390:             );
391:         }
392: 
393:         return $this->getData('template_text');
394:     }
395: }
396: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0