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