* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\People\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 { /** * @inheritDoc */ public function content(): array { $content = $this->data[self::PROPERTY_CONTENT] ?? null; if (is_array($content)) { return array_filter(array_map(function ($item) { return $item instanceof CollectionContent ? $item : CollectionContent::tryFrom($item); }, $content)); } else { return []; } } /** * @inheritDoc */ public function getLabel(): string { return $this->data[self::PROPERTY_LABEL] ?? ''; } /** * @inheritDoc */ public function getDescription(): ?string { return $this->data[self::PROPERTY_DESCRIPTION] ?? null; } /** * @inheritDoc */ public function getRank(): ?int { return $this->data[self::PROPERTY_RANK] ?? null; } /** * @inheritDoc */ public function getVisibility(): ?bool { return $this->data[self::PROPERTY_VISIBILITY] ?? null; } /** * @inheritDoc */ public function getColor(): ?string { return $this->data[self::PROPERTY_COLOR] ?? null; } }