137748cd8SNickeau<?php 237748cd8SNickeau/** 337748cd8SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved. 437748cd8SNickeau * 537748cd8SNickeau * This source code is licensed under the GPL license found in the 637748cd8SNickeau * COPYING file in the root directory of this source tree. 737748cd8SNickeau * 837748cd8SNickeau * @license GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html) 937748cd8SNickeau * @author ComboStrap <support@combostrap.com> 1037748cd8SNickeau * 1137748cd8SNickeau */ 1237748cd8SNickeau 1337748cd8SNickeaunamespace ComboStrap; 1437748cd8SNickeau 1537748cd8SNickeau 16*04fd306cSNickeauuse ComboStrap\Web\Url; 1737748cd8SNickeau 1837748cd8SNickeau/** 1937748cd8SNickeau * Class InternalMedia 20*04fd306cSNickeau * Represent a HTML markup link 2137748cd8SNickeau * 2237748cd8SNickeau * 2337748cd8SNickeau * @package ComboStrap 2437748cd8SNickeau * 2537748cd8SNickeau * 2637748cd8SNickeau * 271fa8c418SNickeau * This is a link to a media (pdf, image, ...). 28*04fd306cSNickeau * (ie img, svg, a) 2937748cd8SNickeau */ 301fa8c418SNickeauabstract class MediaLink 3137748cd8SNickeau{ 3237748cd8SNickeau 3337748cd8SNickeau 3437748cd8SNickeau const CANONICAL = "image"; 3537748cd8SNickeau 3637748cd8SNickeau 3737748cd8SNickeau /** 3837748cd8SNickeau * @deprecated 2021-06-12 3937748cd8SNickeau */ 4037748cd8SNickeau const LINK_PATTERN = "{{\s*([^|\s]*)\s*\|?.*}}"; 41*04fd306cSNickeau protected MediaMarkup $mediaMarkup; 4237748cd8SNickeau 4337748cd8SNickeau 44*04fd306cSNickeau public function __construct(MediaMarkup $mediaMarkup) 4537748cd8SNickeau { 46*04fd306cSNickeau $this->mediaMarkup = $mediaMarkup; 4737748cd8SNickeau } 4837748cd8SNickeau 4937748cd8SNickeau 5037748cd8SNickeau /** 51*04fd306cSNickeau * @param MediaMarkup $mediaMarkup 52*04fd306cSNickeau * @return RasterImageLink|SvgImageLink|ThirdMediaLink|MediaLink 53*04fd306cSNickeau * @throws ExceptionBadArgument 54*04fd306cSNickeau * @throws ExceptionBadSyntax 55*04fd306cSNickeau * @throws ExceptionNotExists 56*04fd306cSNickeau * @throws ExceptionNotFound 5737748cd8SNickeau */ 58*04fd306cSNickeau public static function createFromMediaMarkup(MediaMarkup $mediaMarkup) 5937748cd8SNickeau { 604cadd4f8SNickeau 6137748cd8SNickeau /** 6237748cd8SNickeau * Processing 6337748cd8SNickeau */ 64*04fd306cSNickeau $mime = $mediaMarkup->getFetcher()->getMime(); 65*04fd306cSNickeau switch ($mime->toString()) { 664cadd4f8SNickeau case Mime::SVG: 67*04fd306cSNickeau return new SvgImageLink($mediaMarkup); 684cadd4f8SNickeau default: 69c3437056SNickeau if (!$mime->isImage()) { 70*04fd306cSNickeau return new ThirdMediaLink($mediaMarkup); 714cadd4f8SNickeau } else { 72*04fd306cSNickeau return new RasterImageLink($mediaMarkup); 734cadd4f8SNickeau } 7437748cd8SNickeau } 7537748cd8SNickeau 7637748cd8SNickeau 7737748cd8SNickeau } 7837748cd8SNickeau 7937748cd8SNickeau 8037748cd8SNickeau /** 8137748cd8SNickeau * @return string - the HTML of the image 8237748cd8SNickeau */ 83*04fd306cSNickeau public abstract function renderMediaTag(): string; 841fa8c418SNickeau 8537748cd8SNickeau 86*04fd306cSNickeau public function getFetchUrl(): Url 871fa8c418SNickeau { 88*04fd306cSNickeau return $this->mediaMarkup->getFetchUrl(); 894cadd4f8SNickeau } 9037748cd8SNickeau 9182a60d03SNickeau 9237748cd8SNickeau} 93