xref: /template/strap/ComboStrap/PageUrlType.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1c3437056SNickeau<?php
2c3437056SNickeau
3c3437056SNickeau
4c3437056SNickeaunamespace ComboStrap;
5c3437056SNickeau
6c3437056SNickeau
7*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata;
8*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataText;
9*04fd306cSNickeau
10c3437056SNickeauclass PageUrlType extends MetadataText
11c3437056SNickeau{
12c3437056SNickeau
13c3437056SNickeau    public const CONF_CANONICAL_URL_TYPE = "pageUrlType";
14c3437056SNickeau    public const CONF_CANONICAL_URL_TYPE_DEFAULT = self::CONF_VALUE_PAGE_PATH;
15c3437056SNickeau    public const CONF_VALUE_PAGE_PATH = "page path";
16c3437056SNickeau    public const CONF_VALUE_SLUG = "slug";
17c3437056SNickeau    public const CONF_VALUE_CANONICAL_PATH = "canonical path";
18c3437056SNickeau    public const CONF_VALUE_HIERARCHICAL_SLUG = "hierarchical slug";
19c3437056SNickeau    public const CONF_VALUE_PERMANENT_PAGE_PATH = "permanent page path";
20c3437056SNickeau    public const CONF_VALUE_PERMANENT_CANONICAL_PATH = "permanent canonical path";
21c3437056SNickeau    public const CONF_VALUE_HOMED_SLUG = "homed slug";
22c3437056SNickeau    public const CONF_VALUES = [
23c3437056SNickeau        PageUrlType::CONF_VALUE_PAGE_PATH,
24c3437056SNickeau        PageUrlType::CONF_VALUE_PERMANENT_PAGE_PATH,
25c3437056SNickeau        PageUrlType::CONF_VALUE_CANONICAL_PATH,
26c3437056SNickeau        PageUrlType::CONF_VALUE_PERMANENT_CANONICAL_PATH,
27c3437056SNickeau        PageUrlType::CONF_VALUE_SLUG,
28c3437056SNickeau        PageUrlType::CONF_VALUE_HOMED_SLUG,
29c3437056SNickeau        PageUrlType::CONF_VALUE_HIERARCHICAL_SLUG
30c3437056SNickeau    ];
31c3437056SNickeau
32c3437056SNickeau
33c3437056SNickeau    public static function createFromPage(ResourceCombo $page): PageUrlType
34c3437056SNickeau    {
35c3437056SNickeau        return (new PageUrlType())
36c3437056SNickeau            ->setResource($page);
37c3437056SNickeau    }
38c3437056SNickeau
39*04fd306cSNickeau    public function getValue(): string
40c3437056SNickeau    {
41c3437056SNickeau
42c3437056SNickeau        $resourceCombo = $this->getResource();
43c3437056SNickeau        if (!$resourceCombo->exists()) {
44c3437056SNickeau            return PageUrlType::CONF_VALUE_PAGE_PATH;
45c3437056SNickeau        }
46*04fd306cSNickeau        if (!($resourceCombo instanceof MarkupPath)) {
47c3437056SNickeau            LogUtility::msg("The page type is only for page");
48c3437056SNickeau            return PageUrlType::CONF_VALUE_PAGE_PATH;
49c3437056SNickeau        }
50c3437056SNickeau
51c3437056SNickeau        $confCanonicalType = $this->getName();
52c3437056SNickeau        $confDefaultValue = $this->getDefaultValue();
53*04fd306cSNickeau        $urlType = SiteConfig::getConfValue($confCanonicalType, $confDefaultValue);
54c3437056SNickeau        if (!in_array($urlType, self::CONF_VALUES)) {
55c3437056SNickeau            LogUtility::msg("The canonical configuration ($confCanonicalType) value ($urlType) is unknown and was set to the default one", LogUtility::LVL_MSG_ERROR, PageUrlPath::PROPERTY_NAME);
56c3437056SNickeau            return $confDefaultValue;
57c3437056SNickeau        }
58c3437056SNickeau
59c3437056SNickeau        return $urlType;
60c3437056SNickeau
61c3437056SNickeau
62c3437056SNickeau    }
63c3437056SNickeau
64c3437056SNickeau
65*04fd306cSNickeau    static public function getTab(): string
66c3437056SNickeau    {
67c3437056SNickeau        return MetaManagerForm::TAB_PAGE_VALUE;
68c3437056SNickeau    }
69c3437056SNickeau
70*04fd306cSNickeau    static public function getDescription(): string
71c3437056SNickeau    {
72c3437056SNickeau        return "The type of Url for pages";
73c3437056SNickeau    }
74c3437056SNickeau
75*04fd306cSNickeau    static public function getLabel(): string
76c3437056SNickeau    {
77c3437056SNickeau        return "Page Url";
78c3437056SNickeau    }
79c3437056SNickeau
80c3437056SNickeau    static public function getName(): string
81c3437056SNickeau    {
82c3437056SNickeau        return PageUrlType::CONF_CANONICAL_URL_TYPE;
83c3437056SNickeau    }
84c3437056SNickeau
85*04fd306cSNickeau    static public function getPersistenceType(): string
86c3437056SNickeau    {
87c3437056SNickeau        return Metadata::PERSISTENT_METADATA;
88c3437056SNickeau    }
89c3437056SNickeau
90*04fd306cSNickeau    static public function isMutable(): bool
91c3437056SNickeau    {
92c3437056SNickeau        return true;
93c3437056SNickeau    }
94c3437056SNickeau
95*04fd306cSNickeau    /**
96*04fd306cSNickeau     * @return string
97*04fd306cSNickeau     */
98c3437056SNickeau    public function getDefaultValue(): string
99c3437056SNickeau    {
100c3437056SNickeau        return PageUrlType::CONF_CANONICAL_URL_TYPE_DEFAULT;
101c3437056SNickeau    }
102c3437056SNickeau}
103