69 lines
1.5 KiB
PHP
69 lines
1.5 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\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;
|
|
}
|
|
}
|