xref: /plugin/combo/ComboStrap/Meta/Field/TwitterImage.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace ComboStrap\Meta\Field;
4*04fd306cSNickeau
5*04fd306cSNickeauuse ComboStrap\MarkupPath;
6*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata;
7*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataImage;
8*04fd306cSNickeauuse ComboStrap\PageImageUsage;
9*04fd306cSNickeauuse ComboStrap\WikiPath;
10*04fd306cSNickeau
11*04fd306cSNickeau
12*04fd306cSNickeauclass TwitterImage extends MetadataImage
13*04fd306cSNickeau{
14*04fd306cSNickeau
15*04fd306cSNickeau
16*04fd306cSNickeau    const PROPERTY_NAME = "twitter-image";
17*04fd306cSNickeau
18*04fd306cSNickeau    public static function createFromResource(MarkupPath $page)
19*04fd306cSNickeau    {
20*04fd306cSNickeau        return (new TwitterImage())->setResource($page);
21*04fd306cSNickeau    }
22*04fd306cSNickeau
23*04fd306cSNickeau    static public function getDescription(): string
24*04fd306cSNickeau    {
25*04fd306cSNickeau        return "The twitter image used in twitter card";
26*04fd306cSNickeau    }
27*04fd306cSNickeau
28*04fd306cSNickeau    static public function getLabel(): string
29*04fd306cSNickeau    {
30*04fd306cSNickeau        return "Twitter Image";
31*04fd306cSNickeau    }
32*04fd306cSNickeau
33*04fd306cSNickeau    public static function getName(): string
34*04fd306cSNickeau    {
35*04fd306cSNickeau        return self::PROPERTY_NAME;
36*04fd306cSNickeau    }
37*04fd306cSNickeau
38*04fd306cSNickeau    static public function getPersistenceType(): string
39*04fd306cSNickeau    {
40*04fd306cSNickeau        return Metadata::PERSISTENT_METADATA;
41*04fd306cSNickeau    }
42*04fd306cSNickeau
43*04fd306cSNickeau    static public function isMutable(): bool
44*04fd306cSNickeau    {
45*04fd306cSNickeau        return true;
46*04fd306cSNickeau    }
47*04fd306cSNickeau
48*04fd306cSNickeau    public function setFromStoreValueWithoutException($value): Metadata
49*04fd306cSNickeau    {
50*04fd306cSNickeau
51*04fd306cSNickeau        if ($value === null) {
52*04fd306cSNickeau            $pageImages = PageImages::createForPage($this->getResource())
53*04fd306cSNickeau                ->setReadStore($this->getReadStore())
54*04fd306cSNickeau                ->getValueAsPageImages();
55*04fd306cSNickeau            foreach ($pageImages as $pageImage) {
56*04fd306cSNickeau                if (in_array(PageImageUsage::TWITTER, $pageImage->getUsages())) {
57*04fd306cSNickeau                    return parent::setFromStoreValueWithoutException($pageImage->getImagePath()->toAbsoluteId());
58*04fd306cSNickeau                }
59*04fd306cSNickeau            }
60*04fd306cSNickeau        }
61*04fd306cSNickeau        return parent::setFromStoreValueWithoutException($value);
62*04fd306cSNickeau
63*04fd306cSNickeau    }
64*04fd306cSNickeau
65*04fd306cSNickeau    public function getDefaultValue()
66*04fd306cSNickeau    {
67*04fd306cSNickeau
68*04fd306cSNickeau        return SocialCardImage::createFromResourcePage($this->getResource())
69*04fd306cSNickeau            ->getValueOrDefault();
70*04fd306cSNickeau
71*04fd306cSNickeau    }
72*04fd306cSNickeau
73*04fd306cSNickeau    static public function getDrive(): string
74*04fd306cSNickeau    {
75*04fd306cSNickeau        return WikiPath::MEDIA_DRIVE;
76*04fd306cSNickeau    }
77*04fd306cSNickeau
78*04fd306cSNickeau    static public function isOnForm(): bool
79*04fd306cSNickeau    {
80*04fd306cSNickeau        return true;
81*04fd306cSNickeau    }
82*04fd306cSNickeau
83*04fd306cSNickeau    public static function getCanonical(): string
84*04fd306cSNickeau    {
85*04fd306cSNickeau        return "twitter";
86*04fd306cSNickeau    }
87*04fd306cSNickeau
88*04fd306cSNickeau
89*04fd306cSNickeau}
90