Valider ba741410 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Rector sur Compresseur pour PHP 7.4+, hors libs

parent 5ed83896
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+2 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -37,6 +37,7 @@ $GLOBALS['spip_matrice']['compresseur_embarquer_images_css'] = 'inc/compresseur_
 *     - Chemin vers un fichier ayant le contenu minifié (si source est un fichier)
 */
function minifier($source, $format = null) {
	$contenu = null;
	$maybe_file = false;
	if (
		strpos($source, "\n") === false
@@ -181,6 +182,7 @@ function compacte_head($flux) {
 *     URL du fichier sinon (la source)
 */
function filtre_embarque_fichier($src, $base = '', $maxsize = 4096) {
	$contenu = null;
	static $mime = [];

	if (strpos($src, '?') !== false) {
+5 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -37,6 +37,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 *   Code HTML de la balise <script>
 */
function compresseur_ecrire_balise_js_dist(&$flux, $pos, $src, $comments = '') {
	$jQl = null;
	$src = timestamp($src);
	// option chargement JS async par jQl
	if (defined('_JS_ASYNC_LOAD') and !test_espace_prive()) {
@@ -206,13 +207,13 @@ function compacte_head_files($flux, $format) {
	include_spip('inc/compresseur_concatener');
	include_spip('inc/compresseur_minifier');
	if (
		list($src, $comms) = concatener_fichiers($files, $format, $callbacks)
		[$src, $comms] = concatener_fichiers($files, $format, $callbacks)
		and $src
	) {
		$compacte_ecrire_balise = charger_fonction("compresseur_ecrire_balise_$format", '');
		$files = array_keys($files);
		// retrouver la position du premier fichier compacte
		$pos = strpos($flux, reset($files));
		$pos = strpos($flux, (string) reset($files));
		// supprimer tous les fichiers compactes du flux
		$flux = str_replace($files, '', $flux);
		// inserer la balise (deleguer a la fonction, en lui donnant le necessaire)
@@ -255,6 +256,7 @@ function compresseur_liste_fonctions_prepare_css() {
 * @return bool|int|null|string
 */
function &compresseur_callback_prepare_css(&$css, $is_inline = false, $fonctions = null) {
	$contenu = [];
	if ($is_inline) {
		return compresseur_callback_prepare_css_inline($css, $is_inline);
	}
@@ -434,6 +436,7 @@ function css_resolve_atimport($contenu, $url_base, $filename) {
 * @return bool|string
 */
function css_regroup_atimport($nom_tmp, $nom) {
	$contenu = null;
	lire_fichier($nom_tmp, $contenu);
	if (!$contenu or strpos($contenu, '@import') === false) {
		return false;
+7 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -49,8 +49,8 @@ function concatener_fichiers($files, $format = 'js', $callbacks = []) {
		$files = [$files];
	}
	if (count($files)) {
		$callback_min = isset($callbacks['each_min']) ? $callbacks['each_min'] : 'concatener_callback_identite';
		$callback_pre = isset($callbacks['each_pre']) ? $callbacks['each_pre'] : '';
		$callback_min = $callbacks['each_min'] ?? 'concatener_callback_identite';
		$callback_pre = $callbacks['each_pre'] ?? '';
		$url_base = self('&');

		// on trie la liste de files pour calculer le nom
@@ -58,7 +58,7 @@ function concatener_fichiers($files, $format = 'js', $callbacks = []) {
		// si on renome une url a la volee pour enlever le var_mode=recalcul
		// mais attention, il faut garder l'ordre initial pour la minification elle meme !
		$dir = sous_repertoire(_DIR_VAR, 'cache-' . $format);
		list($nom_fichier, $lastmodified) = concatener_nom_fichier_concat($dir, $files, $callbacks, $format);
		[$nom_fichier, $lastmodified] = concatener_nom_fichier_concat($dir, $files, $callbacks, $format);
		if (
			(defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
			or !file_exists($nom_fichier)
@@ -129,14 +129,14 @@ function concatener_fichiers($files, $format = 'js', $callbacks = []) {
			// donc jamais utile
			if ($files2) {
				$files = $files2;
				list($nom_fichier, $lastmodified) = concatener_nom_fichier_concat($dir, $files, $callbacks, $format);
				[$nom_fichier, $lastmodified] = concatener_nom_fichier_concat($dir, $files, $callbacks, $format);
			}

			$nom_fichier_tmp = $nom_fichier;
			$final_callback = (isset($callbacks['all_min']) ? $callbacks['all_min'] : false);
			$final_callback = ($callbacks['all_min'] ?? false);
			if ($final_callback) {
				unset($callbacks['all_min']);
				list($nom_fichier_tmp, $lastmodified) = concatener_nom_fichier_concat($dir, $files, $callbacks, $format);
				[$nom_fichier_tmp, $lastmodified] = concatener_nom_fichier_concat($dir, $files, $callbacks, $format);
			}
			// ecrire
			ecrire_fichier_calcule_si_modifie($nom_fichier_tmp, $concatenation);
@@ -186,7 +186,7 @@ function concatener_nom_fichier_concat($dir, $files, $callbacks, $format) {
		}
		$file_wo_timestamp[] = $file;
	}
	$nom_fichier_concat = $dir . md5(json_encode($file_wo_timestamp) . json_encode($callbacks)) . ".$format";
	$nom_fichier_concat = $dir . md5(json_encode($file_wo_timestamp, JSON_THROW_ON_ERROR) . json_encode($callbacks, JSON_THROW_ON_ERROR)) . ".$format";
	return [$nom_fichier_concat, $lastmodified];
}

+2 −4
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -38,7 +38,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 **/
function compresseur_embarquer_images_css($contenu, $source, $source_file = null) {
	#$path = suivre_lien(url_absolue($source),'./');
	$base = ($source_file ? $source_file : $source);
	$base = ($source_file ?: $source);
	$base = ((substr($base, -1) == '/') ? $base : (dirname($base) . '/'));
	$filtre_embarque_fichier = chercher_filtre('filtre_embarque_fichier');
	if (!defined('_CSS_EMBARQUE_FICHIER_MAX_SIZE')) {
@@ -47,9 +47,7 @@ function compresseur_embarquer_images_css($contenu, $source, $source_file = null

	return preg_replace_callback(
		",url\s*\(\s*['\"]?([^'\"/][^:]*[.](png|gif|jpg))['\"]?\s*\),Uims",
		function ($x) use ($filtre_embarque_fichier, $base) {
			return 'url("' . $filtre_embarque_fichier($x[1], $base, _CSS_EMBARQUE_FICHIER_MAX_SIZE) . '")';
		},
		fn($x) => 'url("' . $filtre_embarque_fichier($x[1], $base, _CSS_EMBARQUE_FICHIER_MAX_SIZE) . '")',
		$contenu
	);
}
+9 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -23,10 +23,10 @@ $ok = true;
include_spip('inc/compresseur_minifier');
include_spip('inc/filtres');

lire_fichier(dirname(__FILE__) . '/css/source.css', $css_code);
lire_fichier(__DIR__ . '/css/source.css', $css_code);

// test du compacteur simple
lire_fichier(dirname(__FILE__) . '/css/expected.css', $expected);
lire_fichier(__DIR__ . '/css/expected.css', $expected);

$compacte = minifier_css($css_code);
if (rtrim($compacte) != rtrim($expected)) {
@@ -42,14 +42,14 @@ if (rtrim($compacte) != rtrim($expected)) {
	$ok = false;
}

lire_fichier(dirname(__FILE__) . '/css/expected_more.css', $expected);
lire_fichier(__DIR__ . '/css/expected_more.css', $expected);
$compacte = minifier_css($css_code, array());
if (rtrim($compacte) != rtrim($expected)) {
	erreur('minifier_css(array())', $compacte, $expected);
	$ok = false;
}

lire_fichier(dirname(__FILE__) . '/css/expected_more_screen.css', $expected);
lire_fichier(__DIR__ . '/css/expected_more_screen.css', $expected);
$compacte = minifier_css($css_code, 'screen');
if (rtrim($compacte) != rtrim($expected)) {
	erreur("minifier_css('screen')", $compacte, $expected);
@@ -62,24 +62,24 @@ if (rtrim($compacte) != rtrim($expected)) {
	$ok = false;
}

lire_fichier(dirname(__FILE__) . '/css/expected_highest_screen.css', $expected);
lire_fichier(__DIR__ . '/css/expected_highest_screen.css', $expected);
$compacte = minifier_css($css_code, array('media' => 'screen', 'template' => 'highest'));
if (rtrim($compacte) != rtrim($expected)) {
	erreur("minifier_css(array('media'=>'screen','template'=>'highest'))", $compacte, $expected);
	$ok = false;
}

lire_fichier(dirname(__FILE__) . '/css/source_simple.css', $css_code);
lire_fichier(__DIR__ . '/css/source_simple.css', $css_code);

lire_fichier(dirname(__FILE__) . '/css/expected_simple.css', $expected);
lire_fichier(__DIR__ . '/css/expected_simple.css', $expected);
$compacte = minifier_css($css_code, 'screen');
if (rtrim($compacte) != rtrim($expected)) {
	erreur("minifier_css('screen')", $compacte, $expected);
	$ok = false;
}

lire_fichier(dirname(__FILE__) . '/css/expected_url_abs.css', $expected);
lire_fichier(dirname(__FILE__) . '/css/source_url_abs.css', $source);
lire_fichier(__DIR__ . '/css/expected_url_abs.css', $expected);
lire_fichier(__DIR__ . '/css/source_url_abs.css', $source);
$compacte = urls_absolues_css($source, 'http://example.org/squelettes/source.css');
if (rtrim($compacte) != rtrim($expected)) {
	erreur('urls_absolues_css()', $compacte, $expected);