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