<?php
namespace ZBateson\MailMimeParser\Header\Part;
use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel;
use ZBateson\MailMimeParser\Header\IHeaderPart;
use ZBateson\MbWrapper\MbWrapper;
class AddressGroupPart extends NameValuePart
{
protected array $addresses;
public function __construct(
LoggerInterface $logger,
MbWrapper $charsetConverter,
array $nameParts,
array $addressesAndGroupParts
) {
parent::__construct(
$logger,
$charsetConverter,
$nameParts,
$addressesAndGroupParts
);
$this->addresses = \array_merge(...\array_map(
fn ($p) => ($p instanceof AddressGroupPart) ? $p->getAddresses() : [$p],
$addressesAndGroupParts
));
$this->value = $this->name;
}
public function getAddresses() : array
{
return $this->addresses;
}
public function getAddress(int $index) : ?AddressPart
{
if (!isset($this->addresses[$index])) {
return null;
}
return $this->addresses[$index];
}
protected function validate() : void
{
if (\mb_strlen($this->name) === 0) {
$this->addError('Address group doesn\'t have a name', LogLevel::ERROR);
}
if (empty($this->addresses)) {
$this->addError('Address group doesn\'t have any email addresses defined in it', LogLevel::NOTICE);
}
}
}