1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau 7*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 8*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataTabular; 9*04fd306cSNickeau 10c3437056SNickeauclass References extends MetadataTabular 11c3437056SNickeau{ 12c3437056SNickeau 13c3437056SNickeau 14*04fd306cSNickeau const PROPERTY_NAME = "references"; 15*04fd306cSNickeau 16*04fd306cSNickeau public static function createFromResource(MarkupPath $page) 17c3437056SNickeau { 18c3437056SNickeau return (new References()) 19c3437056SNickeau ->setResource($page); 20c3437056SNickeau } 21c3437056SNickeau 22*04fd306cSNickeau static public function getDescription(): string 23c3437056SNickeau { 24c3437056SNickeau return "The link of the page that references another resources"; 25c3437056SNickeau } 26c3437056SNickeau 27*04fd306cSNickeau static public function getLabel(): string 28c3437056SNickeau { 29c3437056SNickeau return "References"; 30c3437056SNickeau } 31c3437056SNickeau 32c3437056SNickeau public static function getName(): string 33c3437056SNickeau { 34*04fd306cSNickeau return self::PROPERTY_NAME; 35c3437056SNickeau } 36c3437056SNickeau 37*04fd306cSNickeau static public function getPersistenceType(): string 38c3437056SNickeau { 39c3437056SNickeau return Metadata::DERIVED_METADATA; 40c3437056SNickeau } 41c3437056SNickeau 42*04fd306cSNickeau static public function isMutable(): bool 43c3437056SNickeau { 44c3437056SNickeau return false; 45c3437056SNickeau } 46c3437056SNickeau 47*04fd306cSNickeau public function getDefaultValue(): array 48c3437056SNickeau { 49*04fd306cSNickeau return []; 50c3437056SNickeau } 51c3437056SNickeau 52c3437056SNickeau public function getUidClass(): ?string 53c3437056SNickeau { 54c3437056SNickeau return Reference::class; 55c3437056SNickeau } 56c3437056SNickeau 57*04fd306cSNickeau 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 } 69*04fd306cSNickeau if ($metadataStore->isDokuWikiStore()) { 70c3437056SNickeau 71*04fd306cSNickeau $relation = $metadataStore->getFromName("relation"); 72*04fd306cSNickeau if (is_array($relation)) { 73c3437056SNickeau 74c3437056SNickeau $this->wasBuild = true; 75c3437056SNickeau $referencesArray = $relation["references"]; 76c3437056SNickeau if ($referencesArray !== null) { 77*04fd306cSNickeau $referencesArray = array_keys($referencesArray); 78c3437056SNickeau } 79*04fd306cSNickeau $this->setFromStoreValueWithoutException($referencesArray); 80*04fd306cSNickeau 81c3437056SNickeau return $this; 82c3437056SNickeau 83c3437056SNickeau } 84c3437056SNickeau 85c3437056SNickeau } 86c3437056SNickeau 87c3437056SNickeau return parent::buildFromReadStore(); 88c3437056SNickeau } 89c3437056SNickeau 90c3437056SNickeau 91c3437056SNickeau} 92