From cee53105c5946a61958f03c6dcd6c3fd1801a9d1 Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Wed, 10 Mar 2021 11:13:44 +0100
Subject: [PATCH] =?UTF-8?q?Ticket=20#4682=20:=20Suite=20=C3=A0=20f2ecbd9?=
 =?UTF-8?q?=20,=20d=C3=A9clarer=20un=20autoloader,=20plutot=20que=20de=20c?=
 =?UTF-8?q?harger=20chaque=20classe=20individuellement.=20On=20y=20reviend?=
 =?UTF-8?q?ra.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 sanitizer/svg.php | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/sanitizer/svg.php b/sanitizer/svg.php
index 9f983906..2cc360c7 100644
--- a/sanitizer/svg.php
+++ b/sanitizer/svg.php
@@ -48,11 +48,21 @@ function sanitizer_svg_dist($file) {
 		) {
 			spip_log("sanitization SVG $file", "svg");
 
-			include_spip('lib/svg-sanitizer/src/Sanitizer');
-			include_spip('lib/svg-sanitizer/src/data/AttributeInterface');
-			include_spip('lib/svg-sanitizer/src/data/AllowedAttributes');
-			include_spip('lib/svg-sanitizer/src/data/TagInterface');
-			include_spip('lib/svg-sanitizer/src/data/AllowedTags');
+			if (!class_exists('enshrined\svgSanitize\Sanitizer')) {
+				spl_autoload_register(function ($class) {
+					$prefix = 'enshrined\\svgSanitize\\';
+					$base_dir = _DIR_PLUGIN_MEDIAS . 'lib/svg-sanitizer/src/';
+					$len = strlen($prefix);
+					if (strncmp($prefix, $class, $len) !== 0) {
+						return;
+					}
+					$relative_class = substr($class, $len);
+					$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
+									if (file_exists($file)) {
+						require $file;
+					}
+				});
+			}
 
 			// sanitization can need multiples call
 			$maxiter = 10;
-- 
GitLab