xref: /template/strap/ComboStrap/Meta/Field/PageImage.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeau
4*04fd306cSNickeaunamespace ComboStrap\Meta\Field;
5*04fd306cSNickeau
6*04fd306cSNickeau
7*04fd306cSNickeauuse ComboStrap\ExceptionCompile;
8*04fd306cSNickeauuse ComboStrap\MarkupPath;
9*04fd306cSNickeauuse ComboStrap\PageImageUsage;
10*04fd306cSNickeauuse ComboStrap\ResourceCombo;
11*04fd306cSNickeauuse ComboStrap\WikiPath;
12*04fd306cSNickeau
13*04fd306cSNickeau/**
14*04fd306cSNickeau * Represents the image of a page in a {@link PageImages}
15*04fd306cSNickeau * @deprecated
16*04fd306cSNickeau */
17*04fd306cSNickeauclass PageImage
18*04fd306cSNickeau{
19*04fd306cSNickeau
20*04fd306cSNickeau    const PAGE_IMAGE = "page-image";
21*04fd306cSNickeau
22*04fd306cSNickeau
23*04fd306cSNickeau    /**
24*04fd306cSNickeau     * A path and not a {@link FetcherImage}
25*04fd306cSNickeau     * because:
26*04fd306cSNickeau     *   * it's basically a path (no processing information are needed)
27*04fd306cSNickeau     *   * it's easier to manipulate a path
28*04fd306cSNickeau     *   * in syntax component, we pass attribute to the fetcher that it should delete if used (Way to check the attribute usage)
29*04fd306cSNickeau     * @var WikiPath
30*04fd306cSNickeau     */
31*04fd306cSNickeau    private WikiPath $image;
32*04fd306cSNickeau    private $usages;
33*04fd306cSNickeau    /**
34*04fd306cSNickeau     * @var MarkupPath
35*04fd306cSNickeau     */
36*04fd306cSNickeau    private $page;
37*04fd306cSNickeau
38*04fd306cSNickeau    /**
39*04fd306cSNickeau     * PageImage constructor.
40*04fd306cSNickeau     */
41*04fd306cSNickeau    public function __construct(WikiPath $image, MarkupPath $page)
42*04fd306cSNickeau    {
43*04fd306cSNickeau        $this->image = $image;
44*04fd306cSNickeau        $this->page = $page;
45*04fd306cSNickeau    }
46*04fd306cSNickeau
47*04fd306cSNickeau    /**
48*04fd306cSNickeau     * @param WikiPath $image
49*04fd306cSNickeau     * @param MarkupPath $page
50*04fd306cSNickeau     * @return PageImage
51*04fd306cSNickeau     */
52*04fd306cSNickeau    public static function create(WikiPath $image, ResourceCombo $page): PageImage
53*04fd306cSNickeau    {
54*04fd306cSNickeau        return new PageImage($image, $page);
55*04fd306cSNickeau    }
56*04fd306cSNickeau
57*04fd306cSNickeau    /**
58*04fd306cSNickeau     * @param array $usages
59*04fd306cSNickeau     * @return $this
60*04fd306cSNickeau     * @throws ExceptionCompile
61*04fd306cSNickeau     */
62*04fd306cSNickeau    public function setUsages(array $usages): PageImage
63*04fd306cSNickeau    {
64*04fd306cSNickeau        foreach ($usages as $usage) {
65*04fd306cSNickeau            $value = trim($usage);
66*04fd306cSNickeau            if ($value === "") {
67*04fd306cSNickeau                continue;
68*04fd306cSNickeau            }
69*04fd306cSNickeau            if (!in_array($value, PageImageUsage::getUsageValues())) {
70*04fd306cSNickeau                throw new ExceptionCompile("The page image usage value ($value) is not valid.");
71*04fd306cSNickeau            }
72*04fd306cSNickeau            $this->usages[$value] = $value;
73*04fd306cSNickeau        }
74*04fd306cSNickeau        return $this;
75*04fd306cSNickeau    }
76*04fd306cSNickeau
77*04fd306cSNickeau    public function getImagePath(): WikiPath
78*04fd306cSNickeau    {
79*04fd306cSNickeau        return $this->image;
80*04fd306cSNickeau    }
81*04fd306cSNickeau
82*04fd306cSNickeau    public function getUsages(): array
83*04fd306cSNickeau    {
84*04fd306cSNickeau        if ($this->usages === null) {
85*04fd306cSNickeau            return $this->getDefaultUsage();
86*04fd306cSNickeau        }
87*04fd306cSNickeau        return array_values($this->usages);
88*04fd306cSNickeau    }
89*04fd306cSNickeau
90*04fd306cSNickeau    public function getDefaultUsage(): array
91*04fd306cSNickeau    {
92*04fd306cSNickeau        return [PageImageUsage::DEFAULT];
93*04fd306cSNickeau    }
94*04fd306cSNickeau
95*04fd306cSNickeau    /**
96*04fd306cSNickeau     * @return MarkupPath
97*04fd306cSNickeau     */
98*04fd306cSNickeau    public function getPage(): MarkupPath
99*04fd306cSNickeau    {
100*04fd306cSNickeau        return $this->page;
101*04fd306cSNickeau    }
102*04fd306cSNickeau
103*04fd306cSNickeau
104*04fd306cSNickeau}
105