Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/debug_kit/src/Mailer/Transport/DebugKitTransport.php
<?php
namespace DebugKit\Mailer\Transport;

use
Cake\Core\App;
use
Cake\Mailer\AbstractTransport;
use
Cake\Mailer\Email;

/**
 * Debug Transport class, useful for emulating the email sending process and inspecting
 * the resulting email message before actually sending it during development
 */
class DebugKitTransport extends AbstractTransport
{
   
/**
     * The transport object this class is decorating
     *
     * @var AbstractTransport
     */
   
protected $originalTransport;

   
/**
     * A reference to the object were emails will be pushed to
     * for logging.
     *
     * @var \ArrayObject
     */
   
protected $emailLog;

   
/**
     * Constructor
     *
     * @param array $config Configuration options.
     * @param AbstractTransport|null $originalTransport The transport that is to be decorated
     */
   
public function __construct($config = [], AbstractTransport $originalTransport = null)
    {
       
$this->emailLog = $config['debugKitLog'];

        if (
$originalTransport !== null) {
           
$this->originalTransport = $originalTransport;

            return;
        }

       
$className = false;
        if (!empty(
$config['originalClassName'])) {
           
$className = App::className(
               
$config['originalClassName'],
               
'Mailer/Transport',
               
'Transport'
           
);
        }

        if (
$className) {
            unset(
$config['originalClassName'], $config['debugKitLog']);
           
$this->originalTransport = new $className($config);
        }
    }

   
/**
     * Send mail
     *
     * @param \Cake\Mailer\Email $email Cake Email
     * @return array
     */
   
public function send(Email $email)
    {
       
$headers = $email->getHeaders(['from', 'sender', 'replyTo', 'readReceipt', 'returnPath', 'to', 'cc']);
       
$parts = [
           
'text' => $email->message(Email::MESSAGE_TEXT),
           
'html' => $email->message(Email::MESSAGE_HTML),
        ];

       
$headers['Subject'] = $email->getOriginalSubject();
       
$result = ['headers' => $headers, 'message' => $parts];
       
$this->emailLog[] = $result;

        if (
$this->originalTransport !== null) {
            return
$this->originalTransport->send($email);
        }

        return
$result;
    }

   
/**
     * Proxy unknown methods to the wrapped object
     *
     * @param string $method The method to call
     * @param array $args The args to call $method with.
     * @return mixed
     */
   
public function __call($method, array $args)
    {
        return
call_user_func_array([$this->originalTransport, $method], $args);
    }

   
/**
     * Proxy property reads to the wrapped object
     *
     * @param string $name The property to read.
     * @return mixed
     */
   
public function __get($name)
    {
        return
$this->originalTransport->{$name};
    }

   
/**
     * Proxy property changes to the wrapped object
     *
     * @param string $name The property to read.
     * @param mixed $value The property value.
     * @return mixed
     */
   
public function __set($name, $value)
    {
        return
$this->originalTransport->{$name} = $value;
    }

   
/**
     * Proxy property changes to the wrapped object
     *
     * @param string $name The property to read.
     * @return bool
     */
   
public function __isset($name)
    {
        return isset(
$this->originalTransport->{$name});
    }

   
/**
     * Proxy property changes to the wrapped object
     *
     * @param string $name The property to delete.
     * @return void
     */
   
public function __unset($name)
    {
        unset(
$this->originalTransport->{$name});
    }
}