104fd306cSNickeau<?php 204fd306cSNickeau 304fd306cSNickeaunamespace ComboStrap; 404fd306cSNickeau 504fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 604fd306cSNickeauuse ComboStrap\Meta\Api\MetadataImage; 704fd306cSNickeau 804fd306cSNickeau/** 904fd306cSNickeau * A derived meta that captures the first raster image 1004fd306cSNickeau * via {@link \syntax_plugin_combo_media::registerFirstImage()} 1104fd306cSNickeau */ 1204fd306cSNickeauclass FeaturedIcon extends MetadataImage 1304fd306cSNickeau{ 1404fd306cSNickeau 1504fd306cSNickeau public const PROPERTY_NAME = "featured-icon"; 1604fd306cSNickeau public const FIRST_ICON_PARSED = "first-icon-image-parsed"; 1704fd306cSNickeau 1804fd306cSNickeau public static function createForPage(ResourceCombo $resource): FeaturedIcon 1904fd306cSNickeau { 2004fd306cSNickeau return (new FeaturedIcon()) 2104fd306cSNickeau ->setResource($resource); 2204fd306cSNickeau } 2304fd306cSNickeau 2404fd306cSNickeau static public function getDescription(): string 2504fd306cSNickeau { 2604fd306cSNickeau return "An illustrative icon for the page"; 2704fd306cSNickeau } 2804fd306cSNickeau 2904fd306cSNickeau static public function getLabel(): string 3004fd306cSNickeau { 3104fd306cSNickeau return "Featured Icon"; 3204fd306cSNickeau } 3304fd306cSNickeau 3404fd306cSNickeau public static function getName(): string 3504fd306cSNickeau { 3604fd306cSNickeau return self::PROPERTY_NAME; 3704fd306cSNickeau } 3804fd306cSNickeau 3904fd306cSNickeau 4004fd306cSNickeau static public function isMutable(): bool 4104fd306cSNickeau { 4204fd306cSNickeau return true; 4304fd306cSNickeau } 4404fd306cSNickeau 4504fd306cSNickeau 4604fd306cSNickeau static public function getPersistenceType(): string 4704fd306cSNickeau { 4804fd306cSNickeau return Metadata::PERSISTENT_METADATA; 4904fd306cSNickeau } 5004fd306cSNickeau 51*b3ab836dSgerardnico public function getDefaultValue(): WikiPath 5204fd306cSNickeau { 53*b3ab836dSgerardnico 54*b3ab836dSgerardnico /** 55*b3ab836dSgerardnico * @var MarkupPath $page 56*b3ab836dSgerardnico */ 57*b3ab836dSgerardnico $page = $this->getResource(); 58*b3ab836dSgerardnico if($page->isRootHomePage()){ 59*b3ab836dSgerardnico try { 60*b3ab836dSgerardnico return Site::getLogoAsSvgImage(); 61*b3ab836dSgerardnico } catch (ExceptionNotFound $e) { 62*b3ab836dSgerardnico // not found 63*b3ab836dSgerardnico } 64*b3ab836dSgerardnico } 65*b3ab836dSgerardnico 6604fd306cSNickeau /** 6704fd306cSNickeau * 6804fd306cSNickeau * Image set by {@link \syntax_plugin_combo_media::registerFirstImage()} 6904fd306cSNickeau */ 7004fd306cSNickeau $iconImageParsed = $this->getReadStore()->getFromName(FeaturedIcon::FIRST_ICON_PARSED); 7104fd306cSNickeau 7204fd306cSNickeau if ($iconImageParsed !== null) { 7304fd306cSNickeau return WikiPath::createMediaPathFromId($iconImageParsed); 7404fd306cSNickeau } 7504fd306cSNickeau 7604fd306cSNickeau throw new ExceptionNotFound(); 7704fd306cSNickeau } 7804fd306cSNickeau 7904fd306cSNickeau static public function getDrive(): string 8004fd306cSNickeau { 8104fd306cSNickeau return WikiPath::MEDIA_DRIVE; 8204fd306cSNickeau } 8304fd306cSNickeau 8404fd306cSNickeau static public function isOnForm(): bool 8504fd306cSNickeau { 8604fd306cSNickeau return true; 8704fd306cSNickeau } 8804fd306cSNickeau} 89