1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 6*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataImage; 7*04fd306cSNickeau 8*04fd306cSNickeau/** 9*04fd306cSNickeau * A derived meta that captures the first raster image 10*04fd306cSNickeau * via {@link \syntax_plugin_combo_media::registerFirstImage()} 11*04fd306cSNickeau */ 12*04fd306cSNickeauclass FeaturedIcon extends MetadataImage 13*04fd306cSNickeau{ 14*04fd306cSNickeau 15*04fd306cSNickeau public const PROPERTY_NAME = "featured-icon"; 16*04fd306cSNickeau public const FIRST_ICON_PARSED = "first-icon-image-parsed"; 17*04fd306cSNickeau 18*04fd306cSNickeau public static function createForPage(ResourceCombo $resource): FeaturedIcon 19*04fd306cSNickeau { 20*04fd306cSNickeau return (new FeaturedIcon()) 21*04fd306cSNickeau ->setResource($resource); 22*04fd306cSNickeau } 23*04fd306cSNickeau 24*04fd306cSNickeau static public function getDescription(): string 25*04fd306cSNickeau { 26*04fd306cSNickeau return "An illustrative icon for the page"; 27*04fd306cSNickeau } 28*04fd306cSNickeau 29*04fd306cSNickeau static public function getLabel(): string 30*04fd306cSNickeau { 31*04fd306cSNickeau return "Featured Icon"; 32*04fd306cSNickeau } 33*04fd306cSNickeau 34*04fd306cSNickeau public static function getName(): string 35*04fd306cSNickeau { 36*04fd306cSNickeau return self::PROPERTY_NAME; 37*04fd306cSNickeau } 38*04fd306cSNickeau 39*04fd306cSNickeau 40*04fd306cSNickeau static public function isMutable(): bool 41*04fd306cSNickeau { 42*04fd306cSNickeau return true; 43*04fd306cSNickeau } 44*04fd306cSNickeau 45*04fd306cSNickeau 46*04fd306cSNickeau static public function getPersistenceType(): string 47*04fd306cSNickeau { 48*04fd306cSNickeau return Metadata::PERSISTENT_METADATA; 49*04fd306cSNickeau } 50*04fd306cSNickeau 51*04fd306cSNickeau public function getDefaultValue() 52*04fd306cSNickeau { 53*04fd306cSNickeau /** 54*04fd306cSNickeau * 55*04fd306cSNickeau * Image set by {@link \syntax_plugin_combo_media::registerFirstImage()} 56*04fd306cSNickeau */ 57*04fd306cSNickeau $iconImageParsed = $this->getReadStore()->getFromName(FeaturedIcon::FIRST_ICON_PARSED); 58*04fd306cSNickeau 59*04fd306cSNickeau if ($iconImageParsed !== null) { 60*04fd306cSNickeau return WikiPath::createMediaPathFromId($iconImageParsed); 61*04fd306cSNickeau } 62*04fd306cSNickeau 63*04fd306cSNickeau throw new ExceptionNotFound(); 64*04fd306cSNickeau } 65*04fd306cSNickeau 66*04fd306cSNickeau static public function getDrive(): string 67*04fd306cSNickeau { 68*04fd306cSNickeau return WikiPath::MEDIA_DRIVE; 69*04fd306cSNickeau } 70*04fd306cSNickeau 71*04fd306cSNickeau static public function isOnForm(): bool 72*04fd306cSNickeau { 73*04fd306cSNickeau return true; 74*04fd306cSNickeau } 75*04fd306cSNickeau} 76