Rector sur Compresseur pour PHP 7.4+, hors libs

issue_4843
Matthieu Marcillaud 2 years ago
parent 5ed83896da
commit ba7414109b

@ -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) {

@ -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;

@ -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];
}

@ -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
);
}

@ -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);

Loading…
Cancel
Save