1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 6*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataImage; 7*04fd306cSNickeauuse ComboStrap\Meta\Store\MetadataDokuWikiStore; 8*04fd306cSNickeau 9*04fd306cSNickeau/** 10*04fd306cSNickeau * A derived meta that captures the first svg image 11*04fd306cSNickeau * via {@link \syntax_plugin_combo_media::registerFirstImage()} 12*04fd306cSNickeau * 13*04fd306cSNickeau * Note: The first svg icon is captured at {@link FeaturedIcon::FIRST_ICON_PARSED} 14*04fd306cSNickeau */ 15*04fd306cSNickeauclass FirstSvgIllustration extends MetadataImage 16*04fd306cSNickeau{ 17*04fd306cSNickeau 18*04fd306cSNickeau 19*04fd306cSNickeau public const PROPERTY_NAME = "first-svg-illustration"; 20*04fd306cSNickeau 21*04fd306cSNickeau public static function createForPage(ResourceCombo $resource): FirstSvgIllustration 22*04fd306cSNickeau { 23*04fd306cSNickeau return (new FirstSvgIllustration()) 24*04fd306cSNickeau ->setResource($resource); 25*04fd306cSNickeau } 26*04fd306cSNickeau 27*04fd306cSNickeau static public function getDescription(): string 28*04fd306cSNickeau { 29*04fd306cSNickeau return "The first svg illustration of the page"; 30*04fd306cSNickeau } 31*04fd306cSNickeau 32*04fd306cSNickeau static public function getLabel(): string 33*04fd306cSNickeau { 34*04fd306cSNickeau return "First Svg illustration"; 35*04fd306cSNickeau } 36*04fd306cSNickeau 37*04fd306cSNickeau public static function getName(): string 38*04fd306cSNickeau { 39*04fd306cSNickeau return self::PROPERTY_NAME; 40*04fd306cSNickeau } 41*04fd306cSNickeau 42*04fd306cSNickeau 43*04fd306cSNickeau static public function isMutable(): bool 44*04fd306cSNickeau { 45*04fd306cSNickeau return false; 46*04fd306cSNickeau } 47*04fd306cSNickeau 48*04fd306cSNickeau public function buildFromReadStore(): FirstSvgIllustration 49*04fd306cSNickeau { 50*04fd306cSNickeau 51*04fd306cSNickeau $this->wasBuild = true; 52*04fd306cSNickeau $store = $this->getReadStore(); 53*04fd306cSNickeau if (!($store instanceof MetadataDokuWikiStore)) { 54*04fd306cSNickeau return $this; 55*04fd306cSNickeau } 56*04fd306cSNickeau 57*04fd306cSNickeau /** 58*04fd306cSNickeau * Dokuwiki stores the first image in under relation 59*04fd306cSNickeau * but as we can't take over the renderer code to enable svg as first image 60*04fd306cSNickeau * we write it in the root to overcome a conflict 61*04fd306cSNickeau * 62*04fd306cSNickeau * Image set by {@link \syntax_plugin_combo_media::registerFirstImage()} 63*04fd306cSNickeau */ 64*04fd306cSNickeau $firstImageId = $store->getFromName(FirstSvgIllustration::PROPERTY_NAME); 65*04fd306cSNickeau 66*04fd306cSNickeau 67*04fd306cSNickeau $this->setFromStoreValueWithoutException($firstImageId); 68*04fd306cSNickeau 69*04fd306cSNickeau return $this; 70*04fd306cSNickeau } 71*04fd306cSNickeau 72*04fd306cSNickeau 73*04fd306cSNickeau static public function getPersistenceType(): string 74*04fd306cSNickeau { 75*04fd306cSNickeau return Metadata::DERIVED_METADATA; 76*04fd306cSNickeau } 77*04fd306cSNickeau 78*04fd306cSNickeau static public function getDrive(): string 79*04fd306cSNickeau { 80*04fd306cSNickeau return WikiPath::MEDIA_DRIVE; 81*04fd306cSNickeau } 82*04fd306cSNickeau} 83