Open Monograph Press  3.3.0
RelatedPart.php
1 <?php
2 
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11 
13 
16 
21 {
22  private $mainPart;
23 
24  public function __construct(AbstractPart $mainPart, AbstractPart $part, AbstractPart ...$parts)
25  {
26  $this->mainPart = $mainPart;
27  $this->prepareParts($part, ...$parts);
28 
29  parent::__construct($part, ...$parts);
30  }
31 
32  public function getParts(): array
33  {
34  return array_merge([$this->mainPart], parent::getParts());
35  }
36 
37  public function getMediaSubtype(): string
38  {
39  return 'related';
40  }
41 
42  private function generateContentId(): string
43  {
44  return bin2hex(random_bytes(16)).'@symfony';
45  }
46 
47  private function prepareParts(AbstractPart ...$parts): void
48  {
49  foreach ($parts as $part) {
50  if (!$part->getHeaders()->has('Content-ID')) {
51  $part->getHeaders()->setHeaderBody('Id', 'Content-ID', $this->generateContentId());
52  }
53  }
54  }
55 }
Symfony\Component\Mime\Part\Multipart
Definition: AlternativePart.php:12
Symfony\Component\Mime\Part\Multipart\RelatedPart\getMediaSubtype
getMediaSubtype()
Definition: RelatedPart.php:37
Symfony\Component\Mime\Part\AbstractMultipartPart
Definition: AbstractMultipartPart.php:19
Symfony\Component\Mime\Part\AbstractPart
Definition: AbstractPart.php:19
Symfony\Component\Mime\Part\Multipart\RelatedPart
Definition: RelatedPart.php:20
Symfony\Component\Mime\Part\Multipart\RelatedPart\__construct
__construct(AbstractPart $mainPart, AbstractPart $part, AbstractPart ... $parts)
Definition: RelatedPart.php:24
Symfony\Component\Mime\Part\Multipart\RelatedPart\getParts
getParts()
Definition: RelatedPart.php:32