* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\People\Entity; use DateTimeInterface; use KTXF\Json\JsonSerializableObject; use KTXF\People\Entity\Property\AffiliationCollection; use KTXF\People\Entity\Property\AnniversaryCollection; use KTXF\People\Entity\Property\CryptoCollection; use KTXF\People\Entity\Property\EmailCollection; use KTXF\People\Entity\Property\LanguageCollection; use KTXF\People\Entity\Property\MediaCollection; use KTXF\People\Entity\Property\NameComplexObject; use KTXF\People\Entity\Property\NoteCollection; use KTXF\People\Entity\Property\PhoneCollection; use KTXF\People\Entity\Property\PhysicalLocationCollection; use KTXF\People\Entity\Property\TagCollection; use KTXF\People\Entity\Property\TitleCollection; use KTXF\People\Entity\Property\VirtualLocationCollection; class IndividualObject extends JsonSerializableObject { // Meta Information public string $type = 'individual'; public int $version = 1; public string|null $urid = null; public ?DateTimeInterface $created = null; public ?DateTimeInterface $modified = null; // Personal Information public string|null $label = null; public NameComplexObject $names; public TitleCollection $titles; public AnniversaryCollection $anniversaries; // Location Information public PhysicalLocationCollection $physicalLocations; // Communication Information public PhoneCollection $phones; public EmailCollection $emails; public VirtualLocationCollection $virtualLocations; // Media Information public MediaCollection $media; // Organizations Information public AffiliationCollection $organizations; // Organizational Information public TagCollection $tags; public NoteCollection $notes; // Localization Information public string|null $language = null; public LanguageCollection $languages; // Other Information public CryptoCollection $crypto; public function __construct() { $this->names = new NameComplexObject(); $this->anniversaries = new AnniversaryCollection(); $this->phones = new PhoneCollection(); $this->emails = new EmailCollection(); $this->physicalLocations = new PhysicalLocationCollection(); $this->organizations = new AffiliationCollection(); $this->titles = new TitleCollection(); $this->tags = new TagCollection(); $this->notes = new NoteCollection(); $this->crypto = new CryptoCollection(); $this->virtualLocations = new VirtualLocationCollection(); $this->media = new MediaCollection(); } }