refactor: documents interfaces

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-07-09 19:31:09 -04:00
parent 93d32d2a9f
commit 29d4c9130f
30 changed files with 479 additions and 376 deletions
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXF\Documents\Collection;
use KTXF\Resource\Provider\Node\NodePropertiesBaseAbstract;
/**
* Abstract Collection Properties Base Class
*
* Provides common implementation for collection properties
*
* @since 2025.05.01
*/
abstract class CollectionPropertiesBaseAbstract extends NodePropertiesBaseAbstract implements CollectionPropertiesBaseInterface {
public const JSON_TYPE = CollectionPropertiesBaseInterface::JSON_TYPE;
public function content(): CollectionContent {
$content = $this->data[self::PROPERTY_CONTENTS] ?? null;
if ($content instanceof CollectionContent) {
return $content;
}
if (is_string($content)) {
return CollectionContent::tryFrom($content) ?? CollectionContent::File;
}
return CollectionContent::File;
}
public function getLabel(): string {
return $this->data[self::PROPERTY_LABEL] ?? '';
}
}