Overview

Packages

  • application
    • commands
    • components
      • actions
      • filters
      • leftWidget
      • permissions
      • sortableWidget
      • util
      • webupdater
      • x2flow
        • actions
        • triggers
      • X2GridView
      • X2Settings
    • controllers
    • models
      • embedded
    • modules
      • accounts
        • controllers
        • models
      • actions
        • controllers
        • models
      • calendar
        • controllers
        • models
      • charts
        • models
      • contacts
        • controllers
        • models
      • docs
        • components
        • controllers
        • models
      • groups
        • controllers
        • models
      • marketing
        • components
        • controllers
        • models
      • media
        • controllers
        • models
      • mobile
        • components
      • opportunities
        • controllers
        • models
      • products
        • controllers
        • models
      • quotes
        • controllers
        • models
      • services
        • controllers
        • models
      • template
        • models
      • users
        • controllers
        • models
      • workflow
        • controllers
        • models
      • x2Leads
        • controllers
        • models
  • Net
  • None
  • PHP
  • system
    • base
    • caching
      • dependencies
    • collections
    • console
    • db
      • ar
      • schema
        • cubrid
        • mssql
        • mysql
        • oci
        • pgsql
        • sqlite
    • i18n
      • gettext
    • logging
    • test
    • utils
    • validators
    • web
      • actions
      • auth
      • filters
      • form
      • helpers
      • renderers
      • services
      • widgets
        • captcha
        • pagers
  • Text
    • Highlighter
  • zii
    • behaviors
    • widgets
      • grid
      • jui

Classes

  • CChainedLogFilter
  • CDbLogRoute
  • CEmailLogRoute
  • CFileLogRoute
  • CLogFilter
  • CLogger
  • CLogRoute
  • CLogRouter
  • CProfileLogRoute
  • CSysLogRoute
  • CWebLogRoute

