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
  • Mage_Adminhtml_Block_Html_Date
  • Mage_Adminhtml_Block_Html_Select
  • Mage_Api_Model_Wsdl_Config_Element
  • Mage_Captcha_Adminhtml_RefreshController
  • Mage_Captcha_RefreshController
  • Mage_Core_AjaxController
  • Mage_Core_Block_Abstract
  • Mage_Core_Block_Flush
  • Mage_Core_Block_Html_Calendar
  • Mage_Core_Block_Html_Date
  • Mage_Core_Block_Html_Link
  • Mage_Core_Block_Html_Select
  • Mage_Core_Block_Messages
  • Mage_Core_Block_Profiler
  • Mage_Core_Block_Store_Switcher
  • Mage_Core_Block_Template
  • Mage_Core_Block_Template_Facade
  • Mage_Core_Block_Template_Smarty
  • Mage_Core_Block_Template_Zend
  • Mage_Core_Block_Text
  • Mage_Core_Block_Text_List
  • Mage_Core_Block_Text_List_Item
  • Mage_Core_Block_Text_List_Link
  • Mage_Core_Block_Text_Tag
  • Mage_Core_Block_Text_Tag_Css
  • Mage_Core_Block_Text_Tag_Css_Admin
  • Mage_Core_Block_Text_Tag_Debug
  • Mage_Core_Block_Text_Tag_Js
  • Mage_Core_Block_Text_Tag_Meta
  • Mage_Core_Controller_Front_Action
  • Mage_Core_Controller_Front_Router
  • Mage_Core_Controller_Request_Http
  • Mage_Core_Controller_Response_Http
  • Mage_Core_Controller_Varien_Action
  • Mage_Core_Controller_Varien_Front
  • Mage_Core_Controller_Varien_Router_Abstract
  • Mage_Core_Controller_Varien_Router_Admin
  • Mage_Core_Controller_Varien_Router_Default
  • Mage_Core_Controller_Varien_Router_Standard
  • Mage_Core_Helper_Abstract
  • Mage_Core_Helper_Cookie
  • Mage_Core_Helper_Data
  • Mage_Core_Helper_File_Storage
  • Mage_Core_Helper_File_Storage_Database
  • Mage_Core_Helper_Hint
  • Mage_Core_Helper_Http
  • Mage_Core_Helper_Js
  • Mage_Core_Helper_String
  • Mage_Core_Helper_Translate
  • Mage_Core_Helper_Url
  • Mage_Core_Helper_Url_Rewrite
  • Mage_Core_IndexController
  • Mage_Core_Model_Abstract
  • Mage_Core_Model_App
  • Mage_Core_Model_App_Area
  • Mage_Core_Model_App_Emulation
  • Mage_Core_Model_Cache
  • Mage_Core_Model_Calculator
  • Mage_Core_Model_Config
  • Mage_Core_Model_Config_Base
  • Mage_Core_Model_Config_Data
  • Mage_Core_Model_Config_Element
  • Mage_Core_Model_Config_Options
  • Mage_Core_Model_Config_System
  • Mage_Core_Model_Cookie
  • Mage_Core_Model_Date
  • Mage_Core_Model_Design
  • Mage_Core_Model_Design_Package
  • Mage_Core_Model_Design_Source_Design
  • Mage_Core_Model_Email
  • Mage_Core_Model_Email_Info
  • Mage_Core_Model_Email_Template
  • Mage_Core_Model_Email_Template_Filter
  • Mage_Core_Model_Email_Template_Mailer
  • Mage_Core_Model_Email_Transport
  • Mage_Core_Model_Encryption
  • Mage_Core_Model_File_Storage
  • Mage_Core_Model_File_Storage_Abstract
  • Mage_Core_Model_File_Storage_Database
  • Mage_Core_Model_File_Storage_Database_Abstract
  • Mage_Core_Model_File_Storage_Directory_Database
  • Mage_Core_Model_File_Storage_File
  • Mage_Core_Model_File_Storage_Flag
  • Mage_Core_Model_File_Uploader
  • Mage_Core_Model_File_Validator_AvailablePath
  • Mage_Core_Model_File_Validator_NotProtectedExtension
  • Mage_Core_Model_Flag
  • Mage_Core_Model_Input_Filter
  • Mage_Core_Model_Input_Filter_MaliciousCode
  • Mage_Core_Model_Language
  • Mage_Core_Model_Layout
  • Mage_Core_Model_Layout_Data
  • Mage_Core_Model_Layout_Element
  • Mage_Core_Model_Layout_Update
  • Mage_Core_Model_Locale
  • Mage_Core_Model_Locale_Config
  • Mage_Core_Model_Log_Adapter
  • Mage_Core_Model_Magento_Api
  • Mage_Core_Model_Magento_Api_V2
  • Mage_Core_Model_Message
  • Mage_Core_Model_Message_Abstract
  • Mage_Core_Model_Message_Collection
  • Mage_Core_Model_Message_Error
  • Mage_Core_Model_Message_Notice
  • Mage_Core_Model_Message_Success
  • Mage_Core_Model_Message_Warning
  • Mage_Core_Model_Mysql4_Abstract
  • Mage_Core_Model_Mysql4_Cache
  • Mage_Core_Model_Mysql4_Collection_Abstract
  • Mage_Core_Model_Mysql4_Config
  • Mage_Core_Model_Mysql4_Config_Data
  • Mage_Core_Model_Mysql4_Config_Data_Collection
  • Mage_Core_Model_Mysql4_Design
  • Mage_Core_Model_Mysql4_Design_Collection
  • Mage_Core_Model_Mysql4_Design_Package_Collection
  • Mage_Core_Model_Mysql4_Design_Theme
  • Mage_Core_Model_Mysql4_Email_Template
  • Mage_Core_Model_Mysql4_Email_Template_Collection
  • Mage_Core_Model_Mysql4_File_Storage_Abstract
  • Mage_Core_Model_Mysql4_File_Storage_Database
  • Mage_Core_Model_Mysql4_File_Storage_Directory_Database
  • Mage_Core_Model_Mysql4_File_Storage_File
  • Mage_Core_Model_Mysql4_Flag
  • Mage_Core_Model_Mysql4_Language
  • Mage_Core_Model_Mysql4_Language_Collection
  • Mage_Core_Model_Mysql4_Layout
  • Mage_Core_Model_Mysql4_Resource
  • Mage_Core_Model_Mysql4_Session
  • Mage_Core_Model_Mysql4_Store
  • Mage_Core_Model_Mysql4_Store_Collection
  • Mage_Core_Model_Mysql4_Store_Group
  • Mage_Core_Model_Mysql4_Store_Group_Collection
  • Mage_Core_Model_Mysql4_Translate
  • Mage_Core_Model_Mysql4_Translate_String
  • Mage_Core_Model_Mysql4_Url_Rewrite
  • Mage_Core_Model_Mysql4_Url_Rewrite_Collection
  • Mage_Core_Model_Mysql4_Variable
  • Mage_Core_Model_Mysql4_Variable_Collection
  • Mage_Core_Model_Mysql4_Website
  • Mage_Core_Model_Mysql4_Website_Collection
  • Mage_Core_Model_Observer
  • Mage_Core_Model_Resource
  • Mage_Core_Model_Resource_Abstract
  • Mage_Core_Model_Resource_Cache
  • Mage_Core_Model_Resource_Config
  • Mage_Core_Model_Resource_Config_Data
  • Mage_Core_Model_Resource_Config_Data_Collection
  • Mage_Core_Model_Resource_Db_Abstract
  • Mage_Core_Model_Resource_Db_Collection_Abstract
  • Mage_Core_Model_Resource_Design
  • Mage_Core_Model_Resource_Design_Collection
  • Mage_Core_Model_Resource_Design_Package_Collection
  • Mage_Core_Model_Resource_Email_Template
  • Mage_Core_Model_Resource_Email_Template_Collection
  • Mage_Core_Model_Resource_Entity_Abstract
  • Mage_Core_Model_Resource_Entity_Table
  • Mage_Core_Model_Resource_File_Storage_Abstract
  • Mage_Core_Model_Resource_File_Storage_Database
  • Mage_Core_Model_Resource_File_Storage_Directory_Database
  • Mage_Core_Model_Resource_File_Storage_File
  • Mage_Core_Model_Resource_Flag
  • Mage_Core_Model_Resource_Helper_Abstract
  • Mage_Core_Model_Resource_Helper_Mysql4
  • Mage_Core_Model_Resource_Iterator
  • Mage_Core_Model_Resource_Language
  • Mage_Core_Model_Resource_Language_Collection
  • Mage_Core_Model_Resource_Layout
  • Mage_Core_Model_Resource_Resource
  • Mage_Core_Model_Resource_Session
  • Mage_Core_Model_Resource_Setup
  • Mage_Core_Model_Resource_Setup_Query_Modifier
  • Mage_Core_Model_Resource_Store
  • Mage_Core_Model_Resource_Store_Collection
  • Mage_Core_Model_Resource_Store_Group
  • Mage_Core_Model_Resource_Store_Group_Collection
  • Mage_Core_Model_Resource_Transaction
  • Mage_Core_Model_Resource_Translate
  • Mage_Core_Model_Resource_Translate_String
  • Mage_Core_Model_Resource_Type_Abstract
  • Mage_Core_Model_Resource_Type_Db
  • Mage_Core_Model_Resource_Type_Db_Mysqli
  • Mage_Core_Model_Resource_Type_Db_Mysqli_Setup
  • Mage_Core_Model_Resource_Type_Db_Pdo_Mysql
  • Mage_Core_Model_Resource_Url_Rewrite
  • Mage_Core_Model_Resource_Url_Rewrite_Collection
  • Mage_Core_Model_Resource_Variable
  • Mage_Core_Model_Resource_Variable_Collection
  • Mage_Core_Model_Resource_Website
  • Mage_Core_Model_Resource_Website_Collection
  • Mage_Core_Model_Session
  • Mage_Core_Model_Session_Abstract
  • Mage_Core_Model_Session_Abstract_Varien
  • Mage_Core_Model_Session_Abstract_Zend
  • Mage_Core_Model_Source_Email_Variables
  • Mage_Core_Model_Store
  • Mage_Core_Model_Store_Api
  • Mage_Core_Model_Store_Api_V2
  • Mage_Core_Model_Store_Group
  • Mage_Core_Model_Template
  • Mage_Core_Model_Translate
  • Mage_Core_Model_Translate_Expr
  • Mage_Core_Model_Translate_Inline
  • Mage_Core_Model_Translate_String
  • Mage_Core_Model_Url
  • Mage_Core_Model_Url_Rewrite
  • Mage_Core_Model_Url_Validator
  • Mage_Core_Model_Variable
  • Mage_Core_Model_Variable_Config
  • Mage_Core_Model_Variable_Observer
  • Mage_Core_Model_Website
  • Mage_Page_Block_Switch
  • Mage_Page_Block_Template_Container
  • Mage_Page_Block_Template_Links
  • Mage_Page_Block_Template_Links_Block
  • Mage_Sales_Model_Quote_Address_Total_Collector

