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