1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap\Meta\Field; 4*04fd306cSNickeau 5*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 6*04fd306cSNickeauuse ComboStrap\FirstSvgIllustration; 7*04fd306cSNickeauuse ComboStrap\MarkupPath; 8*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 9*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataImage; 10*04fd306cSNickeauuse ComboStrap\Meta\Store\MetadataDokuWikiStore; 11*04fd306cSNickeauuse ComboStrap\WikiPath; 12*04fd306cSNickeau 13*04fd306cSNickeau 14*04fd306cSNickeauclass FeaturedSvgImage extends MetadataImage 15*04fd306cSNickeau{ 16*04fd306cSNickeau 17*04fd306cSNickeau const PROPERTY_NAME = "featured-svg-image"; 18*04fd306cSNickeau const ITEM_FEATURED_IMAGE_PARSED = "item-featured-svg-image-parsed"; 19*04fd306cSNickeau 20*04fd306cSNickeau 21*04fd306cSNickeau public static function createFromResourcePage(MarkupPath $markupPath): FeaturedSvgImage 22*04fd306cSNickeau { 23*04fd306cSNickeau return (new FeaturedSvgImage())->setResource($markupPath); 24*04fd306cSNickeau } 25*04fd306cSNickeau 26*04fd306cSNickeau static public function getDescription(): string 27*04fd306cSNickeau { 28*04fd306cSNickeau return "A featured image in svg format"; 29*04fd306cSNickeau } 30*04fd306cSNickeau 31*04fd306cSNickeau static public function getLabel(): string 32*04fd306cSNickeau { 33*04fd306cSNickeau return "Featured Svg Image"; 34*04fd306cSNickeau } 35*04fd306cSNickeau 36*04fd306cSNickeau public static function getName(): string 37*04fd306cSNickeau { 38*04fd306cSNickeau return "featured-svg-image"; 39*04fd306cSNickeau } 40*04fd306cSNickeau 41*04fd306cSNickeau static public function getPersistenceType(): string 42*04fd306cSNickeau { 43*04fd306cSNickeau return Metadata::PERSISTENT_METADATA; 44*04fd306cSNickeau } 45*04fd306cSNickeau 46*04fd306cSNickeau static public function isMutable(): bool 47*04fd306cSNickeau { 48*04fd306cSNickeau return true; 49*04fd306cSNickeau } 50*04fd306cSNickeau 51*04fd306cSNickeau 52*04fd306cSNickeau public function setParsedValue(string $path = null): FeaturedSvgImage 53*04fd306cSNickeau { 54*04fd306cSNickeau $store = $this->getWriteStore(); 55*04fd306cSNickeau if ($store instanceof MetadataDokuWikiStore) { 56*04fd306cSNickeau $store->setFromPersistentName(self::ITEM_FEATURED_IMAGE_PARSED, $path); 57*04fd306cSNickeau } 58*04fd306cSNickeau return $this; 59*04fd306cSNickeau } 60*04fd306cSNickeau 61*04fd306cSNickeau public function getDefaultValue(): WikiPath 62*04fd306cSNickeau { 63*04fd306cSNickeau 64*04fd306cSNickeau /** 65*04fd306cSNickeau * Parsed Feature Images 66*04fd306cSNickeau */ 67*04fd306cSNickeau $parsedValue = $this->getReadStore()->getFromName(self::ITEM_FEATURED_IMAGE_PARSED); 68*04fd306cSNickeau if ($parsedValue === null) { 69*04fd306cSNickeau throw new ExceptionNotFound(); 70*04fd306cSNickeau } 71*04fd306cSNickeau return WikiPath::createMediaPathFromPath($parsedValue); 72*04fd306cSNickeau 73*04fd306cSNickeau } 74*04fd306cSNickeau 75*04fd306cSNickeau 76*04fd306cSNickeau static public function getDrive(): string 77*04fd306cSNickeau { 78*04fd306cSNickeau return WikiPath::MEDIA_DRIVE; 79*04fd306cSNickeau } 80*04fd306cSNickeau 81*04fd306cSNickeau static public function isOnForm(): bool 82*04fd306cSNickeau { 83*04fd306cSNickeau return true; 84*04fd306cSNickeau } 85*04fd306cSNickeau 86*04fd306cSNickeau public static function getCanonical(): string 87*04fd306cSNickeau { 88*04fd306cSNickeau return FeaturedImage::getCanonical(); 89*04fd306cSNickeau } 90*04fd306cSNickeau} 91