Exceptions

  • Mage_Core_Controller_Varien_Exception
  • Mage_Core_Exception
  • Mage_Core_Model_Session_Exception
  • Mage_Core_Model_Store_Exception

Functions

  • destruct
  • is_dir_writeable
  • is_empty_date
  • mageCoreErrorHandler
  • mageDebugBacktrace
  • mageDelTree
  • mageFindClassFile
  • mageParseCsv
  • mageSendErrorFooter
  • mageSendErrorHeader
  • mageUndoMagicQuotes
  • now
  • sys_get_temp_dir
  • uc_words
  • 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_Core
 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:  * Example:
 31:  *
 32:  * // Loading of template
 33:  * $emailTemplate  = Mage::getModel('core/email_template')
 34:  *    ->load(Mage::getStoreConfig('path_to_email_template_id_config'));
 35:  * $variables = array(
 36:  *    'someObject' => Mage::getSingleton('some_model')
 37:  *    'someString' => 'Some string value'
 38:  * );
 39:  * $emailTemplate->send('some@domain.com', 'Name Of User', $variables);
 40:  *
 41:  * @method Mage_Core_Model_Resource_Email_Template _getResource()
 42:  * @method Mage_Core_Model_Resource_Email_Template getResource()
 43:  * @method string getTemplateCode()
 44:  * @method Mage_Core_Model_Email_Template setTemplateCode(string $value)
 45:  * @method string getTemplateText()
 46:  * @method Mage_Core_Model_Email_Template setTemplateText(string $value)
 47:  * @method string getTemplateStyles()
 48:  * @method Mage_Core_Model_Email_Template setTemplateStyles(string $value)
 49:  * @method int getTemplateType()
 50:  * @method Mage_Core_Model_Email_Template setTemplateType(int $value)
 51:  * @method string getTemplateSubject()
 52:  * @method Mage_Core_Model_Email_Template setTemplateSubject(string $value)
 53:  * @method string getTemplateSenderName()
 54:  * @method Mage_Core_Model_Email_Template setTemplateSenderName(string $value)
 55:  * @method string getTemplateSenderEmail()
 56:  * @method Mage_Core_Model_Email_Template setTemplateSenderEmail(string $value)
 57:  * @method string getAddedAt()
 58:  * @method Mage_Core_Model_Email_Template setAddedAt(string $value)
 59:  * @method string getModifiedAt()
 60:  * @method Mage_Core_Model_Email_Template setModifiedAt(string $value)
 61:  * @method string getOrigTemplateCode()
 62:  * @method Mage_Core_Model_Email_Template setOrigTemplateCode(string $value)
 63:  * @method string getOrigTemplateVariables()
 64:  * @method Mage_Core_Model_Email_Template setOrigTemplateVariables(string $value)
 65:  *
 66:  * @category    Mage
 67:  * @package     Mage_Core
 68:  * @author      Magento Core Team <core@magentocommerce.com>
 69:  */
 70: class Mage_Core_Model_Email_Template extends Mage_Core_Model_Template
 71: {
 72:     /**
 73:      * Configuration path for default email templates
 74:      */
 75:     const XML_PATH_TEMPLATE_EMAIL               = 'global/template/email';
 76:     const XML_PATH_SENDING_SET_RETURN_PATH      = 'system/smtp/set_return_path';
 77:     const XML_PATH_SENDING_RETURN_PATH_EMAIL    = 'system/smtp/return_path_email';
 78:     const XML_PATH_DESIGN_EMAIL_LOGO            = 'design/email/logo';
 79:     const XML_PATH_DESIGN_EMAIL_LOGO_ALT        = 'design/email/logo_alt';
 80: 
 81:     protected $_templateFilter;
 82:     protected $_preprocessFlag = false;
 83:     protected $_mail;
 84: 
 85:     static protected $_defaultTemplates;
 86: 
 87:     /**
 88:      * Initialize email template model
 89:      *
 90:      */
 91:     protected function _construct()
 92:     {
 93:         $this->_init('core/email_template');
 94:     }
 95: 
 96:     /**
 97:      * Return logo URL for emails
 98:      * Take logo from skin if custom logo is undefined
 99:      *
100:      * @param  Mage_Core_Model_Store|int|string $store
101:      * @return string
102:      */
103:     protected function _getLogoUrl($store)
104:     {
105:         $store = Mage::app()->getStore($store);
106:         $fileName = $store->getConfig(self::XML_PATH_DESIGN_EMAIL_LOGO);
107:         if ($fileName) {
108:             $uploadDir = Mage_Adminhtml_Model_System_Config_Backend_Email_Logo::UPLOAD_DIR;
109:             $fullFileName = Mage::getBaseDir('media') . DS . $uploadDir . DS . $fileName;
110:             if (file_exists($fullFileName)) {
111:                 return Mage::getBaseUrl('media') . $uploadDir . '/' . $fileName;
112:             }
113:         }
114:         return Mage::getDesign()->getSkinUrl('images/logo_email.gif');
115:     }
116: 
117:     /**
118:      * Return logo alt for emails
119:      *
120:      * @param  Mage_Core_Model_Store|int|string $store
121:      * @return string
122:      */
123:     protected function _getLogoAlt($store)
124:     {
125:         $store = Mage::app()->getStore($store);
126:         $alt = $store->getConfig(self::XML_PATH_DESIGN_EMAIL_LOGO_ALT);
127:         if ($alt) {
128:             return $alt;
129:         }
130:         return $store->getFrontendName();
131:     }
132: 
133:     /**
134:      * Retrieve mail object instance
135:      *
136:      * @return Zend_Mail
137:      */
138:     public function getMail()
139:     {
140:         if (is_null($this->_mail)) {
141:             $this->_mail = new Zend_Mail('utf-8');
142:         }
143:         return $this->_mail;
144:     }
145: 
146:     /**
147:      * Declare template processing filter
148:      *
149:      * @param   Varien_Filter_Template $filter
150:      * @return  Mage_Core_Model_Email_Template
151:      */
152:     public function setTemplateFilter(Varien_Filter_Template $filter)
153:     {
154:         $this->_templateFilter = $filter;
155:         return $this;
156:     }
157: 
158:     /**
159:      * Get filter object for template processing logi
160:      *
161:      * @return Mage_Core_Model_Email_Template_Filter
162:      */
163:     public function getTemplateFilter()
164:     {
165:         if (empty($this->_templateFilter)) {
166:             $this->_templateFilter = Mage::getModel('core/email_template_filter');
167:             $this->_templateFilter->setUseAbsoluteLinks($this->getUseAbsoluteLinks())
168:                 ->setStoreId($this->getDesignConfig()->getStore());
169:         }
170:         return $this->_templateFilter;
171:     }
172: 
173:     /**
174:      * Load template by code
175:      *
176:      * @param   string $templateCode
177:      * @return   Mage_Core_Model_Email_Template
178:      */
179:     public function loadByCode($templateCode)
180:     {
181:         $this->addData($this->getResource()->loadByCode($templateCode));
182:         return $this;
183:     }
184: 
185:     /**
186:      * Load default email template from locale translate
187:      *
188:      * @param string $templateId
189:      * @param string $locale
190:      */
191:     public function loadDefault($templateId, $locale=null)
192:     {
193:         $defaultTemplates = self::getDefaultTemplates();
194:         if (!isset($defaultTemplates[$templateId])) {
195:             return $this;
196:         }
197: 
198:         $data = &$defaultTemplates[$templateId];
199:         $this->setTemplateType($data['type']=='html' ? self::TYPE_HTML : self::TYPE_TEXT);
200: 
201:         $templateText = Mage::app()->getTranslator()->getTemplateFile(
202:             $data['file'], 'email', $locale
203:         );
204: 
205:         if (preg_match('/<!--@subject\s*(.*?)\s*@-->/u', $templateText, $matches)) {
206:             $this->setTemplateSubject($matches[1]);
207:             $templateText = str_replace($matches[0], '', $templateText);
208:         }
209: 
210:         if (preg_match('/<!--@vars\s*((?:.)*?)\s*@-->/us', $templateText, $matches)) {
211:             $this->setData('orig_template_variables', str_replace("\n", '', $matches[1]));
212:             $templateText = str_replace($matches[0], '', $templateText);
213:         }
214: 
215:         if (preg_match('/<!--@styles\s*(.*?)\s*@-->/s', $templateText, $matches)) {
216:            $this->setTemplateStyles($matches[1]);
217:            $templateText = str_replace($matches[0], '', $templateText);
218:         }
219: 
220:         /**
221:          * Remove comment lines
222:          */
223:         $templateText = preg_replace('#\{\*.*\*\}#suU', '', $templateText);
224: 
225:         $this->setTemplateText($templateText);
226:         $this->setId($templateId);
227: 
228:         return $this;
229:     }
230: 
231:     /**
232:      * Retrive default templates from config
233:      *
234:      * @return array
235:      */
236:     static public function getDefaultTemplates()
237:     {
238:         if(is_null(self::$_defaultTemplates)) {
239:             self::$_defaultTemplates = Mage::getConfig()->getNode(self::XML_PATH_TEMPLATE_EMAIL)->asArray();
240:         }
241: 
242:         return self::$_defaultTemplates;
243:     }
244: 
245:     /**
246:      * Retrive default templates as options array
247:      *
248:      * @return array
249:      */
250:     static public function getDefaultTemplatesAsOptionsArray()
251:     {
252:         $options = array(
253:             array('value'=>'', 'label'=> '')
254:         );
255: 
256:         $idLabel = array();
257:         foreach (self::getDefaultTemplates() as $templateId => $row) {
258:             if (isset($row['@']) && isset($row['@']['module'])) {
259:                 $module = $row['@']['module'];
260:             } else {
261:                 $module = 'adminhtml';
262:             }
263:             $idLabel[$templateId] = Mage::helper($module)->__($row['label']);
264:         }
265:         asort($idLabel);
266:         foreach ($idLabel as $templateId => $label) {
267:             $options[] = array('value' => $templateId, 'label' => $label);
268:         }
269: 
270:         return $options;
271:     }
272: 
273:     /**
274:      * Return template id
275:      * return int|null
276:      */
277:     public function getId()
278:     {
279:         return $this->getTemplateId();
280:     }
281: 
282:     /**
283:      * Set id of template
284:      * @param int $value
285:      */
286:     public function setId($value)
287:     {
288:         return $this->setTemplateId($value);
289:     }
290: 
291:     /**
292:      * Return true if this template can be used for sending queue as main template
293:      *
294:      * @return boolean
295:      */
296:     public function isValidForSend()
297:     {
298:         return !Mage::getStoreConfigFlag('system/smtp/disable')
299:             && $this->getSenderName()
300:             && $this->getSenderEmail()
301:             && $this->getTemplateSubject();
302:     }
303: 
304:     /**
305:      * Getter for template type
306:      *
307:      * @return int|string
308:      */
309:     public function getType(){
310:         return $this->getTemplateType();
311:     }
312: 
313:     /**
314:      * Process email template code
315:      *
316:      * @param   array $variables
317:      * @return  string
318:      */
319:     public function getProcessedTemplate(array $variables = array())
320:     {
321:         $processor = $this->getTemplateFilter();
322:         $processor->setUseSessionInUrl(false)
323:             ->setPlainTemplateMode($this->isPlain());
324: 
325:         if (!$this->_preprocessFlag) {
326:             $variables['this'] = $this;
327:         }
328: 
329:         if (isset($variables['subscriber']) && ($variables['subscriber'] instanceof Mage_Newsletter_Model_Subscriber)) {
330:             $processor->setStoreId($variables['subscriber']->getStoreId());
331:         }
332: 
333:         if (!isset($variables['logo_url'])) {
334:             $variables['logo_url'] = $this->_getLogoUrl($processor->getStoreId());
335:         }
336:         if (!isset($variables['logo_alt'])) {
337:             $variables['logo_alt'] = $this->_getLogoAlt($processor->getStoreId());
338:         }
339: 
340:         $processor->setIncludeProcessor(array($this, 'getInclude'))
341:             ->setVariables($variables);
342: 
343:         $this->_applyDesignConfig();
344:         try {
345:             $processedResult = $processor->filter($this->getPreparedTemplateText());
346:         }
347:         catch (Exception $e)   {
348:             $this->_cancelDesignConfig();
349:             throw $e;
350:         }
351:         $this->_cancelDesignConfig();
352:         return $processedResult;
353:     }
354: 
355:     /**
356:      * Makes additional text preparations for HTML templates
357:      *
358:      * @return string
359:      */
360:     public function getPreparedTemplateText()
361:     {
362:         if ($this->isPlain() || !$this->getTemplateStyles()) {
363:             return $this->getTemplateText();
364:         }
365:         // wrap styles into style tag
366:         $html = "<style type=\"text/css\">\n%s\n</style>\n%s";
367:         return sprintf($html, $this->getTemplateStyles(), $this->getTemplateText());
368:     }
369: 
370:     /**
371:      * Get template code for include directive
372:      *
373:      * @param   string $template
374:      * @param   array $variables
375:      * @return  string
376:      */
377:     public function getInclude($template, array $variables)
378:     {
379:         $thisClass = __CLASS__;
380:         $includeTemplate = new $thisClass();
381: 
382:         $includeTemplate->loadByCode($template);
383: 
384:         return $includeTemplate->getProcessedTemplate($variables);
385:     }
386: 
387:     /**
388:      * Send mail to recipient
389:      *
390:      * @param   array|string       $email        E-mail(s)
391:      * @param   array|string|null  $name         receiver name(s)
392:      * @param   array              $variables    template variables
393:      * @return  boolean
394:      **/
395:     public function send($email, $name = null, array $variables = array())
396:     {
397:         if (!$this->isValidForSend()) {
398:             Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted
399:             return false;
400:         }
401: 
402:         $emails = array_values((array)$email);
403:         $names = is_array($name) ? $name : (array)$name;
404:         $names = array_values($names);
405:         foreach ($emails as $key => $email) {
406:             if (!isset($names[$key])) {
407:                 $names[$key] = substr($email, 0, strpos($email, '@'));
408:             }
409:         }
410: 
411:         $variables['email'] = reset($emails);
412:         $variables['name'] = reset($names);
413: 
414:         ini_set('SMTP', Mage::getStoreConfig('system/smtp/host'));
415:         ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
416: 
417:         $mail = $this->getMail();
418: 
419:         $setReturnPath = Mage::getStoreConfig(self::XML_PATH_SENDING_SET_RETURN_PATH);
420:         switch ($setReturnPath) {
421:             case 1:
422:                 $returnPathEmail = $this->getSenderEmail();
423:                 break;
424:             case 2:
425:                 $returnPathEmail = Mage::getStoreConfig(self::XML_PATH_SENDING_RETURN_PATH_EMAIL);
426:                 break;
427:             default:
428:                 $returnPathEmail = null;
429:                 break;
430:         }
431: 
432:         if ($returnPathEmail !== null) {
433:             $mailTransport = new Zend_Mail_Transport_Sendmail("-f".$returnPathEmail);
434:             Zend_Mail::setDefaultTransport($mailTransport);
435:         }
436: 
437:         foreach ($emails as $key => $email) {
438:             $mail->addTo($email, '=?utf-8?B?' . base64_encode($names[$key]) . '?=');
439:         }
440: 
441:         $this->setUseAbsoluteLinks(true);
442:         $text = $this->getProcessedTemplate($variables, true);
443: 
444:         if($this->isPlain()) {
445:             $mail->setBodyText($text);
446:         } else {
447:             $mail->setBodyHTML($text);
448:         }
449: 
450:         $mail->setSubject('=?utf-8?B?' . base64_encode($this->getProcessedTemplateSubject($variables)) . '?=');
451:         $mail->setFrom($this->getSenderEmail(), $this->getSenderName());
452: 
453:         try {
454:             $mail->send();
455:             $this->_mail = null;
456:         }
457:         catch (Exception $e) {
458:             $this->_mail = null;
459:             Mage::logException($e);
460:             return false;
461:         }
462: 
463:         return true;
464:     }
465: 
466:     /**
467:      * Send transactional email to recipient
468:      *
469:      * @param   int $templateId
470:      * @param   string|array $sender sneder informatio, can be declared as part of config path
471:      * @param   string $email recipient email
472:      * @param   string $name recipient name
473:      * @param   array $vars varianles which can be used in template
474:      * @param   int|null $storeId
475:      * @return  Mage_Core_Model_Email_Template
476:      */
477:     public function sendTransactional($templateId, $sender, $email, $name, $vars=array(), $storeId=null)
478:     {
479:         $this->setSentSuccess(false);
480:         if (($storeId === null) && $this->getDesignConfig()->getStore()) {
481:             $storeId = $this->getDesignConfig()->getStore();
482:         }
483: 
484:         if (is_numeric($templateId)) {
485:             $this->load($templateId);
486:         } else {
487:             $localeCode = Mage::getStoreConfig('general/locale/code', $storeId);
488:             $this->loadDefault($templateId, $localeCode);
489:         }
490: 
491:         if (!$this->getId()) {
492:             throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid transactional email code: ' . $templateId));
493:         }
494: 
495:         if (!is_array($sender)) {
496:             $this->setSenderName(Mage::getStoreConfig('trans_email/ident_' . $sender . '/name', $storeId));
497:             $this->setSenderEmail(Mage::getStoreConfig('trans_email/ident_' . $sender . '/email', $storeId));
498:         } else {
499:             $this->setSenderName($sender['name']);
500:             $this->setSenderEmail($sender['email']);
501:         }
502: 
503:         if (!isset($vars['store'])) {
504:             $vars['store'] = Mage::app()->getStore($storeId);
505:         }
506:         $this->setSentSuccess($this->send($email, $name, $vars));
507:         return $this;
508:     }
509: 
510:     /**
511:      * Process email subject
512:      *
513:      * @param   array $variables
514:      * @return  string
515:      */
516:     public function getProcessedTemplateSubject(array $variables)
517:     {
518:         $processor = $this->getTemplateFilter();
519: 
520:         if(!$this->_preprocessFlag) {
521:             $variables['this'] = $this;
522:         }
523: 
524:         $processor->setVariables($variables);
525: 
526:         $this->_applyDesignConfig();
527:         try{
528:             $processedResult = $processor->filter($this->getTemplateSubject());
529:         }
530:         catch (Exception $e) {
531:             $this->_cancelDesignConfig();
532:             throw $e;
533:         }
534:         $this->_cancelDesignConfig();
535:         return $processedResult;
536:     }
537: 
538:     public function addBcc($bcc)
539:     {
540:         if (is_array($bcc)) {
541:             foreach ($bcc as $email) {
542:                 $this->getMail()->addBcc($email);
543:             }
544:         }
545:         elseif ($bcc) {
546:             $this->getMail()->addBcc($bcc);
547:         }
548:         return $this;
549:     }
550: 
551:     /**
552:      * Set Return Path
553:      *
554:      * @param string $email
555:      * @return Mage_Core_Model_Email_Template
556:      */
557:     public  function setReturnPath($email)
558:     {
559:         $this->getMail()->setReturnPath($email);
560:         return $this;
561:     }
562: 
563:     /**
564:      * Add Reply-To header
565:      *
566:      * @param string $email
567:      * @return Mage_Core_Model_Email_Template
568:      */
569:     public function setReplyTo($email)
570:     {
571:         $this->getMail()->setReplyTo($email);
572:         return $this;
573:     }
574: 
575:     /**
576:      * Parse variables string into array of variables
577:      *
578:      * @param string $variablesString
579:      * @return array
580:      */
581:     protected function _parseVariablesString($variablesString)
582:     {
583:         $variables = array();
584:         if ($variablesString && is_string($variablesString)) {
585:             $variablesString = str_replace("\n", '', $variablesString);
586:             $variables = Zend_Json::decode($variablesString);
587:         }
588:         return $variables;
589:     }
590: 
591:     /**
592:      * Retrieve option array of variables
593:      *
594:      * @param boolean $withGroup if true wrap variable options in group
595:      * @return array
596:      */
597:     public function getVariablesOptionArray($withGroup = false)
598:     {
599:         $optionArray = array();
600:         $variables = $this->_parseVariablesString($this->getData('orig_template_variables'));
601:         if ($variables) {
602:             foreach ($variables as $value => $label) {
603:                 $optionArray[] = array(
604:                     'value' => '{{' . $value . '}}',
605:                     'label' => Mage::helper('core')->__('%s', $label)
606:                 );
607:             }
608:             if ($withGroup) {
609:                 $optionArray = array(
610:                     'label' => Mage::helper('core')->__('Template Variables'),
611:                     'value' => $optionArray
612:                 );
613:             }
614:         }
615:         return $optionArray;
616:     }
617: 
618:     /**
619:      * Validate email template code
620:      *
621:      * @return Mage_Core_Model_Email_Template
622:      */
623:     protected function _beforeSave()
624:     {
625:         $code = $this->getTemplateCode();
626:         if (empty($code)) {
627:             Mage::throwException(Mage::helper('core')->__('The template Name must not be empty.'));
628:         }
629:         if($this->_getResource()->checkCodeUsage($this)) {
630:             Mage::throwException(Mage::helper('core')->__('Duplicate Of Template Name'));
631:         }
632:         return parent::_beforeSave();
633:     }
634: }
635: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0