137748cd8SNickeau<?php 237748cd8SNickeau 337748cd8SNickeau 437748cd8SNickeaunamespace ComboStrap; 537748cd8SNickeau 6*04fd306cSNickeauuse ComboStrap\Web\Url; 7*04fd306cSNickeau 837748cd8SNickeau/** 937748cd8SNickeau * Class ThirdMediaLink 1037748cd8SNickeau * @package ComboStrap 11*04fd306cSNickeau * 1237748cd8SNickeau */ 1337748cd8SNickeauclass ThirdMediaLink extends MediaLink 1437748cd8SNickeau{ 1537748cd8SNickeau 16*04fd306cSNickeau 171fa8c418SNickeau public function renderMediaTag(): string 1837748cd8SNickeau { 19*04fd306cSNickeau 20*04fd306cSNickeau $mediaMarkup = $this->mediaMarkup; 21*04fd306cSNickeau $tagAttributes = $this->mediaMarkup->getExtraMediaTagAttributes(); 22*04fd306cSNickeau 23*04fd306cSNickeau $urlString = $mediaMarkup->getFetchUrl()->toString(); 24*04fd306cSNickeau $path = $mediaMarkup->getPath(); 25*04fd306cSNickeau $tagAttributes->addOutputAttributeValue("href", $urlString); 26*04fd306cSNickeau 27*04fd306cSNickeau try { 28*04fd306cSNickeau $label = $mediaMarkup->getLabel(); 29*04fd306cSNickeau } catch (ExceptionNotFound $e) { 30*04fd306cSNickeau $label = $path->getLastName(); 31*04fd306cSNickeau } 32*04fd306cSNickeau $tagAttributes->addOutputAttributeValue("title", $label); 33*04fd306cSNickeau 34*04fd306cSNickeau // dokuwiki class 35*04fd306cSNickeau $tagAttributes 36*04fd306cSNickeau ->addClassName("media") 37*04fd306cSNickeau ->addClassName("mediafile") 38*04fd306cSNickeau ->addClassName("wikilink2"); 39*04fd306cSNickeau try { 40*04fd306cSNickeau // dokuwiki icon 41*04fd306cSNickeau $extension = FileSystems::getMime($path); 42*04fd306cSNickeau $tagAttributes->addClassName("mf_$extension"); 43*04fd306cSNickeau } catch (ExceptionNotFound $e) { 44*04fd306cSNickeau LogUtility::warning("No icon could be added to the media link. Error: {$e->getMessage()}"); 4537748cd8SNickeau } 4637748cd8SNickeau 47*04fd306cSNickeau if (!FileSystems::exists($path)) { 48*04fd306cSNickeau $tagAttributes->addClassName(LinkMarkup::getHtmlClassNotExist()); 49*04fd306cSNickeau } 50*04fd306cSNickeau 51*04fd306cSNickeau return $tagAttributes->toHtmlEnterTag("a") . $label . "</a>"; 52*04fd306cSNickeau 53*04fd306cSNickeau } 54*04fd306cSNickeau 55*04fd306cSNickeau 56*04fd306cSNickeau /** 57*04fd306cSNickeau */ 58*04fd306cSNickeau public function getFetchUrl(): Url 59*04fd306cSNickeau { 60*04fd306cSNickeau 61*04fd306cSNickeau 62*04fd306cSNickeau $path = $this->mediaMarkup->getPath(); 63*04fd306cSNickeau if(!$path instanceof WikiPath){ 64*04fd306cSNickeau return $this->mediaMarkup->getFetchUrl(); 65*04fd306cSNickeau } 66*04fd306cSNickeau 67*04fd306cSNickeau try { 68*04fd306cSNickeau $mime = FileSystems::getMime($path); 69*04fd306cSNickeau } catch (ExceptionNotFound $e) { 70*04fd306cSNickeau return parent::getFetchUrl(); 71*04fd306cSNickeau } 72*04fd306cSNickeau 73*04fd306cSNickeau switch ($mime->toString()) { 74*04fd306cSNickeau case Mime::PDF: 75*04fd306cSNickeau try { 76*04fd306cSNickeau return (new FetcherPdf()) 77*04fd306cSNickeau ->buildFromUrl($this->mediaMarkup->getFetchUrl()) 78*04fd306cSNickeau ->getFetchUrl(); 79*04fd306cSNickeau } catch (ExceptionBadArgument $e) { 80*04fd306cSNickeau LogUtility::internalError($e->getMessage()); 81*04fd306cSNickeau return FetcherRawLocalPath::createFromPath($path) 82*04fd306cSNickeau ->getFetchUrl(); 83*04fd306cSNickeau } 84*04fd306cSNickeau default: 85*04fd306cSNickeau return FetcherRawLocalPath::createFromPath($path) 86*04fd306cSNickeau ->getFetchUrl(); 87*04fd306cSNickeau } 88*04fd306cSNickeau 89*04fd306cSNickeau 904cadd4f8SNickeau } 914cadd4f8SNickeau 9237748cd8SNickeau 9337748cd8SNickeau} 94