xref: /template/strap/ComboStrap/Meta/Field/FeaturedSvgImage.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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