From 5e940929308e96573068309843bb55471adc2b6e Mon Sep 17 00:00:00 2001
From: RastaPopoulos <rastapopoulos@spip.org>
Date: Wed, 27 Mar 2024 15:40:19 +0100
Subject: [PATCH] =?UTF-8?q?feat(5660):=20nouveau=20filtre=20|balise=5Fimg?=
 =?UTF-8?q?=5Fsvg=20pour=20ins=C3=A9rer=20une=20image=20ou=20un=20svg=20in?=
 =?UTF-8?q?line=20sans=20savoir=20d'avance?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fix: #5660
---
 ecrire/inc/filtres.php | 45 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 07ecf8d465..5ca898ea5a 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -3671,6 +3671,51 @@ function filtre_balise_svg_dist($img, $alt = '', $class = null, $size = null) {
 	return $svg;
 }
 
+/**
+ * Génère une balise HTML `img` ou un `svg` inline suivant le nom du fichier.
+ * 
+ * @uses filtre_balise_img_dist()
+ * @uses filtre_balise_svg_dist()
+ * 
+ * @param string $img
+ *   chemin vers un fichier ou balise `<img src='...' />` (generee par un filtre image par exemple)
+ * @param string $alt
+ *   texte alternatif ; une valeur nulle pour explicitement ne pas avoir de balise alt sur l'image (au lieu d'un alt vide)
+ * @param string $class
+ *   attribut class ; null par defaut (ie si img est une balise, son attribut class sera inchange. pas de class inseree
+ * @param string|int $size
+ *   taille imposee
+ *     @2x : pour imposer une densite x2 (widht et height seront divisees par 2)
+ *     largeur : pour une image carree
+ *     largeurx* : pour imposer uniquement la largeur (un attribut height sera aussi ajoute, mais calcule automatiquement pour respecter le ratio initial de l'image)
+ *     largeurxhauteur pour fixer les 2 dimensions
+ * @return string
+ *     Code HTML de la balise IMG
+ */
+function filtre_balise_img_svg_dist($src, $alt = '', $class = null, $size = null) {
+	$balise = '';
+
+	// Récupérer le chemin si c'est déjà un tag <img>
+	if (str_starts_with(ltrim($src), '<img')) {
+		$src = extraire_attribut($src, 'src');
+	}
+
+	// Retrouver l'extension
+	$src = supprimer_timestamp($src);
+	$extension = strtolower(pathinfo($src, PATHINFO_EXTENSION));
+
+	// Si c'est un svg, on embed
+	if ($extension === 'svg') {
+		$balise = filtrer('balise_svg', $src, $alt, $class, $size);
+	// Sinon, balise_img si pas déjà le cas
+	} else {
+		$balise = filtrer('balise_img', $src, $alt, $class, $size);
+	}
+
+	return $balise;
+}
+
+
 /**
  * Obtient des informations sur les plugins actifs
  *
-- 
GitLab