1<?php
2
3
4namespace ComboStrap;
5
6
7class PageImage
8{
9
10    const PAGE_IMAGE = "page-image";
11
12    // next release ?
13
14    /**
15     * @var Image
16     */
17    private $image;
18    private $usages;
19    /**
20     * @var Page
21     */
22    private $page;
23
24    /**
25     * PageImage constructor.
26     */
27    public function __construct(Image $image, Page $page)
28    {
29        $this->image = $image;
30        $this->page = $page;
31    }
32
33    /**
34     * @param Image|string $image
35     * @param Page $page
36     * @return PageImage
37     * @throws ExceptionCombo
38     */
39    public static function create($image, ResourceCombo $page): PageImage
40    {
41        if (!($image instanceof Image)) {
42            $dokuPath = DokuPath::createMediaPathFromId($image);
43            $image = Image::createImageFromPath($dokuPath);
44        }
45        return new PageImage($image, $page);
46    }
47
48    /**
49     * @param array $usages
50     * @return $this
51     * @throws ExceptionCombo
52     */
53    public function setUsages(array $usages): PageImage
54    {
55        foreach ($usages as $usage) {
56            $value = trim($usage);
57            if ($value === "") {
58                continue;
59            }
60            if (!in_array($value, PageImageUsage::getUsageValues())) {
61                throw new ExceptionCombo("The page image usage value ($value) is not valid.");
62            }
63            $this->usages[$value] = $value;
64        }
65        return $this;
66    }
67
68    public function getImage(): Image
69    {
70        return $this->image;
71    }
72
73    public function getUsages(): array
74    {
75        if ($this->usages === null) {
76            return $this->getDefaultUsage();
77        }
78        return array_values($this->usages);
79    }
80
81    public function getDefaultUsage(): array
82    {
83        return [PageImageUsage::DEFAULT];
84    }
85
86
87}
88