Interfaces

  • ILogFilter
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * CEmailLogRoute class file.
  4:  *
  5:  * @author Qiang Xue <qiang.xue@gmail.com>
  6:  * @link http://www.yiiframework.com/
  7:  * @copyright 2008-2013 Yii Software LLC
  8:  * @license http://www.yiiframework.com/license/
  9:  */
 10: 
 11: /**
 12:  * CEmailLogRoute sends selected log messages to email addresses.
 13:  *
 14:  * The target email addresses may be specified via {@link setEmails emails} property.
 15:  * Optionally, you may set the email {@link setSubject subject}, the
 16:  * {@link setSentFrom sentFrom} address and any additional {@link setHeaders headers}.
 17:  *
 18:  * @property array $emails List of destination email addresses.
 19:  * @property string $subject Email subject. Defaults to CEmailLogRoute::DEFAULT_SUBJECT.
 20:  * @property string $sentFrom Send from address of the email.
 21:  * @property array $headers Additional headers to use when sending an email.
 22:  *
 23:  * @author Qiang Xue <qiang.xue@gmail.com>
 24:  * @package system.logging
 25:  * @since 1.0
 26:  */
 27: class CEmailLogRoute extends CLogRoute
 28: {
 29:     /**
 30:      * @var boolean set this property to true value in case log data you're going to send through emails contains
 31:      * non-latin or UTF-8 characters. Emails would be UTF-8 encoded.
 32:      * @since 1.1.13
 33:      */
 34:     public $utf8=false;
 35:     /**
 36:      * @var array list of destination email addresses.
 37:      */
 38:     private $_email=array();
 39:     /**
 40:      * @var string email subject
 41:      */
 42:     private $_subject;
 43:     /**
 44:      * @var string email sent from address
 45:      */
 46:     private $_from;
 47:     /**
 48:      * @var array list of additional headers to use when sending an email.
 49:      */
 50:     private $_headers=array();
 51: 
 52:     /**
 53:      * Sends log messages to specified email addresses.
 54:      * @param array $logs list of log messages
 55:      */
 56:     protected function processLogs($logs)
 57:     {
 58:         $message='';
 59:         foreach($logs as $log)
 60:             $message.=$this->formatLogMessage($log[0],$log[1],$log[2],$log[3]);
 61:         $message=wordwrap($message,70);
 62:         $subject=$this->getSubject();
 63:         if($subject===null)
 64:             $subject=Yii::t('yii','Application Log');
 65:         foreach($this->getEmails() as $email)
 66:             $this->sendEmail($email,$subject,$message);
 67:     }
 68: 
 69:     /**
 70:      * Sends an email.
 71:      * @param string $email single email address
 72:      * @param string $subject email subject
 73:      * @param string $message email content
 74:      */
 75:     protected function sendEmail($email,$subject,$message)
 76:     {
 77:         $headers=$this->getHeaders();
 78:         if($this->utf8)
 79:         {
 80:             $headers[]="MIME-Version: 1.0";
 81:             $headers[]="Content-Type: text/plain; charset=UTF-8";
 82:             $subject='=?UTF-8?B?'.base64_encode($subject).'?=';
 83:         }
 84:         if(($from=$this->getSentFrom())!==null)
 85:         {
 86:             $matches=array();
 87:             preg_match_all('/([^<]*)<([^>]*)>/iu',$from,$matches);
 88:             if(isset($matches[1][0],$matches[2][0]))
 89:             {
 90:                 $name=$this->utf8 ? '=?UTF-8?B?'.base64_encode(trim($matches[1][0])).'?=' : trim($matches[1][0]);
 91:                 $from=trim($matches[2][0]);
 92:                 $headers[]="From: {$name} <{$from}>";
 93:             }
 94:             else
 95:                 $headers[]="From: {$from}";
 96:             $headers[]="Reply-To: {$from}";
 97:         }
 98:         mail($email,$subject,$message,implode("\r\n",$headers));
 99:     }
100: 
101:     /**
102:      * @return array list of destination email addresses
103:      */
104:     public function getEmails()
105:     {
106:         return $this->_email;
107:     }
108: 
109:     /**
110:      * @param mixed $value list of destination email addresses. If the value is
111:      * a string, it is assumed to be comma-separated email addresses.
112:      */
113:     public function setEmails($value)
114:     {
115:         if(is_array($value))
116:             $this->_email=$value;
117:         else
118:             $this->_email=preg_split('/[\s,]+/',$value,-1,PREG_SPLIT_NO_EMPTY);
119:     }
120: 
121:     /**
122:      * @return string email subject. Defaults to CEmailLogRoute::DEFAULT_SUBJECT
123:      */
124:     public function getSubject()
125:     {
126:         return $this->_subject;
127:     }
128: 
129:     /**
130:      * @param string $value email subject.
131:      */
132:     public function setSubject($value)
133:     {
134:         $this->_subject=$value;
135:     }
136: 
137:     /**
138:      * @return string send from address of the email
139:      */
140:     public function getSentFrom()
141:     {
142:         return $this->_from;
143:     }
144: 
145:     /**
146:      * @param string $value send from address of the email
147:      */
148:     public function setSentFrom($value)
149:     {
150:         $this->_from=$value;
151:     }
152: 
153:     /**
154:      * @return array additional headers to use when sending an email.
155:      * @since 1.1.4
156:      */
157:     public function getHeaders()
158:     {
159:         return $this->_headers;
160:     }
161: 
162:     /**
163:      * @param mixed $value list of additional headers to use when sending an email.
164:      * If the value is a string, it is assumed to be line break separated headers.
165:      * @since 1.1.4
166:      */
167:     public function setHeaders($value)
168:     {
169:         if (is_array($value))
170:             $this->_headers=$value;
171:         else
172:             $this->_headers=preg_split('/\r\n|\n/',$value,-1,PREG_SPLIT_NO_EMPTY);
173:     }
174: }
API documentation generated by ApiGen 2.8.0