Files
provider_jmapc/lib/Providers/Mail/MessagePart.php
2026-02-10 20:33:10 -05:00

80 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderJmapc\Providers\Mail;
use KTXF\Mail\Object\MessagePartMutableAbstract;
class MessagePart extends MessagePartMutableAbstract {
/**
* convert jmap parameters collection to message object
*
* @since 1.0.0
*
* @param array $parameters jmap parameters collection
* @param bool $amend flag merged or replaced parameters
*/
public function fromJmap(array $parameters, bool $amend = false): self {
if ($amend) {
// merge parameters with existing ones
$this->data = array_merge($this->data, $parameters);
} else {
// replace parameters store
$this->data = $parameters;
}
// determine if parameters contains subparts
// if subParts exist convert them to a MessagePart object
// and remove subParts parameter
if (is_array($this->data['subParts'])) {
foreach ($this->data['subParts'] as $key => $entry) {
if (is_object($entry)) {
$entry = get_object_vars($entry);
}
$this->parts[$key] = (new MessagePart($parameters))->fromJmap($entry);
}
unset($this->data['subParts']);
}
return $this;
}
/**
* convert message object to jmap parameters array
*
* @since 1.0.0
*
* @return array collection of all message parameters
*/
public function toJmap(): array {
// copy parameter value
$parameters = $this->data;
// determine if this MessagePart has any sub MessageParts
// if sub MessageParts exist retrieve sub MessagePart parameters
// and add them to the subParts parameters, otherwise set the subParts parameter to nothing
if (count($this->parts) > 0) {
$parameters['subParts'] = [];
foreach ($this->parts as $entry) {
if ($entry instanceof MessagePart) {
$parameters['subParts'][] = $entry->toJmap();
}
}
} else {
$parameters['subParts'] = null;
}
return $parameters;
}
}