1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau 704fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 804fd306cSNickeauuse ComboStrap\Meta\Api\MetadataTabular; 904fd306cSNickeau 10c3437056SNickeauclass References extends MetadataTabular 11c3437056SNickeau{ 12c3437056SNickeau 13c3437056SNickeau 1404fd306cSNickeau const PROPERTY_NAME = "references"; 1504fd306cSNickeau 1604fd306cSNickeau public static function createFromResource(MarkupPath $page) 17c3437056SNickeau { 18c3437056SNickeau return (new References()) 19c3437056SNickeau ->setResource($page); 20c3437056SNickeau } 21c3437056SNickeau 2204fd306cSNickeau static public function getDescription(): string 23c3437056SNickeau { 24c3437056SNickeau return "The link of the page that references another resources"; 25c3437056SNickeau } 26c3437056SNickeau 2704fd306cSNickeau static public function getLabel(): string 28c3437056SNickeau { 29c3437056SNickeau return "References"; 30c3437056SNickeau } 31c3437056SNickeau 32c3437056SNickeau public static function getName(): string 33c3437056SNickeau { 3404fd306cSNickeau return self::PROPERTY_NAME; 35c3437056SNickeau } 36c3437056SNickeau 3704fd306cSNickeau static public function getPersistenceType(): string 38c3437056SNickeau { 39c3437056SNickeau return Metadata::DERIVED_METADATA; 40c3437056SNickeau } 41c3437056SNickeau 4204fd306cSNickeau static public function isMutable(): bool 43c3437056SNickeau { 44c3437056SNickeau return false; 45c3437056SNickeau } 46c3437056SNickeau 4704fd306cSNickeau public function getDefaultValue(): array 48c3437056SNickeau { 4904fd306cSNickeau return []; 50c3437056SNickeau } 51c3437056SNickeau 52c3437056SNickeau public function getUidClass(): ?string 53c3437056SNickeau { 54c3437056SNickeau return Reference::class; 55c3437056SNickeau } 56c3437056SNickeau 5704fd306cSNickeau static public function getChildrenClass(): array 58c3437056SNickeau { 59c3437056SNickeau return [Reference::class]; 60c3437056SNickeau } 61c3437056SNickeau 62c3437056SNickeau public function buildFromReadStore(): References 63c3437056SNickeau { 64c3437056SNickeau $metadataStore = $this->getReadStore(); 65c3437056SNickeau if ($metadataStore === null) { 66c3437056SNickeau LogUtility::msg("The metadata store is unknown. You need to define a resource or a store to build from it"); 67c3437056SNickeau return $this; 68c3437056SNickeau } 6904fd306cSNickeau if ($metadataStore->isDokuWikiStore()) { 70c3437056SNickeau 7104fd306cSNickeau $relation = $metadataStore->getFromName("relation"); 7204fd306cSNickeau if (is_array($relation)) { 73c3437056SNickeau 74c3437056SNickeau $this->wasBuild = true; 75*70bbd7f1Sgerardnico $referencesArray = $relation["references"] ?? null; 76c3437056SNickeau if ($referencesArray !== null) { 7704fd306cSNickeau $referencesArray = array_keys($referencesArray); 78c3437056SNickeau } 7904fd306cSNickeau $this->setFromStoreValueWithoutException($referencesArray); 8004fd306cSNickeau 81c3437056SNickeau return $this; 82c3437056SNickeau 83c3437056SNickeau } 84c3437056SNickeau 85c3437056SNickeau } 86c3437056SNickeau 87c3437056SNickeau return parent::buildFromReadStore(); 88c3437056SNickeau } 89c3437056SNickeau 90c3437056SNickeau 91c3437056SNickeau} 92