vendor/swiftmailer/lib/classes/Swift/Mime/Attachment.php
author ymh <ymh.work@gmail.com>
Sat, 24 Sep 2011 15:40:41 +0200
changeset 0 7f95f8617b0b
permissions -rwxr-xr-x
first commit
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
 * An attachment, in a multipart message.
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_Attachment extends Swift_Mime_SimpleMimeEntity
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
  /** Recognized MIME types */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
  private $_mimeTypes = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
   * Create a new Attachment with $headers, $encoder and $cache.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
   * @param Swift_Mime_HeaderSet $headers
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
   * @param Swift_Mime_ContentEncoder $encoder
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
   * @param Swift_KeyCache $cache
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
   * @param Swift_Mime_Grammar $grammar
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
   * @param array $mimeTypes optional
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
  public function __construct(Swift_Mime_HeaderSet $headers,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    Swift_Mime_Grammar $grammar, $mimeTypes = array())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    parent::__construct($headers, $encoder, $cache, $grammar);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    $this->setDisposition('attachment');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    $this->setContentType('application/octet-stream');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    $this->_mimeTypes = $mimeTypes;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
   * Get the nesting level used for this attachment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
   * Always returns {@link LEVEL_MIXED}.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
   * @return int
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
  public function getNestingLevel()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    return self::LEVEL_MIXED;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
   * Get the Content-Disposition of this attachment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
   * By default attachments have a disposition of "attachment".
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
   * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
  public function getDisposition()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    return $this->_getHeaderFieldModel('Content-Disposition');
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
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
   * Set the Content-Disposition of this attachment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
   * @param string $disposition
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 setDisposition($disposition)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
      $this->getHeaders()->addParameterizedHeader(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        'Content-Disposition', $disposition
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        );
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    return $this;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
   * Get the filename of this attachment when downloaded.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
   * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
  public function getFilename()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    return $this->_getHeaderParameter('Content-Disposition', 'filename');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
   * Set the filename of this attachment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
   * @param string $filename
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
  public function setFilename($filename)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    $this->_setHeaderParameter('Content-Disposition', 'filename', $filename);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
    $this->_setHeaderParameter('Content-Type', 'name', $filename);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
    return $this;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
   * Get the file size of this attachment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
   * @return int
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
  public function getSize()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
    return $this->_getHeaderParameter('Content-Disposition', 'size');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
   * Set the file size of this attachment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
   * @param int $size
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
  public function setSize($size)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
    $this->_setHeaderParameter('Content-Disposition', 'size', $size);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
    return $this;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
   * Set the file that this attachment is for.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
   * @param Swift_FileStream $file
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
   * @param string $contentType optional
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
  public function setFile(Swift_FileStream $file, $contentType = null)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
    $this->setFilename(basename($file->getPath()));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
    $this->setBody($file, $contentType);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
    if (!isset($contentType))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      $extension = strtolower(substr(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
        $file->getPath(), strrpos($file->getPath(), '.') + 1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
        ));
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 (array_key_exists($extension, $this->_mimeTypes))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
      {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
        $this->setContentType($this->_mimeTypes[$extension]);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
      }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
    return $this;
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
}