xref: /plugin/combo/ComboStrap/PagePath.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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