Spaces:
No application file
No application file
File size: 1,806 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<?php
namespace Mautic\EmailBundle\MonitoredEmail;
class Message
{
public $id;
public $date;
public $subject;
public $fromName;
public $fromAddress;
public $to = [];
public $toString;
public $cc = [];
public $replyTo = [];
public $inReplyTo = false;
public $returnPath = false;
public $references = [];
public string $textPlain = '';
public $textHtml;
public string $dsnReport = '';
public string $dsnMessage = '';
public $fblReport;
public $fblMessage;
public $xHeaders = [];
/**
* @var Attachment[]
*/
protected $attachments = [];
public function addAttachment(Attachment $attachment): void
{
$this->attachments[$attachment->id] = $attachment;
}
/**
* @return Attachment[]
*/
public function getAttachments()
{
return $this->attachments;
}
/**
* Get array of internal HTML links placeholders.
*
* @return array attachmentId => link placeholder
*/
public function getInternalLinksPlaceholders(): array
{
return preg_match_all('/=["\'](ci?d:([\w\.%*@-]+))["\']/i', $this->textHtml, $matches) ? array_combine($matches[2], $matches[1]) : [];
}
/**
* @return mixed
*/
public function replaceInternalLinks($baseUri)
{
$baseUri = rtrim($baseUri, '\\/').'/';
$fetchedHtml = $this->textHtml;
foreach ($this->getInternalLinksPlaceholders() as $attachmentId => $placeholder) {
if (isset($this->attachments[$attachmentId])) {
$fetchedHtml = str_replace($placeholder, $baseUri.basename($this->attachments[$attachmentId]->filePath), $fetchedHtml);
}
}
return $fetchedHtml;
}
}
|