vendor/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php
author cavaliet
Mon, 07 Jul 2014 17:23:47 +0200
changeset 122 d672f7dd74dc
parent 0 7f95f8617b0b
permissions -rwxr-xr-x
Added tag V00.17 for changeset ada5f3d8b5b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * This file is part of SwiftMailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * (c) 2004-2009 Chris Corbyn
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * For the full copyright and license information, please view the LICENSE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * file that was distributed with this source code.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
 * A Path Header in Swift Mailer, such a Return-Path.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 * @package Swift
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 * @subpackage Mime
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 * @author Chris Corbyn
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
class Swift_Mime_Headers_PathHeader extends Swift_Mime_Headers_AbstractHeader
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
   * The address in this Header (if specified).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
   * @var string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
   * @access private
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
  private $_address;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
   * Creates a new PathHeader with the given $name.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
   * @param string $name
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
   * @param Swift_Mime_Grammar $grammar
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
  public function __construct($name, Swift_Mime_Grammar $grammar)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    $this->setFieldName($name);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    parent::__construct($grammar);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
   * Get the type of Header that this instance represents.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
   * @return int
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
   * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
   * @see TYPE_DATE, TYPE_ID, TYPE_PATH
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
  public function getFieldType()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    return self::TYPE_PATH;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
   * Set the model for the field body.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
   * This method takes a string for an address.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
   * @param string $model
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
   * @throws Swift_RfcComplianceException
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
  public function setFieldBodyModel($model)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    $this->setAddress($model);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
   * Get the model for the field body.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
   * This method returns a string email address.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
   * @return mixed
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
  public function getFieldBodyModel()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    return $this->getAddress();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
   * Set the Address which should appear in this Header.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
   * @param string $address
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
   * @throws Swift_RfcComplianceException
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
  public function setAddress($address)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    if (is_null($address))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
      $this->_address = null;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    elseif ('' == $address)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
      $this->_address = '';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
    else
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
      $this->_assertValidAddress($address);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
      $this->_address = $address;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
    $this->setCachedValue(null);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
   * Get the address which is used in this Header (if any).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
   * Null is returned if no address is set.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
   * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
  public function getAddress()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    return $this->_address;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
   * Get the string value of the body in this Header.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
   * This is not necessarily RFC 2822 compliant since folding white space will
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
   * not be added at this stage (see {@link toString()} for that).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
   * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
   * @see toString()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
  public function getFieldBody()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
    if (!$this->getCachedValue())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
      if (isset($this->_address))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
      {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
        $this->setCachedValue('<' . $this->_address . '>');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
      }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
    return $this->getCachedValue();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
   * Throws an Exception if the address passed does not comply with RFC 2822.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
   * @param string $address
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
   * @throws Swift_RfcComplianceException If invalid.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
   * @access private
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
  private function _assertValidAddress($address)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
    if (!preg_match('/^' . $this->getGrammar()->getDefinition('addr-spec') . '$/D',
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
      $address))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
      throw new Swift_RfcComplianceException(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
        'Address set in PathHeader does not comply with addr-spec of RFC 2822.'
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
        );
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
}