1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau 7*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 8*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataWikiPath; 9c3437056SNickeauuse DateTime; 10c3437056SNickeau 11c3437056SNickeau/** 12c3437056SNickeau 13c3437056SNickeau * @package ComboStrap 14c3437056SNickeau * Represents the wiki path of the page resource 15c3437056SNickeau */ 16c3437056SNickeauclass PagePath extends MetadataWikiPath 17c3437056SNickeau{ 18c3437056SNickeau 19c3437056SNickeau 20c3437056SNickeau 21c3437056SNickeau public const PROPERTY_NAME = "path"; 22c3437056SNickeau 23c3437056SNickeau 244cadd4f8SNickeau 25c3437056SNickeau public static function createForPage(ResourceCombo $page): CacheExpirationDate 26c3437056SNickeau { 27c3437056SNickeau return (new CacheExpirationDate()) 28c3437056SNickeau ->setResource($page); 29c3437056SNickeau } 30c3437056SNickeau 31c3437056SNickeau 32*04fd306cSNickeau /** 33*04fd306cSNickeau * We build to be able to send the value elsewhere 34*04fd306cSNickeau * @param $value 35*04fd306cSNickeau * @return Metadata 36*04fd306cSNickeau */ 37*04fd306cSNickeau public function setFromStoreValueWithoutException($value): Metadata 38c3437056SNickeau { 39*04fd306cSNickeau try { 40*04fd306cSNickeau $value = $this->getResource()->getPathObject()->toWikiPath(); 41*04fd306cSNickeau } catch (ExceptionCast $e) { 42*04fd306cSNickeau $message = "This error should not happen as this is a wiki path"; 43*04fd306cSNickeau LogUtility::internalError($message); 44*04fd306cSNickeau $value = null; 45*04fd306cSNickeau } 46*04fd306cSNickeau return parent::setFromStoreValueWithoutException($value); 47c3437056SNickeau } 48c3437056SNickeau 49c3437056SNickeau 50c3437056SNickeau static public function getName(): string 51c3437056SNickeau { 52c3437056SNickeau return self::PROPERTY_NAME; 53c3437056SNickeau } 54c3437056SNickeau 55c3437056SNickeau 56*04fd306cSNickeau public static function getPersistenceType(): string 57c3437056SNickeau { 58c3437056SNickeau return Metadata::DERIVED_METADATA; 59c3437056SNickeau } 60c3437056SNickeau 61c3437056SNickeau 62*04fd306cSNickeau public static function getTab(): string 63c3437056SNickeau { 64c3437056SNickeau return MetaManagerForm::TAB_REDIRECTION_VALUE; 65c3437056SNickeau } 66c3437056SNickeau 67*04fd306cSNickeau public static function getDescription(): string 68c3437056SNickeau { 69c3437056SNickeau return "The path of the page on the file system (in wiki format with the colon `:` as path separator)"; 70c3437056SNickeau } 71c3437056SNickeau 72*04fd306cSNickeau public static function getLabel(): string 73c3437056SNickeau { 74c3437056SNickeau return "Page Path"; 75c3437056SNickeau } 76c3437056SNickeau 77*04fd306cSNickeau public static function isMutable(): bool 78c3437056SNickeau { 79c3437056SNickeau return false; 80c3437056SNickeau } 81c3437056SNickeau 82*04fd306cSNickeau public static function getCanonical(): string 83c3437056SNickeau { 84c3437056SNickeau return self::PROPERTY_NAME; 85c3437056SNickeau } 86c3437056SNickeau 87c3437056SNickeau 88*04fd306cSNickeau public static function getDrive(): string 89*04fd306cSNickeau { 90*04fd306cSNickeau return WikiPath::MARKUP_DRIVE; 91*04fd306cSNickeau } 92*04fd306cSNickeau 93*04fd306cSNickeau public static function isOnForm(): bool 94*04fd306cSNickeau { 95*04fd306cSNickeau return true; 96*04fd306cSNickeau } 97c3437056SNickeau} 98