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