diff --git a/sanitizer/svg.php b/sanitizer/svg.php index 9f983906702f0d3b1d1a4f863561d731881a65e4..2cc360c7d633a01eb2395af6389cc20ce7bf0cd0 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;