Вход Регистрация
Файл: protected/extensions/email/EMail.php
Строк: 166
<?php
/**
 * EMail class file.
 *
 * @author MetaYii
 * @version 2.2
 * @link http://www.yiiframework.com/
 * @copyright Copyright &copy; 2009 MetaYii
 *
 * Copyright (C) 2009 MetaYii.
 *
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU Lesser General Public License as published by
 *     the Free Software Foundation, either version 2.1 of the License, or
 *     (at your option) any later version.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU Lesser General Public License for more details.
 *
 *     You should have received a copy of the GNU Lesser General Public License
 *     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * For third party licenses and copyrights, please see phpmailer/LICENSE
 *
 */

/**
 * Include the the PHPMailer class.
 */
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'phpmailer'.DIRECTORY_SEPARATOR.'class.phpmailer.php');

/**
 * EMail is a simple wrapper for the PHPMailer library.
 * @see http://phpmailer.codeworxtech.com/index.php?pg=phpmailer
 *
 * @author MetaYii
 * @package application.extensions.email
 * @since 1.0
 */
class EMail
{
   
//***************************************************************************
   // Configuration
   //***************************************************************************

   /**
    * The path to the directory where the view for getView is stored. Must not
    * have ending dot.
    *
    * @var string
    */
   
protected $pathViews 'application.views.email';

   
/**
    * The path to the directory where the layout for getView is stored. Must
    * not have ending dot.
    *
    * @var string
    */
   
protected $pathLayouts 'application.views.email.layouts';

   
//***************************************************************************
   // Private properties
   //***************************************************************************

   /**
    * The internal PHPMailer object.
    *
    * @var object PHPMailer
    */
   
private $_myMailer;

   
//***************************************************************************
   // Initialization
   //***************************************************************************

   /**
    * Init method for the application component mode.
    */
   
public function init() {}

   
/**
    * Constructor. Here the instance of PHPMailer is created.
    */
    
public function __construct()
    {
        
$this->_myMailer = new PHPMailer();
    }

   
//***************************************************************************
   // Setters and getters
   //***************************************************************************

   /**
    * Setter
    *
    * @param string $value pathLayouts
    */
   
public function setPathLayouts($value)
   {
      if (!
is_string($value) && !preg_match("/[a-z0-9.]/i"))
         throw new 
CException(Yii::t('EMail''pathLayouts must be a Yii alias path'));
      
$this->pathLayouts $value;
   }

   
/**
    * Getter
    *
    * @return string pathLayouts
    */
   
public function getPathLayouts()
   {
      return 
$this->pathLayouts;
   }

   
/**
    * Setter
    *
    * @param string $value pathViews
    */
   
public function setPathViews($value)
   {
      if (!
is_string($value) && !preg_match("/[a-z0-9.]/i"))
         throw new 
CException(Yii::t('EMail''pathViews must be a Yii alias path'));
      
$this->pathViews $value;
   }

   
/**
    * Getter
    *
    * @return string pathViews
    */
   
public function getPathViews()
   {
      return 
$this->pathViews;
   }

   
//***************************************************************************
   // Magic
   //***************************************************************************

   /**
    * Call a PHPMailer function
    *
    * @param string $method the method to call
    * @param array $params the parameters
    * @return mixed
    */
    
public function __call($method$params)
    {
        if (
is_object($this->_myMailer) && get_class($this->_myMailer)==='PHPMailer') return call_user_func_array(array($this->_myMailer$method), $params);
        else throw new 
CException(Yii::t('EMail''Can not call a method of a non existent object'));
    }

   
/**
    * Setter
    *
    * @param string $name the property name
    * @param string $value the property value
    */
    
public function __set($name$value)
    {
       if (
is_object($this->_myMailer) && get_class($this->_myMailer)==='PHPMailer'$this->_myMailer->$name $value;
       else throw new 
CException(Yii::t('EMail''Can not set a property of a non existent object'));
    }

   
/**
    * Getter
    *
    * @param string $name
    * @return mixed
    */
    
public function __get($name)
    {
       if (
is_object($this->_myMailer) && get_class($this->_myMailer)==='PHPMailer') return $this->_myMailer->$name;
       else throw new 
CException(Yii::t('EMail''Can not access a property of a non existent object'));
    }

    
/**
     * Cleanup work before serializing.
     * This is a PHP defined magic method.
     * @return array the names of instance-variables to serialize.
     */
    
public function __sleep()
    {
    }

    
/**
     * This method will be automatically called when unserialization happens.
     * This is a PHP defined magic method.
     */
    
public function __wakeup()
    {
    }

   
//***************************************************************************
   // Utilities
   //***************************************************************************

   /**
    * Displays an e-mail in preview mode. 
    *
    * @param string $view the class
    * @param array $vars
    * @param string $layout
    */
   
public function getView($view$vars = array(), $layout null)
   {
      
$body Yii::app()->controller->renderPartial($this->pathViews.'.'.$viewarray_merge($vars, array('content'=>$this->_myMailer)), true);
      if (
$layout === null) {
         
$this->_myMailer->Body $body;
      }
      else {
         
$this->_myMailer->Body Yii::app()->controller->renderPartial($this->pathLayouts.'.'.$layout, array('content'=>$body), true);
      }
   }
}
Онлайн: 1
Реклама