Files
server/shared/lib/Mail/Object/MessagePartBaseAbstract.php
T
Sebastian 869f2e4fb4
JS Unit Tests / test (pull_request) Successful in 23s
Build Test / build (pull_request) Successful in 26s
PHP Unit Tests / test (pull_request) Successful in 52s
refactor: message object properties
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
2026-06-16 13:12:30 -04:00

144 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXF\Mail\Object;
/**
* Abstract Message Part Base Class
*
* Provides common implementation for message parts (read-only)
*
* @since 2025.05.01
*/
abstract class MessagePartBaseAbstract implements MessagePartInterface {
/**
* Internal data storage
*/
protected array $data = [];
/**
* Sub-parts storage
* @var array<int,MessagePartInterface>
*/
protected array $parts = [];
/**
* Constructor
*
* @param array|null &$data Reference to data array
*/
public function __construct(array|null &$data = null) {
if ($data === null) {
$data = [];
}
$this->data = &$data;
}
/**
* @inheritDoc
*/
public function getBlobId(): ?string {
return $this->data['blobId'] ?? null;
}
/**
* @inheritDoc
*/
public function getId(): ?string {
return $this->data[MessagePartInterface::PROPERTY_PART_ID] ?? null;
}
/**
* @inheritDoc
*/
public function getSize(): ?int {
return $this->data[MessagePartInterface::PROPERTY_SIZE] ?? null;
}
/**
* @inheritDoc
*/
public function getType(): ?string {
return $this->data[MessagePartInterface::PROPERTY_TYPE] ?? null;
}
/**
* @inheritDoc
*/
public function getDisposition(): ?string {
return $this->data[MessagePartInterface::PROPERTY_DISPOSITION] ?? null;
}
/**
* @inheritDoc
*/
public function getName(): ?string {
return $this->data[MessagePartInterface::PROPERTY_NAME] ?? null;
}
/**
* @inheritDoc
*/
public function getCharset(): ?string {
return $this->data[MessagePartInterface::PROPERTY_CHARSET] ?? null;
}
/**
* @inheritDoc
*/
public function getContentId(): ?string {
return $this->data[MessagePartInterface::PROPERTY_CONTENT_ID] ?? null;
}
/**
* @inheritDoc
*/
public function getLanguage(): ?string {
return $this->data[MessagePartInterface::PROPERTY_LANGUAGE] ?? null;
}
/**
* @inheritDoc
*/
public function getLocation(): ?string {
return $this->data[MessagePartInterface::PROPERTY_LOCATION] ?? null;
}
/**
* @inheritDoc
*/
public function getContent(): ?string {
return $this->data[MessagePartInterface::PROPERTY_CONTENT] ?? null;
}
/**
* @inheritDoc
*/
public function getParts(): array {
return $this->parts;
}
/**
* @inheritDoc
*/
public function jsonSerialize(): array {
$result = $this->data;
if (!empty($this->parts)) {
$result[MessagePartInterface::PROPERTY_SUB_PARTS] = [];
foreach ($this->parts as $part) {
$result[MessagePartInterface::PROPERTY_SUB_PARTS][] = $part->jsonSerialize();
}
}
return $result;
}
}