[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / compresseur / inc / compresseur_minifier.php
index f0161c1..aaf35c1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2016                                                *
+ *  Copyright (c) 2001-2019                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -63,7 +63,8 @@ function minifier_css($contenu, $options = '') {
 
                // nettoyer la css de tout ce qui sert pas
                // pas de commentaires
-               $contenu = preg_replace(",/\*.*\*/,Ums", "", $contenu);
+               // https://core.spip.net/issues/3987 sauf les commentaires important commençant par un ! qui sont en general des credits
+               $contenu = preg_replace(",/\*[^!].*\*/,Ums", "", $contenu);
                $contenu = preg_replace(",\s//[^\n]*\n,Ums", "", $contenu);
                // espaces autour des retour lignes
                $contenu = str_replace("\r\n", "\n", $contenu);
@@ -97,8 +98,8 @@ function minifier_css($contenu, $options = '') {
                $contenu = preg_replace("/\b0+\.(\d+em)/ims", ".$1", $contenu);
                // supprimer les declarations vides
                $contenu = preg_replace(",(^|})([^{}]*){},Ums", "$1", $contenu);
-               // zero est zero, quelle que soit l'unite (sauf pour % car casse les @keyframes cf https://core.spip.net/issues/3128)
-               $contenu = preg_replace("/([^0-9.]0)(em|px|pt)/ms", "$1", $contenu);
+               // pas besoin d'unité quand la valeur est zéro (sauf pour % car casse les @keyframes cf https://core.spip.net/issues/3128 - préserve également les chaînes en base64 cf https://core.spip.net/issues/3991)
+               $contenu = preg_replace("/((?::|\s+|\()0)(em|px|pt|rem|ex|pc|vh|vw|vmin|vmax|cm|mm|in|ch)/ms", "$1", $contenu);
 
                // renommer les couleurs par leurs versions courtes quand c'est possible
                $colors = array(