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\Meta\Api\MetadataWikiPath; 9*04fd306cSNickeauuse ComboStrap\PageImageUsage; 10*04fd306cSNickeauuse ComboStrap\SiteConfig; 11*04fd306cSNickeauuse ComboStrap\WikiPath; 12*04fd306cSNickeau 13*04fd306cSNickeau 14*04fd306cSNickeauclass FacebookImage extends MetadataImage 15*04fd306cSNickeau{ 16*04fd306cSNickeau 17*04fd306cSNickeau 18*04fd306cSNickeau const PROPERTY_NAME = "facebook-image"; 19*04fd306cSNickeau 20*04fd306cSNickeau 21*04fd306cSNickeau public static function createFromResource(MarkupPath $page) 22*04fd306cSNickeau { 23*04fd306cSNickeau return (new FacebookImage())->setResource($page); 24*04fd306cSNickeau } 25*04fd306cSNickeau 26*04fd306cSNickeau static public function getDescription(): string 27*04fd306cSNickeau { 28*04fd306cSNickeau return "The Facebook/OpenGraph image used in Facebook and OpenGraph card (Signal, ...)"; 29*04fd306cSNickeau } 30*04fd306cSNickeau 31*04fd306cSNickeau static public function getLabel(): string 32*04fd306cSNickeau { 33*04fd306cSNickeau return "Facebook/OpenGraph"; 34*04fd306cSNickeau } 35*04fd306cSNickeau 36*04fd306cSNickeau public static function getName(): string 37*04fd306cSNickeau { 38*04fd306cSNickeau return self::PROPERTY_NAME; 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 public function setFromStoreValueWithoutException($value): Metadata 52*04fd306cSNickeau { 53*04fd306cSNickeau 54*04fd306cSNickeau if ($value === null) { 55*04fd306cSNickeau $pageImages = PageImages::createForPage($this->getResource()) 56*04fd306cSNickeau ->setReadStore($this->getReadStore()) 57*04fd306cSNickeau ->getValueAsPageImages(); 58*04fd306cSNickeau foreach ($pageImages as $pageImage) { 59*04fd306cSNickeau if (in_array(PageImageUsage::FACEBOOK, $pageImage->getUsages())) { 60*04fd306cSNickeau return parent::setFromStoreValueWithoutException($pageImage->getImagePath()->toAbsoluteId()); 61*04fd306cSNickeau } 62*04fd306cSNickeau } 63*04fd306cSNickeau } 64*04fd306cSNickeau return parent::setFromStoreValueWithoutException($value); 65*04fd306cSNickeau 66*04fd306cSNickeau } 67*04fd306cSNickeau 68*04fd306cSNickeau 69*04fd306cSNickeau public function getDefaultValue() 70*04fd306cSNickeau { 71*04fd306cSNickeau 72*04fd306cSNickeau return SocialCardImage::createFromResourcePage($this->getResource()) 73*04fd306cSNickeau ->getValueOrDefault(); 74*04fd306cSNickeau 75*04fd306cSNickeau } 76*04fd306cSNickeau 77*04fd306cSNickeau static public function getDrive(): string 78*04fd306cSNickeau { 79*04fd306cSNickeau return WikiPath::MEDIA_DRIVE; 80*04fd306cSNickeau } 81*04fd306cSNickeau 82*04fd306cSNickeau static public function isOnForm(): bool 83*04fd306cSNickeau { 84*04fd306cSNickeau return true; 85*04fd306cSNickeau } 86*04fd306cSNickeau 87*04fd306cSNickeau public static function getCanonical(): string 88*04fd306cSNickeau { 89*04fd306cSNickeau return "facebook"; 90*04fd306cSNickeau } 91*04fd306cSNickeau 92*04fd306cSNickeau 93*04fd306cSNickeau} 94