1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau 4*04fd306cSNickeaunamespace ComboStrap\Meta\Field; 5*04fd306cSNickeau 6*04fd306cSNickeau 7*04fd306cSNickeau 8*04fd306cSNickeauuse ComboStrap\LogUtility; 9*04fd306cSNickeauuse ComboStrap\MarkupPath; 10*04fd306cSNickeauuse ComboStrap\ResourceCombo; 11*04fd306cSNickeauuse ComboStrap\WikiPath; 12*04fd306cSNickeau 13*04fd306cSNickeauclass Alias 14*04fd306cSNickeau{ 15*04fd306cSNickeau 16*04fd306cSNickeau const CANONICAL = "alias"; 17*04fd306cSNickeau 18*04fd306cSNickeau 19*04fd306cSNickeau private WikiPath $path; // the path of the alias 20*04fd306cSNickeau private MarkupPath $page; 21*04fd306cSNickeau /** 22*04fd306cSNickeau * @var string 23*04fd306cSNickeau */ 24*04fd306cSNickeau private string $type = AliasType::REDIRECT; 25*04fd306cSNickeau 26*04fd306cSNickeau /** 27*04fd306cSNickeau * Alias constructor. 28*04fd306cSNickeau * @param MarkupPath $page 29*04fd306cSNickeau * @param WikiPath $path 30*04fd306cSNickeau */ 31*04fd306cSNickeau public function __construct(MarkupPath $page, WikiPath $path) 32*04fd306cSNickeau { 33*04fd306cSNickeau $this->page = $page; 34*04fd306cSNickeau 35*04fd306cSNickeau $this->path = $path; 36*04fd306cSNickeau } 37*04fd306cSNickeau 38*04fd306cSNickeau /** 39*04fd306cSNickeau * @return WikiPath 40*04fd306cSNickeau */ 41*04fd306cSNickeau public function getPath(): WikiPath 42*04fd306cSNickeau { 43*04fd306cSNickeau return $this->path; 44*04fd306cSNickeau } 45*04fd306cSNickeau 46*04fd306cSNickeau 47*04fd306cSNickeau 48*04fd306cSNickeau /** 49*04fd306cSNickeau * @return MarkupPath 50*04fd306cSNickeau */ 51*04fd306cSNickeau public 52*04fd306cSNickeau function getPage(): MarkupPath 53*04fd306cSNickeau { 54*04fd306cSNickeau return $this->page; 55*04fd306cSNickeau } 56*04fd306cSNickeau 57*04fd306cSNickeau /** 58*04fd306cSNickeau * @return string 59*04fd306cSNickeau */ 60*04fd306cSNickeau public 61*04fd306cSNickeau function getType(): string 62*04fd306cSNickeau { 63*04fd306cSNickeau return $this->type; 64*04fd306cSNickeau } 65*04fd306cSNickeau 66*04fd306cSNickeau 67*04fd306cSNickeau public 68*04fd306cSNickeau static function create(ResourceCombo $page, WikiPath $alias): Alias 69*04fd306cSNickeau { 70*04fd306cSNickeau return new Alias($page, $alias); 71*04fd306cSNickeau } 72*04fd306cSNickeau 73*04fd306cSNickeau public 74*04fd306cSNickeau function setType(string $type): Alias 75*04fd306cSNickeau { 76*04fd306cSNickeau if (!in_array($type, AliasType::ALIAS_TYPE_VALUES)) { 77*04fd306cSNickeau $pageAnchor = $this->getPage()->getHtmlAnchorLink(); 78*04fd306cSNickeau LogUtility::msg("Bad Alias Type. The alias type value ($type) for the alias path ({$this->getPath()}) of the page ({$pageAnchor})"); 79*04fd306cSNickeau return $this; 80*04fd306cSNickeau } 81*04fd306cSNickeau $this->type = $type; 82*04fd306cSNickeau return $this; 83*04fd306cSNickeau } 84*04fd306cSNickeau 85*04fd306cSNickeau public 86*04fd306cSNickeau function __toString() 87*04fd306cSNickeau { 88*04fd306cSNickeau return "Alias: ($this->page) to ($this->path)"; 89*04fd306cSNickeau } 90*04fd306cSNickeau 91*04fd306cSNickeau 92*04fd306cSNickeau} 93