Files
b2b.redline.com.pl/modules/newsletterpro/libraries/swift/classes/Swift/Mime/Attachment.php
2025-06-24 14:14:35 +02:00

156 lines
4.1 KiB
PHP

<?php
/*
* This file is part of SwiftMailer.
* (c) 2004-2009 Chris Corbyn
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* An attachment, in a multipart message.
*
* @author Chris Corbyn
*/
class NewsletterPro_Swift_Mime_Attachment extends NewsletterPro_Swift_Mime_SimpleMimeEntity
{
/** Recognized MIME types */
private $_mimeTypes = array();
/**
* Create a new Attachment with $headers, $encoder and $cache.
*
* @param NewsletterPro_Swift_Mime_HeaderSet $headers
* @param NewsletterPro_Swift_Mime_ContentEncoder $encoder
* @param NewsletterPro_Swift_KeyCache $cache
* @param NewsletterPro_Swift_Mime_Grammar $grammar
* @param array $mimeTypes optional
*/
public function __construct(NewsletterPro_Swift_Mime_HeaderSet $headers, NewsletterPro_Swift_Mime_ContentEncoder $encoder, NewsletterPro_Swift_KeyCache $cache, NewsletterPro_Swift_Mime_Grammar $grammar, $mimeTypes = array())
{
parent::__construct($headers, $encoder, $cache, $grammar);
$this->setDisposition('attachment');
$this->setContentType('application/octet-stream');
$this->_mimeTypes = $mimeTypes;
}
/**
* Get the nesting level used for this attachment.
*
* Always returns {@link LEVEL_MIXED}.
*
* @return int
*/
public function getNestingLevel()
{
return self::LEVEL_MIXED;
}
/**
* Get the Content-Disposition of this attachment.
*
* By default attachments have a disposition of "attachment".
*
* @return string
*/
public function getDisposition()
{
return $this->_getHeaderFieldModel('Content-Disposition');
}
/**
* Set the Content-Disposition of this attachment.
*
* @param string $disposition
*
* @return NewsletterPro_Swift_Mime_Attachment
*/
public function setDisposition($disposition)
{
if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition)) {
$this->getHeaders()->addParameterizedHeader(
'Content-Disposition',
$disposition
);
}
return $this;
}
/**
* Get the filename of this attachment when downloaded.
*
* @return string
*/
public function getFilename()
{
return $this->_getHeaderParameter('Content-Disposition', 'filename');
}
/**
* Set the filename of this attachment.
*
* @param string $filename
*
* @return NewsletterPro_Swift_Mime_Attachment
*/
public function setFilename($filename)
{
$this->_setHeaderParameter('Content-Disposition', 'filename', $filename);
$this->_setHeaderParameter('Content-Type', 'name', $filename);
return $this;
}
/**
* Get the file size of this attachment.
*
* @return int
*/
public function getSize()
{
return $this->_getHeaderParameter('Content-Disposition', 'size');
}
/**
* Set the file size of this attachment.
*
* @param int $size
*
* @return NewsletterPro_Swift_Mime_Attachment
*/
public function setSize($size)
{
$this->_setHeaderParameter('Content-Disposition', 'size', $size);
return $this;
}
/**
* Set the file that this attachment is for.
*
* @param NewsletterPro_Swift_FileStream $file
* @param string $contentType optional
*
* @return NewsletterPro_Swift_Mime_Attachment
*/
public function setFile(NewsletterPro_Swift_FileStream $file, $contentType = null)
{
$this->setFilename(basename($file->getPath()));
$this->setBody($file, $contentType);
if (!isset($contentType)) {
$extension = strtolower(substr(
$file->getPath(),
strrpos($file->getPath(), '.') + 1
));
if (array_key_exists($extension, $this->_mimeTypes)) {
$this->setContentType($this->_mimeTypes[$extension]);
}
}
return $this;
}
}