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