2
0
forked from Wavyzz/dolibarr

swiftmailer

This commit is contained in:
Frédéric FRANCE
2018-01-21 15:55:56 +01:00
parent 3a8ceb130f
commit a34b99f3ec
191 changed files with 5164 additions and 4074 deletions

View File

@@ -13,37 +13,42 @@
*
* @author Chris Corbyn
*/
class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
class Swift_Mime_SimpleHeaderSet implements Swift_Mime_CharsetObserver
{
/** HeaderFactory */
private $_factory;
private $factory;
/** Collection of set Headers */
private $_headers = array();
private $headers = array();
/** Field ordering details */
private $_order = array();
private $order = array();
/** List of fields which are required to be displayed */
private $_required = array();
private $required = array();
/** The charset used by Headers */
private $_charset;
private $charset;
/**
* Create a new SimpleHeaderSet with the given $factory.
*
* @param Swift_Mime_HeaderFactory $factory
* @param string $charset
* @param Swift_Mime_SimpleHeaderFactory $factory
* @param string $charset
*/
public function __construct(Swift_Mime_HeaderFactory $factory, $charset = null)
public function __construct(Swift_Mime_SimpleHeaderFactory $factory, $charset = null)
{
$this->_factory = $factory;
$this->factory = $factory;
if (isset($charset)) {
$this->setCharset($charset);
}
}
public function newInstance()
{
return new self($this->factory);
}
/**
* Set the charset used by these headers.
*
@@ -51,9 +56,9 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function setCharset($charset)
{
$this->_charset = $charset;
$this->_factory->charsetChanged($charset);
$this->_notifyHeadersOfCharset($charset);
$this->charset = $charset;
$this->factory->charsetChanged($charset);
$this->notifyHeadersOfCharset($charset);
}
/**
@@ -64,20 +69,20 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function addMailboxHeader($name, $addresses = null)
{
$this->_storeHeader($name,
$this->_factory->createMailboxHeader($name, $addresses));
$this->storeHeader($name,
$this->factory->createMailboxHeader($name, $addresses));
}
/**
* Add a new Date header using $timestamp (UNIX time).
* Add a new Date header using $dateTime.
*
* @param string $name
* @param int $timestamp
* @param string $name
* @param DateTimeInterface $dateTime
*/
public function addDateHeader($name, $timestamp = null)
public function addDateHeader($name, DateTimeInterface $dateTime = null)
{
$this->_storeHeader($name,
$this->_factory->createDateHeader($name, $timestamp));
$this->storeHeader($name,
$this->factory->createDateHeader($name, $dateTime));
}
/**
@@ -88,8 +93,8 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function addTextHeader($name, $value = null)
{
$this->_storeHeader($name,
$this->_factory->createTextHeader($name, $value));
$this->storeHeader($name,
$this->factory->createTextHeader($name, $value));
}
/**
@@ -101,7 +106,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function addParameterizedHeader($name, $value = null, $params = array())
{
$this->_storeHeader($name, $this->_factory->createParameterizedHeader($name, $value, $params));
$this->storeHeader($name, $this->factory->createParameterizedHeader($name, $value, $params));
}
/**
@@ -112,7 +117,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function addIdHeader($name, $ids = null)
{
$this->_storeHeader($name, $this->_factory->createIdHeader($name, $ids));
$this->storeHeader($name, $this->factory->createIdHeader($name, $ids));
}
/**
@@ -123,7 +128,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function addPathHeader($name, $path = null)
{
$this->_storeHeader($name, $this->_factory->createPathHeader($name, $path));
$this->storeHeader($name, $this->factory->createPathHeader($name, $path));
}
/**
@@ -140,7 +145,16 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
{
$lowerName = strtolower($name);
return array_key_exists($lowerName, $this->_headers) && array_key_exists($index, $this->_headers[$lowerName]);
if (!array_key_exists($lowerName, $this->headers)) {
return false;
}
if (func_num_args() < 2) {
// index was not specified, so we only need to check that there is at least one header value set
return (bool) count($this->headers[$lowerName]);
}
return array_key_exists($index, $this->headers[$lowerName]);
}
/**
@@ -157,7 +171,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function set(Swift_Mime_Header $header, $index = 0)
{
$this->_storeHeader($header->getFieldName(), $header, $index);
$this->storeHeader($header->getFieldName(), $header, $index);
}
/**
@@ -173,10 +187,18 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function get($name, $index = 0)
{
if ($this->has($name, $index)) {
$lowerName = strtolower($name);
$name = strtolower($name);
return $this->_headers[$lowerName][$index];
if (func_num_args() < 2) {
if ($this->has($name)) {
$values = array_values($this->headers[$name]);
return array_shift($values);
}
} else {
if ($this->has($name, $index)) {
return $this->headers[$name][$index];
}
}
}
@@ -191,7 +213,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
{
if (!isset($name)) {
$headers = array();
foreach ($this->_headers as $collection) {
foreach ($this->headers as $collection) {
$headers = array_merge($headers, $collection);
}
@@ -199,11 +221,11 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
}
$lowerName = strtolower($name);
if (!array_key_exists($lowerName, $this->_headers)) {
if (!array_key_exists($lowerName, $this->headers)) {
return array();
}
return $this->_headers[$lowerName];
return $this->headers[$lowerName];
}
/**
@@ -213,9 +235,9 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function listAll()
{
$headers = $this->_headers;
if ($this->_canSort()) {
uksort($headers, array($this, '_sortHeaders'));
$headers = $this->headers;
if ($this->canSort()) {
uksort($headers, array($this, 'sortHeaders'));
}
return array_keys($headers);
@@ -232,7 +254,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
public function remove($name, $index = 0)
{
$lowerName = strtolower($name);
unset($this->_headers[$lowerName][$index]);
unset($this->headers[$lowerName][$index]);
}
/**
@@ -243,17 +265,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
public function removeAll($name)
{
$lowerName = strtolower($name);
unset($this->_headers[$lowerName]);
}
/**
* Create a new instance of this HeaderSet.
*
* @return Swift_Mime_HeaderSet
*/
public function newInstance()
{
return new self($this->_factory);
unset($this->headers[$lowerName]);
}
/**
@@ -265,7 +277,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function defineOrdering(array $sequence)
{
$this->_order = array_flip(array_map('strtolower', $sequence));
$this->order = array_flip(array_map('strtolower', $sequence));
}
/**
@@ -277,7 +289,7 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function setAlwaysDisplayed(array $names)
{
$this->_required = array_flip(array_map('strtolower', $names));
$this->required = array_flip(array_map('strtolower', $names));
}
/**
@@ -298,13 +310,13 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
public function toString()
{
$string = '';
$headers = $this->_headers;
if ($this->_canSort()) {
uksort($headers, array($this, '_sortHeaders'));
$headers = $this->headers;
if ($this->canSort()) {
uksort($headers, array($this, 'sortHeaders'));
}
foreach ($headers as $collection) {
foreach ($collection as $header) {
if ($this->_isDisplayed($header) || $header->getFieldBody() != '') {
if ($this->isDisplayed($header) || $header->getFieldBody() != '') {
$string .= $header->toString();
}
}
@@ -326,31 +338,31 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
}
/** Save a Header to the internal collection */
private function _storeHeader($name, Swift_Mime_Header $header, $offset = null)
private function storeHeader($name, Swift_Mime_Header $header, $offset = null)
{
if (!isset($this->_headers[strtolower($name)])) {
$this->_headers[strtolower($name)] = array();
if (!isset($this->headers[strtolower($name)])) {
$this->headers[strtolower($name)] = array();
}
if (!isset($offset)) {
$this->_headers[strtolower($name)][] = $header;
$this->headers[strtolower($name)][] = $header;
} else {
$this->_headers[strtolower($name)][$offset] = $header;
$this->headers[strtolower($name)][$offset] = $header;
}
}
/** Test if the headers can be sorted */
private function _canSort()
private function canSort()
{
return count($this->_order) > 0;
return count($this->order) > 0;
}
/** uksort() algorithm for Header ordering */
private function _sortHeaders($a, $b)
private function sortHeaders($a, $b)
{
$lowerA = strtolower($a);
$lowerB = strtolower($b);
$aPos = array_key_exists($lowerA, $this->_order) ? $this->_order[$lowerA] : -1;
$bPos = array_key_exists($lowerB, $this->_order) ? $this->_order[$lowerB] : -1;
$aPos = array_key_exists($lowerA, $this->order) ? $this->order[$lowerA] : -1;
$bPos = array_key_exists($lowerB, $this->order) ? $this->order[$lowerB] : -1;
if (-1 === $aPos && -1 === $bPos) {
// just be sure to be determinist here
@@ -367,15 +379,15 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
}
/** Test if the given Header is always displayed */
private function _isDisplayed(Swift_Mime_Header $header)
private function isDisplayed(Swift_Mime_Header $header)
{
return array_key_exists(strtolower($header->getFieldName()), $this->_required);
return array_key_exists(strtolower($header->getFieldName()), $this->required);
}
/** Notify all Headers of the new charset */
private function _notifyHeadersOfCharset($charset)
private function notifyHeadersOfCharset($charset)
{
foreach ($this->_headers as $headerGroup) {
foreach ($this->headers as $headerGroup) {
foreach ($headerGroup as $header) {
$header->setCharset($charset);
}
@@ -387,10 +399,10 @@ class Swift_Mime_SimpleHeaderSet implements Swift_Mime_HeaderSet
*/
public function __clone()
{
$this->_factory = clone $this->_factory;
foreach ($this->_headers as $groupKey => $headerGroup) {
$this->factory = clone $this->factory;
foreach ($this->headers as $groupKey => $headerGroup) {
foreach ($headerGroup as $key => $header) {
$this->_headers[$groupKey][$key] = clone $header;
$this->headers[$groupKey][$key] = clone $header;
}
}
}