123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Mime\Header;
- use Symfony\Component\Mime\Address;
- use Symfony\Component\Mime\Exception\RfcComplianceException;
- /**
- * An ID MIME Header for something like Message-ID or Content-ID (one or more addresses).
- *
- * @author Chris Corbyn
- */
- final class IdentificationHeader extends AbstractHeader
- {
- private $ids = [];
- private $idsAsAddresses = [];
- /**
- * @param string|array $ids
- */
- public function __construct(string $name, $ids)
- {
- parent::__construct($name);
- $this->setId($ids);
- }
- /**
- * @param string|array $body a string ID or an array of IDs
- *
- * @throws RfcComplianceException
- */
- public function setBody($body)
- {
- $this->setId($body);
- }
- public function getBody(): array
- {
- return $this->getIds();
- }
- /**
- * Set the ID used in the value of this header.
- *
- * @param string|array $id
- *
- * @throws RfcComplianceException
- */
- public function setId($id)
- {
- $this->setIds(\is_array($id) ? $id : [$id]);
- }
- /**
- * Get the ID used in the value of this Header.
- *
- * If multiple IDs are set only the first is returned.
- */
- public function getId(): ?string
- {
- return $this->ids[0] ?? null;
- }
- /**
- * Set a collection of IDs to use in the value of this Header.
- *
- * @param string[] $ids
- *
- * @throws RfcComplianceException
- */
- public function setIds(array $ids)
- {
- $this->ids = [];
- $this->idsAsAddresses = [];
- foreach ($ids as $id) {
- $this->idsAsAddresses[] = new Address($id);
- $this->ids[] = $id;
- }
- }
- /**
- * Get the list of IDs used in this Header.
- *
- * @return string[]
- */
- public function getIds(): array
- {
- return $this->ids;
- }
- public function getBodyAsString(): string
- {
- $addrs = [];
- foreach ($this->idsAsAddresses as $address) {
- $addrs[] = '<'.$address->toString().'>';
- }
- return implode(' ', $addrs);
- }
- }
|