* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Mail\Collection; use KTXF\Resource\Provider\Node\NodeMutableAbstract; use KTXF\Resource\Provider\Node\NodePropertiesMutableInterface; /** * Abstract Mail Collection Mutable Class * * Provides common implementation for mutable mail collections * * @since 2025.05.01 */ abstract class CollectionMutableAbstract extends NodeMutableAbstract implements CollectionMutableInterface { protected CollectionPropertiesMutableAbstract $properties; /** * @inheritDoc */ public function getProperties(): CollectionPropertiesMutableInterface { return $this->properties; } /** * @inheritDoc */ public function setProperties(NodePropertiesMutableInterface $value): static { if (!$value instanceof CollectionPropertiesMutableInterface) { throw new \InvalidArgumentException('Properties must implement CollectionPropertiesMutableInterface'); } // Copy all property values $this->properties->setLabel($value->getLabel()); $this->properties->setRole($value->getRole()); $this->properties->setRank($value->getRank()); $this->properties->setSubscription($value->getSubscription()); return $this; } }