summaryrefslogtreecommitdiff
path: root/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php')
-rw-r--r--vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php260
1 files changed, 0 insertions, 260 deletions
diff --git a/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php b/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php
deleted file mode 100644
index 6bfdc9bc..00000000
--- a/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php
+++ /dev/null
@@ -1,260 +0,0 @@
-<?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 abstract base MIME Header.
- *
- * @author Chris Corbyn
- */
-class Swift_Mime_Headers_ParameterizedHeader extends Swift_Mime_Headers_UnstructuredHeader implements Swift_Mime_ParameterizedHeader
-{
- /**
- * RFC 2231's definition of a token.
- *
- * @var string
- */
- const TOKEN_REGEX = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)';
-
- /**
- * The Encoder used to encode the parameters.
- *
- * @var Swift_Encoder
- */
- private $_paramEncoder;
-
- /**
- * The parameters as an associative array.
- *
- * @var string[]
- */
- private $_params = array();
-
- /**
- * Creates a new ParameterizedHeader with $name.
- *
- * @param string $name
- * @param Swift_Mime_HeaderEncoder $encoder
- * @param Swift_Encoder $paramEncoder, optional
- * @param Swift_Mime_Grammar $grammar
- */
- public function __construct($name, Swift_Mime_HeaderEncoder $encoder, Swift_Encoder $paramEncoder = null, Swift_Mime_Grammar $grammar)
- {
- parent::__construct($name, $encoder, $grammar);
- $this->_paramEncoder = $paramEncoder;
- }
-
- /**
- * Get the type of Header that this instance represents.
- *
- * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX
- * @see TYPE_DATE, TYPE_ID, TYPE_PATH
- *
- * @return int
- */
- public function getFieldType()
- {
- return self::TYPE_PARAMETERIZED;
- }
-
- /**
- * Set the character set used in this Header.
- *
- * @param string $charset
- */
- public function setCharset($charset)
- {
- parent::setCharset($charset);
- if (isset($this->_paramEncoder)) {
- $this->_paramEncoder->charsetChanged($charset);
- }
- }
-
- /**
- * Set the value of $parameter.
- *
- * @param string $parameter
- * @param string $value
- */
- public function setParameter($parameter, $value)
- {
- $this->setParameters(array_merge($this->getParameters(), array($parameter => $value)));
- }
-
- /**
- * Get the value of $parameter.
- *
- * @param string $parameter
- *
- * @return string
- */
- public function getParameter($parameter)
- {
- $params = $this->getParameters();
-
- return array_key_exists($parameter, $params)
- ? $params[$parameter]
- : null;
- }
-
- /**
- * Set an associative array of parameter names mapped to values.
- *
- * @param string[] $parameters
- */
- public function setParameters(array $parameters)
- {
- $this->clearCachedValueIf($this->_params != $parameters);
- $this->_params = $parameters;
- }
-
- /**
- * Returns an associative array of parameter names mapped to values.
- *
- * @return string[]
- */
- public function getParameters()
- {
- return $this->_params;
- }
-
- /**
- * Get the value of this header prepared for rendering.
- *
- * @return string
- */
- public function getFieldBody() //TODO: Check caching here
- {
- $body = parent::getFieldBody();
- foreach ($this->_params as $name => $value) {
- if (!is_null($value)) {
- // Add the parameter
- $body .= '; ' . $this->_createParameter($name, $value);
- }
- }
-
- return $body;
- }
-
-
- /**
- * Generate a list of all tokens in the final header.
- *
- * This doesn't need to be overridden in theory, but it is for implementation
- * reasons to prevent potential breakage of attributes.
- *
- * @param string $string The string to tokenize
- *
- * @return array An array of tokens as strings
- */
- protected function toTokens($string = null)
- {
- $tokens = parent::toTokens(parent::getFieldBody());
-
- // Try creating any parameters
- foreach ($this->_params as $name => $value) {
- if (!is_null($value)) {
- // Add the semi-colon separator
- $tokens[count($tokens)-1] .= ';';
- $tokens = array_merge($tokens, $this->generateTokenLines(
- ' ' . $this->_createParameter($name, $value)
- ));
- }
- }
-
- return $tokens;
- }
-
- /**
- * Render a RFC 2047 compliant header parameter from the $name and $value.
- *
- * @param string $name
- * @param string $value
- *
- * @return string
- */
- private function _createParameter($name, $value)
- {
- $origValue = $value;
-
- $encoded = false;
- // Allow room for parameter name, indices, "=" and DQUOTEs
- $maxValueLength = $this->getMaxLineLength() - strlen($name . '=*N"";') - 1;
- $firstLineOffset = 0;
-
- // If it's not already a valid parameter value...
- if (!preg_match('/^' . self::TOKEN_REGEX . '$/D', $value)) {
- // TODO: text, or something else??
- // ... and it's not ascii
- if (!preg_match('/^' . $this->getGrammar()->getDefinition('text') . '*$/D', $value)) {
- $encoded = true;
- // Allow space for the indices, charset and language
- $maxValueLength = $this->getMaxLineLength() - strlen($name . '*N*="";') - 1;
- $firstLineOffset = strlen(
- $this->getCharset() . "'" . $this->getLanguage() . "'"
- );
- }
- }
-
- // Encode if we need to
- if ($encoded || strlen($value) > $maxValueLength) {
- if (isset($this->_paramEncoder)) {
- $value = $this->_paramEncoder->encodeString(
- $origValue, $firstLineOffset, $maxValueLength, $this->getCharset()
- );
- } else { // We have to go against RFC 2183/2231 in some areas for interoperability
- $value = $this->getTokenAsEncodedWord($origValue);
- $encoded = false;
- }
- }
-
- $valueLines = isset($this->_paramEncoder) ? explode("\r\n", $value) : array($value);
-
- // Need to add indices
- if (count($valueLines) > 1) {
- $paramLines = array();
- foreach ($valueLines as $i => $line) {
- $paramLines[] = $name . '*' . $i .
- $this->_getEndOfParameterValue($line, true, $i == 0);
- }
-
- return implode(";\r\n ", $paramLines);
- } else {
- return $name . $this->_getEndOfParameterValue(
- $valueLines[0], $encoded, true
- );
- }
- }
-
- /**
- * Returns the parameter value from the "=" and beyond.
- *
- * @param string $value to append
- * @param bool $encoded
- * @param bool $firstLine
- *
- * @return string
- */
- private function _getEndOfParameterValue($value, $encoded = false, $firstLine = false)
- {
- if (!preg_match('/^' . self::TOKEN_REGEX . '$/D', $value)) {
- $value = '"' . $value . '"';
- }
- $prepend = '=';
- if ($encoded) {
- $prepend = '*=';
- if ($firstLine) {
- $prepend = '*=' . $this->getCharset() . "'" . $this->getLanguage() .
- "'";
- }
- }
-
- return $prepend . $value;
- }
-}