generated from Nodarx/template
7df98223f8
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
namespace KTXM\ProviderImap\Providers;
|
|
|
|
use KTXF\Mail\Object\MessagePartMutableAbstract;
|
|
use KTXM\ProviderImap\Client\MessagePart as ImapMessagePart;
|
|
|
|
/**
|
|
* Mail Message Part Implementation
|
|
*/
|
|
class MessagePart extends MessagePartMutableAbstract {
|
|
|
|
/**
|
|
* @param array<string,mixed> $data
|
|
*/
|
|
private function hydrateArray(array $data): static {
|
|
$this->data = $data;
|
|
|
|
if (isset($this->data['subParts']) && is_array($this->data['subParts'])) {
|
|
foreach ($this->data['subParts'] as $entry) {
|
|
if (is_array($entry)) {
|
|
$this->parts[] = (new self())->hydrateArray($entry);
|
|
}
|
|
}
|
|
unset($this->data['subParts']);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Convert gricob BodyStructure part to message part object
|
|
*
|
|
* @param Part $part gricob BodyStructure Part (SinglePart or MultiPart)
|
|
* @param string $partId numeric part identifier (e.g. "1", "1.1", "2")
|
|
*/
|
|
public function fromImap(ImapMessagePart $part, string $partId = '1'): static {
|
|
$data = $part->toArray();
|
|
$data['partId'] = $partId;
|
|
$data['blobId'] = $data['blobId'] ?? $partId;
|
|
|
|
return $this->hydrateArray($data);
|
|
}
|
|
|
|
}
|