* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Mail\Collection; use KTXF\Resource\Provider\Node\NodePropertiesBaseAbstract; /** * Abstract Mail Collection Properties Base Class * * Provides common implementation for mail collection properties * * @since 2025.05.01 */ abstract class CollectionPropertiesBaseAbstract extends NodePropertiesBaseAbstract implements CollectionPropertiesBaseInterface { public const JSON_TYPE = CollectionPropertiesBaseInterface::JSON_TYPE; /** * @inheritDoc */ public function total(): int { return $this->data['total'] ?? 0; } /** * @inheritDoc */ public function unread(): int { return $this->data['unread'] ?? 0; } /** * @inheritDoc */ public function getLabel(): string { return $this->data['label'] ?? ''; } /** * @inheritDoc */ public function getRole(): CollectionRoles { return isset($this->data['role']) ? ($this->data['role'] instanceof CollectionRoles ? $this->data['role'] : CollectionRoles::from($this->data['role'])) : CollectionRoles::Custom; } /** * @inheritDoc */ public function getRank(): int { return $this->data['rank'] ?? 0; } /** * @inheritDoc */ public function getSubscription(): bool { return $this->data['subscribed'] ?? false; } }