1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau 7*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 8*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataText; 9c3437056SNickeauuse DateTime; 10c3437056SNickeau 11c3437056SNickeau/** 12c3437056SNickeau 13c3437056SNickeau * @package ComboStrap 14c3437056SNickeau * Represents the wiki id of a resource 15c3437056SNickeau */ 16c3437056SNickeauclass DokuwikiId extends MetadataText 17c3437056SNickeau{ 18c3437056SNickeau 19c3437056SNickeau 20c3437056SNickeau public const DOKUWIKI_ID_ATTRIBUTE = "id"; 21c3437056SNickeau 22c3437056SNickeau public static function createForPage(ResourceCombo $page): DokuwikiId 23c3437056SNickeau { 24c3437056SNickeau return (new DokuwikiId()) 25c3437056SNickeau ->setResource($page); 26c3437056SNickeau } 27c3437056SNickeau 28c3437056SNickeau public function getDefaultValue(): ?DateTime 29c3437056SNickeau { 30c3437056SNickeau return null; 31c3437056SNickeau } 32c3437056SNickeau 33*04fd306cSNickeau public function getValue(): string 34c3437056SNickeau { 35*04fd306cSNickeau $path = $this->getResource()->getPathObject(); 36*04fd306cSNickeau if($path instanceof WikiPath){ 37*04fd306cSNickeau return $path->getWikiId(); 38*04fd306cSNickeau } 39*04fd306cSNickeau if($path instanceof LocalPath){ 40*04fd306cSNickeau try { 41*04fd306cSNickeau return $path->toWikiPath()->getWikiId(); 42*04fd306cSNickeau } catch (ExceptionBadArgument $e) { 43*04fd306cSNickeau throw new ExceptionNotFound($e->getMessage()); 44*04fd306cSNickeau } 45*04fd306cSNickeau } 46*04fd306cSNickeau throw new ExceptionNotFound("Unknown path, the dokuwiki id cannot be determined"); 47*04fd306cSNickeau 48c3437056SNickeau } 49c3437056SNickeau 50c3437056SNickeau 51c3437056SNickeau public static function getName(): string 52c3437056SNickeau { 53c3437056SNickeau return self::DOKUWIKI_ID_ATTRIBUTE; 54c3437056SNickeau } 55c3437056SNickeau 56c3437056SNickeau 57*04fd306cSNickeau public static function getPersistenceType(): string 58c3437056SNickeau { 59c3437056SNickeau return Metadata::DERIVED_METADATA; 60c3437056SNickeau } 61c3437056SNickeau 62c3437056SNickeau 63*04fd306cSNickeau public static function getTab(): ?string 64c3437056SNickeau { 65c3437056SNickeau return null; 66c3437056SNickeau } 67c3437056SNickeau 68*04fd306cSNickeau public static function getDescription(): string 69c3437056SNickeau { 70c3437056SNickeau return "The id of a resource represents the path of a resource from its root directory"; 71c3437056SNickeau } 72c3437056SNickeau 73*04fd306cSNickeau public static function getLabel(): string 74c3437056SNickeau { 75c3437056SNickeau return "Wiki Id"; 76c3437056SNickeau } 77c3437056SNickeau 78*04fd306cSNickeau public static function isMutable(): bool 79c3437056SNickeau { 80c3437056SNickeau return false; 81c3437056SNickeau } 82*04fd306cSNickeau 83*04fd306cSNickeau 84c3437056SNickeau} 85