Changeset 93609 in spip-zone


Ignore:
Timestamp:
Dec 13, 2015, 11:34:33 AM (5 years ago)
Author:
cedric@…
Message:

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

Location:
_core_/plugins/compresseur
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/compresseur/compresseur_fonctions.php

    r93293 r93609  
    1313/**
    1414 * Fonctions et filtres du compresseur
    15  * 
     15 *
    1616 * @package SPIP\Compresseur\Fonctions
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921$GLOBALS['spip_matrice']['compresseur_embarquer_images_css'] = 'inc/compresseur_embarquer.php';
    2022
    2123/**
    2224 * Minifier un fichier JS ou CSS
    23  * 
     25 *
    2426 * Si la source est un chemin, on retourne un chemin avec le contenu minifié
    2527 * dans _DIR_VAR/cache_$format/
     
    3032 *     Contenu à minifier ou chemin vers un fichier dont on veut minifier le contenu
    3133 * @param string $format
    32  *     Format de la source (js|css). 
     34 *     Format de la source (js|css).
    3335 * @return string
    3436 *     - Contenu minifié (si la source est un contenu)
     
    3638 */
    3739function minifier($source, $format = null) {
    38         if (!$format AND preg_match(',\.(js|css)$,', $source, $r))
     40        if (!$format AND preg_match(',\.(js|css)$,', $source, $r)) {
    3941                $format = $r[1];
     42        }
    4043        include_spip('inc/compresseur_minifier');
    41         if (!function_exists($minifier = 'minifier_'.$format))
     44        if (!function_exists($minifier = 'minifier_' . $format)) {
    4245                return $source;
     46        }
    4347
    4448        // Si on n'importe pas, est-ce un fichier ?
    4549        if (!preg_match(',[\s{}],', $source)
    46         AND preg_match(',\.'.$format.'$,i', $source, $r)
    47         AND file_exists($source)) {
     50                AND preg_match(',\.' . $format . '$,i', $source, $r)
     51                AND file_exists($source)
     52        ) {
    4853                // si c'est une css, il faut reecrire les url en absolu
    49         if ($format=='css')
    50                 $source = url_absolue_css($source);
    51 
    52                 $f = basename($source,'.'.$format);
    53                 $f = sous_repertoire (_DIR_VAR, 'cache-'.$format)
    54                 . preg_replace(",(.*?)(_rtl|_ltr)?$,","\\1-minify-"
    55                 . substr(md5("$source-minify"), 0,4) . "\\2", $f, 1)
    56                 . '.' . $format;
     54                if ($format == 'css') {
     55                        $source = url_absolue_css($source);
     56                }
     57
     58                $f = basename($source, '.' . $format);
     59                $f = sous_repertoire(_DIR_VAR, 'cache-' . $format)
     60                        . preg_replace(",(.*?)(_rtl|_ltr)?$,", "\\1-minify-"
     61                                . substr(md5("$source-minify"), 0, 4) . "\\2", $f, 1)
     62                        . '.' . $format;
    5763
    5864                if ((@filemtime($f) > @filemtime($source))
    59                 AND (!defined('_VAR_MODE') OR _VAR_MODE != 'recalcul'))
     65                        AND (!defined('_VAR_MODE') OR _VAR_MODE != 'recalcul')
     66                ) {
    6067                        return $f;
    61 
    62                 if (!lire_fichier($source, $contenu))
     68                }
     69
     70                if (!lire_fichier($source, $contenu)) {
    6371                        return $source;
     72                }
    6473
    6574                // traiter le contenu
     
    6776
    6877                // ecrire le fichier destination, en cas d'echec renvoyer la source
    69                 if (ecrire_fichier($f, $contenu, true))
     78                if (ecrire_fichier($f, $contenu, true)) {
    7079                        return $f;
    71                 else
     80                } else {
    7281                        return $source;
     82                }
    7383        }
    7484
     
    8191 *
    8292 * @deprecated Utiliser minifier()
    83  * 
     93 *
    8494 * @param string $source
    8595 * @param string $format
    8696 * @return string
    8797 */
    88 function compacte($source, $format = null){
     98function compacte($source, $format = null) {
    8999        return minifier($source, $format);
    90100}
     
    92102/**
    93103 * Compacte les éléments CSS et JS d'un <head> HTML
    94  * 
     104 *
    95105 * Cette fonction vérifie les réglages du site et traite le compactage
    96106 * des css et/ou js d'un <head>
    97  * 
     107 *
    98108 * Un fichier .gz est crée pour chaque, qui peut etre utilisé par apache
    99109 * et lui éviter de recompresser à chaque hit, avec les directives suivantes :
    100  * 
     110 *
    101111 * <IfModule mod_gzip.c>
    102112 * mod_gzip_on                   Yes
     
    108118 *
    109119 * @see compacte_head_files()
    110  * 
     120 *
    111121 * @param string $flux
    112122 *     Partie de contenu du head HTML
     
    114124 *     Partie de contenu du head HTML
    115125 */
    116 function compacte_head($flux){
     126function compacte_head($flux) {
    117127        include_spip('inc/compresseur');
    118         if (!defined('_INTERDIRE_COMPACTE_HEAD')){
     128        if (!defined('_INTERDIRE_COMPACTE_HEAD')) {
    119129                // dans l'espace prive on compacte toujours, c'est concu pour
    120                 if ((!test_espace_prive() AND $GLOBALS['meta']['auto_compress_css'] == 'oui') OR (test_espace_prive() AND !defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE')))
    121                         $flux = compacte_head_files($flux,'css');
    122                 if ((!test_espace_prive() AND $GLOBALS['meta']['auto_compress_js'] == 'oui') OR (test_espace_prive() AND !defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE')))
    123                         $flux = compacte_head_files($flux,'js');
    124         }
     130                if ((!test_espace_prive() AND $GLOBALS['meta']['auto_compress_css'] == 'oui') OR (test_espace_prive() AND !defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE'))) {
     131                        $flux = compacte_head_files($flux, 'css');
     132                }
     133                if ((!test_espace_prive() AND $GLOBALS['meta']['auto_compress_js'] == 'oui') OR (test_espace_prive() AND !defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE'))) {
     134                        $flux = compacte_head_files($flux, 'js');
     135                }
     136        }
     137
    125138        return $flux;
    126139}
     
    130143 *
    131144 * Une URI Scheme est de la forme data:xxx/yyy;base64,....
    132  * 
     145 *
    133146 * Experimental
    134147 *
    135148 * @filtre
    136  * 
     149 *
    137150 * @staticvar array $mime
    138151 *     Couples (extension de fichier => type myme)
     
    147160 *     URL du fichier sinon (la source)
    148161 */
    149 function filtre_embarque_fichier ($src, $base = "", $maxsize = 4096) {
     162function filtre_embarque_fichier($src, $base = "", $maxsize = 4096) {
    150163        static $mime = array();
    151         $extension = substr(strrchr($src,'.'),1);
     164        $extension = substr(strrchr($src, '.'), 1);
    152165        $filename = $base . $src;
    153166
    154167        if (!file_exists($filename)
    155                 OR filesize($filename)>$maxsize
    156                 OR !lire_fichier($filename, $contenu))
     168                OR filesize($filename) > $maxsize
     169                OR !lire_fichier($filename, $contenu)
     170        ) {
    157171                return $src;
    158 
    159         if (!isset($mime[$extension])){
    160                 if (isset($GLOBALS['tables_mime']) AND isset($GLOBALS['tables_mime'][$extension]))
     172        }
     173
     174        if (!isset($mime[$extension])) {
     175                if (isset($GLOBALS['tables_mime']) AND isset($GLOBALS['tables_mime'][$extension])) {
    161176                        $mime[$extension] = $GLOBALS['tables_mime'][$extension];
    162         }
    163         if (!isset($mime[$extension])){
    164                 if (!function_exists("sql_getfetsel"))
     177                }
     178        }
     179        if (!isset($mime[$extension])) {
     180                if (!function_exists("sql_getfetsel")) {
    165181                        include_spip("base/abstract_sql");
    166                 $mime[$extension] = sql_getfetsel('mime_type','spip_types_documents','extension='.sql_quote($extension));
     182                }
     183                $mime[$extension] = sql_getfetsel('mime_type', 'spip_types_documents', 'extension=' . sql_quote($extension));
    167184        }
    168185
    169186        $base64 = base64_encode($contenu);
    170         $encoded = 'data:'.$mime[$extension].';base64,'.$base64;
     187        $encoded = 'data:' . $mime[$extension] . ';base64,' . $base64;
    171188
    172189        return $encoded;
     
    186203 *     Code HTML de l'image, avec la source en URI Scheme si cela a été possible.
    187204 */
    188 function filtre_embarque_src ($img, $maxsize = 4096){
    189         $src = extraire_attribut($img,'src');
    190         if ($src2=filtre_embarque_fichier($src, "", $maxsize) AND $src2!= $src) {
     205function filtre_embarque_src($img, $maxsize = 4096) {
     206        $src = extraire_attribut($img, 'src');
     207        if ($src2 = filtre_embarque_fichier($src, "", $maxsize) AND $src2 != $src) {
    191208                $img = inserer_attribut($img, 'src', $src2);
    192209        }
     210
    193211        return $img;
    194212}
     213
    195214?>
  • _core_/plugins/compresseur/compresseur_ieconfig.php

    r78985 r93609  
    33/**
    44 * Déclarations des configurations qui peuvent être sauvegardées
    5  * 
     5 *
    66 * @package SPIP\Compresseur\Pipelines
    7 **/
    8 if (!defined("_ECRIRE_INC_VERSION")) return;
     7 **/
     8if (!defined("_ECRIRE_INC_VERSION")) {
     9        return;
     10}
    911
    1012/**
     
    1517 * @param array $table
    1618 *     Déclaration des sauvegardes
    17  * @return array 
     19 * @return array
    1820 *     Déclaration des sauvegardes complétées
    19 **/
    20 function compresseur_ieconfig_metas($table){
     21 **/
     22function compresseur_ieconfig_metas($table) {
    2123        $table['compresseur']['titre'] = _T('compresseur:info_compresseur_titre');
    2224        $table['compresseur']['icone'] = 'compresseur-16.png';
    2325        $table['compresseur']['metas_brutes'] = 'auto_compress_js,auto_compress_css,auto_compress_closure';
    24        
     26
    2527        return $table;
    2628}
  • _core_/plugins/compresseur/compresseur_options.php

    r65093 r93609  
    1515if ($GLOBALS['flag_ob']
    1616        AND defined('_AUTO_GZIP_HTTP') AND _AUTO_GZIP_HTTP
    17         AND strlen(ob_get_contents())==0
    18         AND !headers_sent()) {
     17        AND strlen(ob_get_contents()) == 0
     18        AND !headers_sent()
     19) {
    1920
    2021        if (
    21         // special bug de proxy
    22         !(isset($_SERVER['HTTP_VIA']) AND preg_match(",NetCache|Hasd_proxy,i", $_SERVER['HTTP_VIA']))
    23         // special bug Netscape Win 4.0x
    24         AND (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.0') === false)
    25         // special bug Apache2x
    26         #&& !preg_match(",Apache(-[^ ]+)?/2,i", $_SERVER['SERVER_SOFTWARE'])
    27         // test suspendu: http://article.gmane.org/gmane.comp.web.spip.devel/32038/
    28         #&& !($GLOBALS['flag_sapi_name'] AND preg_match(",^apache2,", @php_sapi_name()))
    29         // si la compression est deja commencee, stop
    30         # && !@ini_get("zlib.output_compression")
    31         AND !@ini_get("output_handler")
    32         AND !isset($_GET['var_mode']) # bug avec le debugueur qui appelle ob_end_clean()
    33         )
     22                // special bug de proxy
     23                !(isset($_SERVER['HTTP_VIA']) AND preg_match(",NetCache|Hasd_proxy,i", $_SERVER['HTTP_VIA']))
     24                // special bug Netscape Win 4.0x
     25                AND (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.0') === false)
     26                // special bug Apache2x
     27                #&& !preg_match(",Apache(-[^ ]+)?/2,i", $_SERVER['SERVER_SOFTWARE'])
     28                // test suspendu: http://article.gmane.org/gmane.comp.web.spip.devel/32038/
     29                #&& !($GLOBALS['flag_sapi_name'] AND preg_match(",^apache2,", @php_sapi_name()))
     30                // si la compression est deja commencee, stop
     31                # && !@ini_get("zlib.output_compression")
     32                AND !@ini_get("output_handler")
     33                AND !isset($_GET['var_mode']) # bug avec le debugueur qui appelle ob_end_clean()
     34        ) {
    3435                ob_start('ob_gzhandler');
     36        }
    3537}
  • _core_/plugins/compresseur/compresseur_pipeline.php

    r89285 r93609  
    1313/**
    1414 * Fonctions et filtres du compresseur
    15  * 
     15 *
    1616 * @package SPIP\Compresseur\Pipelines
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
    2123 * Compression des JS et CSS de l'espace privé
    22  * 
     24 *
    2325 * @pipeline header_prive
    2426 * @see compacte_head()
    25  * 
     27 *
    2628 * @param string $flux
    2729 *     Partie de contenu du head HTML de l'espace privé
     
    2931 *     Partie de contenu du head HTML de l'espace privé
    3032 */
    31 function compresseur_header_prive($flux){
     33function compresseur_header_prive($flux) {
    3234        include_spip('compresseur_fonctions');
     35
    3336        return compacte_head($flux);
    3437}
     
    4043 * Injecter l'appel au compresseur sous la forme de filtre
    4144 * pour intervenir sur l'ensemble du head du squelette public
    42  * 
     45 *
    4346 * @pipeline insert_head
    4447 * @see compacte_head()
    45  * 
     48 *
    4649 * @param string $flux
    4750 *     Partie de contenu du head HTML de l'espace public
     
    4952 *     Partie de contenu du head HTML de l'espace public
    5053 */
    51 function compresseur_insert_head($flux){
     54function compresseur_insert_head($flux) {
    5255        $flux .= '<'
    53                 .'?php header("X-Spip-Filtre: '
    54                 .'compacte_head'
    55                 .'"); ?'.'>';
     56                . '?php header("X-Spip-Filtre: '
     57                . 'compacte_head'
     58                . '"); ?' . '>';
     59
    5660        return $flux;
    5761}
     
    6165 *
    6266 * @pipeline affiche_milieu
    63  * 
    64  * @param string $flux  Données du pipeline
     67 *
     68 * @param string $flux Données du pipeline
    6569 * @return string       Données du pipeline
    6670 */
    67 function compresseur_affiche_milieu($flux){
    68        
    69         if ($flux['args']['exec']=='configurer_avancees'){
    70                         // Compression http et compactages CSS ou JS
    71                         $flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_compresseur'));
     71function compresseur_affiche_milieu($flux) {
     72
     73        if ($flux['args']['exec'] == 'configurer_avancees') {
     74                // Compression http et compactages CSS ou JS
     75                $flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer',
     76                        array('configurer' => 'configurer_compresseur'));
    7277        }
    7378
     
    8489 *    Couples nom de la méta => valeur par défaut
    8590 */
    86 function compresseur_configurer_liste_metas($metas){
    87         $metas['auto_compress_js']='non';
    88         $metas['auto_compress_closure']='non';
    89         $metas['auto_compress_css']='non';
     91function compresseur_configurer_liste_metas($metas) {
     92        $metas['auto_compress_js'] = 'non';
     93        $metas['auto_compress_closure'] = 'non';
     94        $metas['auto_compress_css'] = 'non';
     95
    9096        return $metas;
    9197}
  • _core_/plugins/compresseur/formulaires/configurer_compresseur.php

    r89285 r93609  
    1515 *
    1616 * @package SPIP\Compresseur\Formulaires
    17 **/
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     17 **/
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
     
    2325 * @return array
    2426 *     Environnement du formulaire
    25 **/
    26 function formulaires_configurer_compresseur_charger_dist(){
     27 **/
     28function formulaires_configurer_compresseur_charger_dist() {
    2729
    2830        $valeurs = array();
     
    3133        $valeurs['auto_compress_css'] = $GLOBALS['meta']['auto_compress_css'];
    3234        $valeurs['auto_compress_closure'] = $GLOBALS['meta']['auto_compress_closure'];
    33        
     35
    3436        return $valeurs;
    35        
     37
    3638}
    3739
     
    4143 * @return array
    4244 *     Tableau des erreurs
    43 **/
    44 function formulaires_configurer_compresseur_verifier_dist(){
     45 **/
     46function formulaires_configurer_compresseur_verifier_dist() {
    4547        $erreurs = array();
    46        
     48
    4749        // les checkbox
    48         foreach(array('auto_compress_js','auto_compress_css', 'auto_compress_closure') as $champ)
    49                 if (_request($champ)!='oui')
    50                         set_request($champ,'non');
    51                
     50        foreach (array('auto_compress_js', 'auto_compress_css', 'auto_compress_closure') as $champ) {
     51                if (_request($champ) != 'oui') {
     52                        set_request($champ, 'non');
     53                }
     54        }
     55
    5256        return $erreurs;
    5357}
     
    5862 * @return array
    5963 *     Retours du traitement
    60 **/
    61 function formulaires_configurer_compresseur_traiter_dist(){
     64 **/
     65function formulaires_configurer_compresseur_traiter_dist() {
    6266        include_spip('inc/config');
    6367        appliquer_modifs_config();
    64        
    65         return array('message_ok'=>_T('config_info_enregistree'));
     68
     69        return array('message_ok' => _T('config_info_enregistree'));
    6670}
    6771
  • _core_/plugins/compresseur/inc/compresseur.php

    r93293 r93609  
    1313/**
    1414 * Fonctions d'aide pour le compresseur
    15  * 
     15 *
    1616 * @package SPIP\Compresseur\Fonctions
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
    2123 * Ecrire la balise javascript pour insérer le fichier compressé
    22  * 
     24 *
    2325 * C'est cette fonction qui décide où il est le plus pertinent
    2426 * d'insérer le fichier, et dans quelle forme d'ecriture
     
    3537 *   Code HTML de la balise <script>
    3638 */
    37 function compresseur_ecrire_balise_js_dist(&$flux, $pos, $src, $comments = ""){
     39function compresseur_ecrire_balise_js_dist(&$flux, $pos, $src, $comments = "") {
    3840        $src = timestamp($src);
    3941        // option chargement JS async par jQl
    40         if (defined('_JS_ASYNC_LOAD') AND !test_espace_prive()){
     42        if (defined('_JS_ASYNC_LOAD') AND !test_espace_prive()) {
    4143                lire_fichier(find_in_path("lib/jQl/jQl.min.js"), $jQl);
    42                 if ($jQl){
     44                if ($jQl) {
    4345                        $comments .= "<script type='text/javascript'>\n$jQl\njQl.loadjQ('$src')\n</script>";
    44                 }else{
     46                } else {
    4547                        $comments .= "<script type='text/javascript' src='$src'></script>";
    4648                }
    47         }else{
     49        } else {
    4850                $comments .= "<script type='text/javascript' src='$src'></script>";
    4951        }
    5052
    51   $flux = substr_replace($flux,$comments,$pos,0);
    52   return $flux;
     53        $flux = substr_replace($flux, $comments, $pos, 0);
     54
     55        return $flux;
    5356}
    5457
    5558/**
    5659 * Ecrire la balise CSS pour insérer le fichier compressé
    57  * 
     60 *
    5861 * C'est cette fonction qui décide ou il est le plus pertinent
    5962 * d'insérer le fichier, et dans quelle forme d'écriture
     
    7275 *   Code HTML de la balise <link>
    7376 */
    74 function compresseur_ecrire_balise_css_dist(&$flux, $pos, $src, $comments = "", $media = ""){
     77function compresseur_ecrire_balise_css_dist(&$flux, $pos, $src, $comments = "", $media = "") {
    7578        $src = timestamp($src);
    76         $comments .= "<link rel='stylesheet'".($media?" media='$media'":"")." href='$src' type='text/css' />";
     79        $comments .= "<link rel='stylesheet'" . ($media ? " media='$media'" : "") . " href='$src' type='text/css' />";
    7780        // Envoyer aussi un entete http pour demarer le chargement de la CSS plus tot
    7881        // Link: <http://href.here/to/resource.html>;rel="stylesheet prefetch"
    79         $comments .= "<"."?php header('Link: <$src>;rel=\"stylesheet prefetch\"'); ?>";
    80   $flux = substr_replace($flux,$comments,$pos,0);
     82        $comments .= "<" . "?php header('Link: <$src>;rel=\"stylesheet prefetch\"'); ?>";
     83        $flux = substr_replace($flux, $comments, $pos, 0);
     84
    8185        return $flux;
    8286}
     
    8488/**
    8589 * Extraire les balises CSS à compacter
    86  * 
     90 *
    8791 * @param string $flux
    8892 *     Contenu HTML dont on extrait les balises CSS
     
    9195 *     Couples (balise => src)
    9296 */
    93 function compresseur_extraire_balises_css_dist($flux, $url_base){
    94         $balises = extraire_balises($flux,'link');
     97function compresseur_extraire_balises_css_dist($flux, $url_base) {
     98        $balises = extraire_balises($flux, 'link');
    9599        $files = array();
    96         foreach ($balises as $s){
     100        foreach ($balises as $s) {
    97101                if (extraire_attribut($s, 'rel') === 'stylesheet'
    98102                        AND (!($type = extraire_attribut($s, 'type'))
     
    101105                        AND is_null(extraire_attribut($s, 'id'))   # idem
    102106                        AND !strlen(strip_tags($s))
    103                         AND $src = preg_replace(",^$url_base,",_DIR_RACINE,extraire_attribut($s, 'href')))
     107                        AND $src = preg_replace(",^$url_base,", _DIR_RACINE, extraire_attribut($s, 'href'))
     108                ) {
    104109                        $files[$s] = $src;
    105         }
     110                }
     111        }
     112
    106113        return $files;
    107114}
     
    109116/**
    110117 * Extraire les balises JS à compacter
    111  * 
     118 *
    112119 * @param string $flux
    113120 *     Contenu HTML dont on extrait les balises CSS
     
    116123 *     Couples (balise => src)
    117124 */
    118 function compresseur_extraire_balises_js_dist($flux, $url_base){
    119         $balises = extraire_balises($flux,'script');
     125function compresseur_extraire_balises_js_dist($flux, $url_base) {
     126        $balises = extraire_balises($flux, 'script');
    120127        $files = array();
    121         foreach ($balises as $s){
     128        foreach ($balises as $s) {
    122129                if (extraire_attribut($s, 'type') === 'text/javascript'
    123130                        AND is_null(extraire_attribut($s, 'id')) # script avec un id : pas touche
    124131                        AND $src = extraire_attribut($s, 'src')
    125                         AND !strlen(strip_tags($s)))
     132                        AND !strlen(strip_tags($s))
     133                ) {
    126134                        $files[$s] = $src;
    127         }
     135                }
     136        }
     137
    128138        return $files;
    129139}
     
    146156        $url_base = url_de_base();
    147157        $url_page = substr(generer_url_public('A'), 0, -1);
    148         $dir = preg_quote($url_page,',').'|'.preg_quote(preg_replace(",^$url_base,",_DIR_RACINE,$url_page),',');
    149 
    150         if (!$extraire_balises = charger_fonction("compresseur_extraire_balises_$format",'',true))
     158        $dir = preg_quote($url_page, ',') . '|' . preg_quote(preg_replace(",^$url_base,", _DIR_RACINE, $url_page), ',');
     159
     160        if (!$extraire_balises = charger_fonction("compresseur_extraire_balises_$format", '', true)) {
    151161                return $flux;
     162        }
    152163
    153164        $files = array();
    154         $flux_nocomment = preg_replace(",<!--.*-->,Uims","",$flux);
    155         foreach ($extraire_balises($flux_nocomment, $url_base) as $s=>$src) {
     165        $flux_nocomment = preg_replace(",<!--.*-->,Uims", "", $flux);
     166        foreach ($extraire_balises($flux_nocomment, $url_base) as $s => $src) {
    156167                if (
    157                         preg_match(',^('.$dir.')(.*)$,', $src, $r)
     168                        preg_match(',^(' . $dir . ')(.*)$,', $src, $r)
    158169                        OR (
    159170                                // ou si c'est un fichier
    160                                 $src = preg_replace(',^'.preg_quote(url_de_base(),',').',', '', $src)
     171                                $src = preg_replace(',^' . preg_quote(url_de_base(), ',') . ',', '', $src)
    161172                                // enlever un timestamp eventuel derriere un nom de fichier statique
    162                                 AND $src2 = preg_replace(",[.]{$format}[?].+$,",".$format",$src)
     173                                AND $src2 = preg_replace(",[.]{$format}[?].+$,", ".$format", $src)
    163174                                // verifier qu'il n'y a pas de ../ ni / au debut (securite)
    164                                 AND !preg_match(',(^/|\.\.),', substr($src,strlen(_DIR_RACINE)))
     175                                AND !preg_match(',(^/|\.\.),', substr($src, strlen(_DIR_RACINE)))
    165176                                // et si il est lisible
    166177                                AND @is_readable($src2)
    167178                        )
    168179                ) {
    169                         if ($r)
     180                        if ($r) {
    170181                                $files[$s] = explode('&', str_replace('&amp;', '&', $r[2]), 2);
    171                         else
     182                        } else {
    172183                                $files[$s] = $src;
    173                 }
    174         }
    175 
    176         $callbacks = array('each_min'=>'callback_minifier_'.$format.'_file');
    177 
    178         if ($format=="css"){
     184                        }
     185                }
     186        }
     187
     188        $callbacks = array('each_min' => 'callback_minifier_' . $format . '_file');
     189
     190        if ($format == "css") {
    179191                $callbacks['each_pre'] = 'compresseur_callback_prepare_css';
    180192                $callbacks['all_min'] = 'css_regroup_atimport';
     
    185197                $callbacks[] = protocole_implicite($url_base);
    186198        }
    187         if ($format=='js' AND $GLOBALS['meta']['auto_compress_closure']=='oui'){
     199        if ($format == 'js' AND $GLOBALS['meta']['auto_compress_closure'] == 'oui') {
    188200                $callbacks['all_min'] = 'minifier_encore_js';
    189201        }
     
    191203        include_spip('inc/compresseur_concatener');
    192204        include_spip('inc/compresseur_minifier');
    193         if (list($src,$comms) = concatener_fichiers($files, $format, $callbacks)
    194                 AND $src){
    195                 $compacte_ecrire_balise = charger_fonction("compresseur_ecrire_balise_$format",'');
     205        if (list($src, $comms) = concatener_fichiers($files, $format, $callbacks)
     206                AND $src
     207        ) {
     208                $compacte_ecrire_balise = charger_fonction("compresseur_ecrire_balise_$format", '');
    196209                $files = array_keys($files);
    197210                // retrouver la position du premier fichier compacte
    198                 $pos = strpos($flux,reset($files));
     211                $pos = strpos($flux, reset($files));
    199212                // supprimer tous les fichiers compactes du flux
    200                 $flux = str_replace($files,"",$flux);
     213                $flux = str_replace($files, "", $flux);
    201214                // inserer la balise (deleguer a la fonction, en lui donnant le necessaire)
    202215                $flux = $compacte_ecrire_balise($flux, $pos, $src, $comms);
     
    210223 * Lister les fonctions de préparation des feuilles css
    211224 * avant minification
    212  * 
     225 *
    213226 * @return array
    214227 *     Liste des fonctions à appliquer sur les feuilles CSS
    215228 */
    216 function compresseur_liste_fonctions_prepare_css(){
     229function compresseur_liste_fonctions_prepare_css() {
    217230        static $fonctions = null;
    218231
    219         if (is_null($fonctions)){
    220                 $fonctions = array('css_resolve_atimport','urls_absolues_css');
     232        if (is_null($fonctions)) {
     233                $fonctions = array('css_resolve_atimport', 'urls_absolues_css');
    221234                // les fonctions de preparation aux CSS peuvent etre personalisees
    222235                // via la globale $compresseur_filtres_css sous forme de tableau de fonctions ordonnees
    223                 if (isset($GLOBALS['compresseur_filtres_css']) AND is_array($GLOBALS['compresseur_filtres_css']))
    224                         $fonctions = $GLOBALS['compresseur_filtres_css'] + $fonctions;
    225         }
     236                if (isset($GLOBALS['compresseur_filtres_css']) AND is_array($GLOBALS['compresseur_filtres_css'])) {
     237                        $fonctions = $GLOBALS['compresseur_filtres_css']+$fonctions;
     238                }
     239        }
     240
    226241        return $fonctions;
    227242}
     
    230245/**
    231246 * Préparer un fichier CSS avant sa minification
    232  * 
     247 *
    233248 * @param string $css
    234249 * @param bool|string $is_inline
     
    237252 */
    238253function &compresseur_callback_prepare_css(&$css, $is_inline = false, $fonctions = null) {
    239         if ($is_inline) return compresseur_callback_prepare_css_inline($css,$is_inline);
    240         if (!preg_match(',\.css$,i', $css, $r)) return $css;
     254        if ($is_inline) {
     255                return compresseur_callback_prepare_css_inline($css, $is_inline);
     256        }
     257        if (!preg_match(',\.css$,i', $css, $r)) {
     258                return $css;
     259        }
    241260
    242261        $url_absolue_css = url_absolue($css);
     
    244263        $url_absolue_css_implicite = protocole_implicite($url_absolue_css);
    245264
    246         if (!$fonctions) $fonctions = compresseur_liste_fonctions_prepare_css();
    247         elseif (is_string($fonctions)) $fonctions = array($fonctions);
    248 
    249         $sign = implode(",",$fonctions);
    250         $sign = substr(md5("$url_absolue_css_implicite-$sign"), 0,8);
    251 
    252         $file = basename($css,'.css');
    253         $file = sous_repertoire (_DIR_VAR, 'cache-css')
    254                 . preg_replace(",(.*?)(_rtl|_ltr)?$,","\\1-f-" . $sign . "\\2",$file)
     265        if (!$fonctions) {
     266                $fonctions = compresseur_liste_fonctions_prepare_css();
     267        } elseif (is_string($fonctions)) {
     268                $fonctions = array($fonctions);
     269        }
     270
     271        $sign = implode(",", $fonctions);
     272        $sign = substr(md5("$url_absolue_css_implicite-$sign"), 0, 8);
     273
     274        $file = basename($css, '.css');
     275        $file = sous_repertoire(_DIR_VAR, 'cache-css')
     276                . preg_replace(",(.*?)(_rtl|_ltr)?$,", "\\1-f-" . $sign . "\\2", $file)
    255277                . '.css';
    256278
    257279        if ((@filemtime($file) > @filemtime($css))
    258                 AND (!defined('_VAR_MODE') OR _VAR_MODE != 'recalcul'))
     280                AND (!defined('_VAR_MODE') OR _VAR_MODE != 'recalcul')
     281        ) {
    259282                return $file;
    260 
    261         if ($url_absolue_css==$css){
    262                 if (strncmp($GLOBALS['meta']['adresse_site']."/",$css,$l=strlen($GLOBALS['meta']['adresse_site']."/"))!=0
    263                  OR !lire_fichier(_DIR_RACINE . substr($css,$l), $contenu)){
    264                                 include_spip('inc/distant');
    265                                 if (!$contenu = recuperer_page($css))
    266                                         return $css;
    267                 }
    268         }
    269         elseif (!lire_fichier($css, $contenu))
     283        }
     284
     285        if ($url_absolue_css == $css) {
     286                if (strncmp($GLOBALS['meta']['adresse_site'] . "/", $css, $l = strlen($GLOBALS['meta']['adresse_site'] . "/")) != 0
     287                        OR !lire_fichier(_DIR_RACINE . substr($css, $l), $contenu)
     288                ) {
     289                        include_spip('inc/distant');
     290                        if (!$contenu = recuperer_page($css)) {
     291                                return $css;
     292                        }
     293                }
     294        } elseif (!lire_fichier($css, $contenu)) {
    270295                return $css;
     296        }
    271297
    272298        $contenu = compresseur_callback_prepare_css_inline($contenu, $url_absolue_css_implicite, $css, $fonctions);
    273299
    274300        // ecrire la css
    275         if (!ecrire_fichier($file, $contenu))
     301        if (!ecrire_fichier($file, $contenu)) {
    276302                return $css;
     303        }
    277304
    278305        return $file;
     
    281308/**
    282309 * Préparer du contenu CSS inline avant minification
    283  * 
     310 *
    284311 * @param string $contenu
    285312 *   contenu de la CSS
     
    292319 * @return string
    293320 */
    294 function &compresseur_callback_prepare_css_inline(&$contenu, $url_base, $filename='', $fonctions = null) {
    295         if (!$fonctions) $fonctions = compresseur_liste_fonctions_prepare_css();
    296         elseif (is_string($fonctions)) $fonctions = array($fonctions);
     321function &compresseur_callback_prepare_css_inline(&$contenu, $url_base, $filename = '', $fonctions = null) {
     322        if (!$fonctions) {
     323                $fonctions = compresseur_liste_fonctions_prepare_css();
     324        } elseif (is_string($fonctions)) {
     325                $fonctions = array($fonctions);
     326        }
    297327
    298328        // retirer le protocole de $url_base
    299329        $url_base = protocole_implicite(url_absolue($url_base));
    300330
    301         foreach($fonctions as $f){
    302                 if (!function_exists($f)){
     331        foreach ($fonctions as $f) {
     332                if (!function_exists($f)) {
    303333                        $f = chercher_filtre($f);
    304334                }
    305                 if ($f AND function_exists($f)){
     335                if ($f AND function_exists($f)) {
    306336                        $contenu = $f($contenu, $url_base, $filename);
    307337                }
    308338        }
    309        
     339
    310340        return $contenu;
    311341}
     
    319349 * @return string
    320350 */
    321 function css_resolve_atimport($contenu, $url_base){
     351function css_resolve_atimport($contenu, $url_base) {
    322352        // vite si rien a faire
    323         if (strpos($contenu,"@import")===false)
     353        if (strpos($contenu, "@import") === false) {
    324354                return $contenu;
     355        }
    325356
    326357        $imports_non_resolvables = array();
    327         preg_match_all(",@import ([^;]*);,UmsS",$contenu,$matches,PREG_SET_ORDER);
    328 
    329         if ($matches AND count($matches)){
    330                 foreach($matches as $m){
     358        preg_match_all(",@import ([^;]*);,UmsS", $contenu, $matches, PREG_SET_ORDER);
     359
     360        if ($matches AND count($matches)) {
     361                foreach ($matches as $m) {
    331362                        $url = $media = $erreur = "";
    332                         if (preg_match(",^\s*url\s*\(\s*['\"]?([^'\"]*)['\"]?\s*\),Ums",$m[1],$r)){
     363                        if (preg_match(",^\s*url\s*\(\s*['\"]?([^'\"]*)['\"]?\s*\),Ums", $m[1], $r)) {
    333364                                $url = $r[1];
    334                                 $media = trim(substr($m[1],strlen($r[0])));
     365                                $media = trim(substr($m[1], strlen($r[0])));
     366                        } elseif (preg_match(",^\s*['\"]([^'\"]+)['\"],Ums", $m[1], $r)) {
     367                                $url = $r[1];
     368                                $media = trim(substr($m[1], strlen($r[0])));
    335369                        }
    336                         elseif(preg_match(",^\s*['\"]([^'\"]+)['\"],Ums",$m[1],$r)){
    337                                 $url = $r[1];
    338                                 $media = trim(substr($m[1],strlen($r[0])));
    339                         }
    340                         if (!$url){
    341                                 $erreur = "Compresseur : <tt>".$m[0].";</tt> non resolu dans <tt>$url_base</tt>";
    342                         }
    343                         else {
    344                                 $url = suivre_lien($url_base,$url);
     370                        if (!$url) {
     371                                $erreur = "Compresseur : <tt>" . $m[0] . ";</tt> non resolu dans <tt>$url_base</tt>";
     372                        } else {
     373                                $url = suivre_lien($url_base, $url);
    345374                                // url relative ?
    346                                 $root = protocole_implicite($GLOBALS['meta']['adresse_site']."/");
    347                                 if (strncmp($url,$root,strlen($root))==0){
    348                                         $url = _DIR_RACINE . substr($url,strlen($root));
    349                                 }
    350                                 else {
     375                                $root = protocole_implicite($GLOBALS['meta']['adresse_site'] . "/");
     376                                if (strncmp($url, $root, strlen($root)) == 0) {
     377                                        $url = _DIR_RACINE . substr($url, strlen($root));
     378                                } else {
    351379                                        // si l'url a un protocole http(s):// on ne considère qu'on ne peut pas
    352380                                        // résoudre le stockage. Par exemple
     
    366394                                        // soit aussi processe (@import, url absolue etc...)
    367395                                        $css = compresseur_callback_prepare_css($url);
    368                                         if ($css==$url
    369                                                 OR !lire_fichier($css,$contenu_imported)){
    370                                                 $erreur = "Compresseur : url $url de <tt>".$m[0].";</tt> non resolu dans <tt>$url_base</tt>";
    371                                         }
    372                                         else {
    373                                                 if ($media){
     396                                        if ($css == $url
     397                                                OR !lire_fichier($css, $contenu_imported)
     398                                        ) {
     399                                                $erreur = "Compresseur : url $url de <tt>" . $m[0] . ";</tt> non resolu dans <tt>$url_base</tt>";
     400                                        } else {
     401                                                if ($media) {
    374402                                                        $contenu_imported = "@media $media{\n$contenu_imported\n}\n";
    375403                                                }
    376                                                 $contenu = str_replace($m[0],$contenu_imported,$contenu);
     404                                                $contenu = str_replace($m[0], $contenu_imported, $contenu);
    377405                                        }
    378406                                }
    379407                        }
    380408
    381                         if ($erreur){
    382                                 $contenu = str_replace($m[0],"/* erreur @ import ".$m[1]."*/",$contenu);
     409                        if ($erreur) {
     410                                $contenu = str_replace($m[0], "/* erreur @ import " . $m[1] . "*/", $contenu);
    383411                                erreur_squelette($erreur);
    384412                        }
     
    396424 * @return bool|string
    397425 */
    398 function css_regroup_atimport($nom_tmp, $nom){
    399         lire_fichier($nom_tmp,$contenu);
    400         if (!$contenu OR strpos($contenu,"@import")===false) return false; // rien a faire
    401 
    402         preg_match_all(",@import ([^;]*);,UmsS",$contenu,$matches,PREG_SET_ORDER);
    403         $imports = array_map("reset",$matches);
    404         $contenu = str_replace($imports,"",$contenu);
    405         $contenu = implode("\n",$imports)."\n".$contenu;
    406         ecrire_fichier($nom,$contenu,true);
     426function css_regroup_atimport($nom_tmp, $nom) {
     427        lire_fichier($nom_tmp, $contenu);
     428        if (!$contenu OR strpos($contenu, "@import") === false) {
     429                return false;
     430        } // rien a faire
     431
     432        preg_match_all(",@import ([^;]*);,UmsS", $contenu, $matches, PREG_SET_ORDER);
     433        $imports = array_map("reset", $matches);
     434        $contenu = str_replace($imports, "", $contenu);
     435        $contenu = implode("\n", $imports) . "\n" . $contenu;
     436        ecrire_fichier($nom, $contenu, true);
    407437        // ecrire une version .gz pour content-negociation par apache, cf. [11539]
    408         ecrire_fichier("$nom.gz",$contenu,true);
     438        ecrire_fichier("$nom.gz", $contenu, true);
    409439
    410440        return $nom;
  • _core_/plugins/compresseur/inc/compresseur_concatener.php

    r93092 r93609  
    1313/**
    1414 * Fonctions pour concaténer plusieurs fichiers en un
    15  * 
     15 *
    1616 * @package SPIP\Compresseur\Concatener
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022
     
    2527 *
    2628 * Gestion d'un cache : le fichier concaténé n'est produit que si il n'existe pas
    27  * pour la liste de fichiers fournis en entrée 
     29 * pour la liste de fichiers fournis en entrée
    2830 *
    2931 *
     
    4244 *     Tableau a 2 entrées retournant le nom du fichier et des commentaires HTML à insérer dans la page initiale
    4345 */
    44 function concatener_fichiers($files, $format = 'js', $callbacks = array()){
     46function concatener_fichiers($files, $format = 'js', $callbacks = array()) {
    4547        $nom = "";
    46         if (!is_array($files) && $files) $files = array($files);
    47         if (count($files)){
    48                 $callback_min = isset($callbacks['each_min'])?$callbacks['each_min']:'concatener_callback_identite';
    49                 $callback_pre = isset($callbacks['each_pre'])?$callbacks['each_pre']:'';
    50           $url_base = self('&');
     48        if (!is_array($files) && $files) {
     49                $files = array($files);
     50        }
     51        if (count($files)) {
     52                $callback_min = isset($callbacks['each_min']) ? $callbacks['each_min'] : 'concatener_callback_identite';
     53                $callback_pre = isset($callbacks['each_pre']) ? $callbacks['each_pre'] : '';
     54                $url_base = self('&');
    5155
    5256                // on trie la liste de files pour calculer le nom
     
    5458                // si on renome une url a la volee pour enlever le var_mode=recalcul
    5559                // mais attention, il faut garder l'ordre initial pour la minification elle meme !
    56                 $dir = sous_repertoire(_DIR_VAR,'cache-'.$format);
    57                 $nom = $dir . md5(serialize($files).serialize($callbacks)) . ".$format";
     60                $dir = sous_repertoire(_DIR_VAR, 'cache-' . $format);
     61                $nom = $dir . md5(serialize($files) . serialize($callbacks)) . ".$format";
    5862                if (
    59                         (defined('_VAR_MODE') AND _VAR_MODE=='recalcul')
     63                        (defined('_VAR_MODE') AND _VAR_MODE == 'recalcul')
    6064                        OR !file_exists($nom)
    6165                ) {
     
    6468                        $total = 0;
    6569                        $files2 = false;
    66                         foreach($files as $key=>$file){
     70                        foreach ($files as $key => $file) {
    6771                                if (!is_array($file)) {
    6872                                        // c'est un fichier
    6973                                        $comm = $file;
    7074                                        // enlever le timestamp si besoin
    71                                         $file = preg_replace(",[?].+$,",'',$file);
     75                                        $file = preg_replace(",[?].+$,", '', $file);
    7276
    7377                                        // preparer le fichier si necessaire
    74                                         if ($callback_pre)
     78                                        if ($callback_pre) {
    7579                                                $file = $callback_pre($file);
    76                                        
     80                                        }
     81
    7782                                        lire_fichier($file, $contenu);
    78                                 }
    79                                 else {
     83                                } else {
    8084                                        // c'est un squelette
    81                                         if (!isset($file[1])) $file[1] = '';
     85                                        if (!isset($file[1])) {
     86                                                $file[1] = '';
     87                                        }
    8288                                        $comm = _SPIP_PAGE . "=$file[0]"
    83                                                 . (strlen($file[1])?"($file[1])":'');
    84                                         parse_str($file[1],$contexte);
    85                                         $contenu = recuperer_fond($file[0],$contexte);
     89                                                . (strlen($file[1]) ? "($file[1])" : '');
     90                                        parse_str($file[1], $contexte);
     91                                        $contenu = recuperer_fond($file[0], $contexte);
    8692
    8793                                        // preparer le contenu si necessaire
    88                                         if ($callback_pre)
    89                                                 $contenu = $callback_pre($contenu, url_absolue(_DIR_RESTREINT?generer_url_public($file[0],$file[1]):$url_base));
     94                                        if ($callback_pre) {
     95                                                $contenu = $callback_pre($contenu,
     96                                                        url_absolue(_DIR_RESTREINT ? generer_url_public($file[0], $file[1]) : $url_base));
     97                                        }
    9098                                        // enlever le var_mode si present pour retrouver la css minifiee standard
    91                                         if (strpos($file[1],'var_mode')!==false) {
    92                                                 if (!$files2) $files2 = $files;
     99                                        if (strpos($file[1], 'var_mode') !== false) {
     100                                                if (!$files2) {
     101                                                        $files2 = $files;
     102                                                }
    93103                                                $old_key = $key;
    94                                                 $key = preg_replace(',(&(amp;)?)?var_mode=[^&\'"]*,','',$key);
    95                                                 $file[1] = preg_replace(',&?var_mode=[^&\'"]*,','',$file[1]);
    96                                                 if (!strlen($file[1]))
     104                                                $key = preg_replace(',(&(amp;)?)?var_mode=[^&\'"]*,', '', $key);
     105                                                $file[1] = preg_replace(',&?var_mode=[^&\'"]*,', '', $file[1]);
     106                                                if (!strlen($file[1])) {
    97107                                                        unset($file[1]);
    98                                                 $files2 = array_replace_key($files2,$old_key,$key,$file);
     108                                                }
     109                                                $files2 = array_replace_key($files2, $old_key, $key, $file);
    99110                                        }
    100111                                }
    101112                                // passer la balise html initiale en second argument
    102                                 $fichier .= "/* $comm */\n". $callback_min($contenu, $key) . "\n\n";
     113                                $fichier .= "/* $comm */\n" . $callback_min($contenu, $key) . "\n\n";
    103114                                $comms[] = $comm;
    104115                                $total += strlen($contenu);
     
    107118                        // calcul du % de compactage
    108119                        $pc = intval(1000*strlen($fichier)/$total)/10;
    109                         $comms = "compact [\n\t".join("\n\t", $comms)."\n] $pc%";
    110                         $fichier = "/* $comms */\n\n".$fichier;
     120                        $comms = "compact [\n\t" . join("\n\t", $comms) . "\n] $pc%";
     121                        $fichier = "/* $comms */\n\n" . $fichier;
    111122
    112123                        // si on a nettoye des &var_mode=recalcul : mettre a jour le nom
     
    114125                        // donc jamais utile
    115126                        if ($files2) {
    116                                 $files=$files2;
    117                                 $nom = $dir . md5(serialize($files).serialize($callbacks)) . ".$format";
     127                                $files = $files2;
     128                                $nom = $dir . md5(serialize($files) . serialize($callbacks)) . ".$format";
    118129                        }
    119130
    120131                        $nom_tmp = $nom;
    121                   $final_callback = (isset($callbacks['all_min'])?$callbacks['all_min']:false);
    122                   if ($final_callback){
    123                           unset($callbacks['all_min']);
    124                     $nom_tmp = $dir . md5(serialize($files).serialize($callbacks)) . ".$format";
    125                   }
     132                        $final_callback = (isset($callbacks['all_min']) ? $callbacks['all_min'] : false);
     133                        if ($final_callback) {
     134                                unset($callbacks['all_min']);
     135                                $nom_tmp = $dir . md5(serialize($files) . serialize($callbacks)) . ".$format";
     136                        }
    126137                        // ecrire
    127                         ecrire_fichier($nom_tmp,$fichier,true);
    128                         spip_clearstatcache(true,$nom_tmp);
     138                        ecrire_fichier($nom_tmp, $fichier, true);
     139                        spip_clearstatcache(true, $nom_tmp);
    129140                        // ecrire une version .gz pour content-negociation par apache, cf. [11539]
    130                         ecrire_fichier("$nom_tmp.gz",$fichier,true);
    131 
    132                   if ($final_callback){
     141                        ecrire_fichier("$nom_tmp.gz", $fichier, true);
     142
     143                        if ($final_callback) {
    133144                                // closure compiler ou autre super-compresseurs
    134145                                // a appliquer sur le fichier final
    135146                                $encore = $final_callback($nom_tmp, $nom);
    136                     // si echec, on se contente de la compression sans cette callback
    137                           if ($encore!==$nom){
     147                                // si echec, on se contente de la compression sans cette callback
     148                                if ($encore !== $nom) {
    138149                                        // ecrire
    139                                         ecrire_fichier($nom,$fichier,true);
    140                                   spip_clearstatcache(true,$nom);
     150                                        ecrire_fichier($nom, $fichier, true);
     151                                        spip_clearstatcache(true, $nom);
    141152                                        // ecrire une version .gz pour content-negociation par apache, cf. [11539]
    142                                         ecrire_fichier("$nom.gz",$fichier,true);
    143                           }
    144                   }
     153                                        ecrire_fichier("$nom.gz", $fichier, true);
     154                                }
     155                        }
    145156                }
    146157
     
    157168 * Mais justement, par défaut on ne minifie rien !
    158169 *
    159  * @param string $contenu  Contenu à minifier
     170 * @param string $contenu Contenu à minifier
    160171 * @return string          Contenu à minifier
    161172 */
    162 function &concatener_callback_identite(&$contenu){
     173function &concatener_callback_identite(&$contenu) {
    163174        return $contenu;
    164175}
     
    168179 *
    169180 * @param array $tableau
    170  *     
     181 *
    171182 * @param string $orig_key
    172183 *     Index dont on cherche la valeur actuelle
     
    177188 *     de la valeur de la clé d'origine
    178189 * @return array
    179  *     
    180  */
    181 function &array_replace_key($tableau, $orig_key, $new_key, $new_value = null){
     190 *
     191 */
     192function &array_replace_key($tableau, $orig_key, $new_key, $new_value = null) {
    182193        $t = array();
    183         foreach($tableau as $k=>$v) {
    184                 if ($k==$orig_key) {
    185                         $k=$new_key;
     194        foreach ($tableau as $k => $v) {
     195                if ($k == $orig_key) {
     196                        $k = $new_key;
    186197                        if (!is_null($new_value)) {
    187198                                $v = $new_value;
     
    190201                $t[$k] = $v;
    191202        }
     203
    192204        return $t;
    193205}
  • _core_/plugins/compresseur/inc/compresseur_embarquer.php

    r93294 r93609  
    1313/**
    1414 * Fonctions pour embarquer des images dans un CSS
    15  * 
     15 *
    1616 * @package SPIP\Compresseur\Embarquer
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
     
    2527 *
    2628 * @see filtre_embarque_fichier()
    27  * 
     29 *
    2830 * @param string $contenu
    2931 *     Contenu d'un fichier CSS
     
    3436 * @return string
    3537 *     Contenu du fichier CSS avec les images embarquées
    36 **/
    37 function compresseur_embarquer_images_css($contenu, $source, $source_file=null){
     38 **/
     39function compresseur_embarquer_images_css($contenu, $source, $source_file = null) {
    3840        #$path = suivre_lien(url_absolue($source),'./');
    39         $base = ($source_file?$source_file:$source);
    40         $base = ((substr($base,-1)=='/')?$base:(dirname($base).'/'));
     41        $base = ($source_file ? $source_file : $source);
     42        $base = ((substr($base, -1) == '/') ? $base : (dirname($base) . '/'));
    4143        $filtre_embarque_fichier = chercher_filtre("filtre_embarque_fichier");
    42         if (!defined("_CSS_EMBARQUE_FICHIER_MAX_SIZE")) define('_CSS_EMBARQUE_FICHIER_MAX_SIZE',4*1024);
     44        if (!defined("_CSS_EMBARQUE_FICHIER_MAX_SIZE")) {
     45                define('_CSS_EMBARQUE_FICHIER_MAX_SIZE', 4*1024);
     46        }
    4347
    4448        return preg_replace_callback(
    4549                ",url\s*\(\s*['\"]?([^'\"/][^:]*[.](png|gif|jpg))['\"]?\s*\),Uims",
    4650                create_function('$x',
    47                         'return "url(\"".'.$filtre_embarque_fichier.'($x[1],"'.$base.'",_CSS_EMBARQUE_FICHIER_MAX_SIZE)."\")";'
     51                        'return "url(\"".' . $filtre_embarque_fichier . '($x[1],"' . $base . '",_CSS_EMBARQUE_FICHIER_MAX_SIZE)."\")";'
    4852                ), $contenu);
    4953}
     
    5256/**
    5357 *
    54 Embarquer des images dans les css, tous nav :
    55 
    56 /*
    57 Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR"
    58 
    59 --_ANY_STRING_WILL_DO_AS_A_SEPARATOR
    60 Content-Location:chevron
    61 Content-Transfer-Encoding:base64
    62 
    63 iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEX///9mZmaO7mygAAAAEElEQVR42mNYwBDAoAHECwAKMgIJXa7xqgAAAABJRU5ErkJggg==
    64 
    65 --_ANY_STRING_WILL_DO_AS_A_SEPARATOR
    66 ...
    67 
    68 --_ANY_STRING_WILL_DO_AS_A_SEPARATOR
    69 * /
    70 
    71 Puis
    72 
    73 background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEX///9mZmaO7mygAAAAEElEQVR42mNYwBDAoAHECwAKMgIJXa7xqgAAAABJRU5ErkJggg==");
    74 *background-image:url(mhtml:urlfeuille.css!chevron)}
    75 
     58 * Embarquer des images dans les css, tous nav :
     59 *
     60 * /*
     61 * Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR"
     62 *
     63 * --_ANY_STRING_WILL_DO_AS_A_SEPARATOR
     64 * Content-Location:chevron
     65 * Content-Transfer-Encoding:base64
     66 *
     67 * iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEX///9mZmaO7mygAAAAEElEQVR42mNYwBDAoAHECwAKMgIJXa7xqgAAAABJRU5ErkJggg==
     68 *
     69 * --_ANY_STRING_WILL_DO_AS_A_SEPARATOR
     70 * ...
     71 *
     72 * --_ANY_STRING_WILL_DO_AS_A_SEPARATOR
     73 * /
     74 *
     75 * Puis
     76 *
     77 * background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEX///9mZmaO7mygAAAAEElEQVR42mNYwBDAoAHECwAKMgIJXa7xqgAAAABJRU5ErkJggg==");
     78 *background-image:url(mhtml:urlfeuille.css!chevron)}
    7679 *
    7780 */
  • _core_/plugins/compresseur/inc/compresseur_minifier.php

    r93092 r93609  
    1313/**
    1414 * Fonctions de minification
    15  * 
     15 *
    1616 * @package SPIP\Compresseur\Minifier
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
    2123 * Minifier un contenu CSS
    22  * 
     24 *
    2325 * Si $options est vide on utilise la methode regexp simple
    2426 *
     
    3436 *   les selecteurs sans media
    3537 * - string template : format de sortie parmi 'low','default','high','highest'
    36  * 
     38 *
    3739 * @param string $contenu
    3840 *     Contenu CSS
     
    4244 *     Contenu CSS minifié
    4345 */
    44 function minifier_css ($contenu, $options = '') {
    45         if (is_string($options) AND $options){
    46                 if ($options=="all") // facile : media all => ne rien preciser
     46function minifier_css($contenu, $options = '') {
     47        if (is_string($options) AND $options) {
     48                if ($options == "all") // facile : media all => ne rien preciser
     49                {
    4750                        $options = "";
    48                 elseif (
    49                                         strpos($contenu,"@media")==false
    50                         AND strpos($contenu,"@import")==false
    51                         AND strpos($contenu,"@font-face")==false
    52                         ){
     51                } elseif (
     52                        strpos($contenu, "@media") == false
     53                        AND strpos($contenu, "@import") == false
     54                        AND strpos($contenu, "@font-face") == false
     55                ) {
    5356                        $contenu = "@media $options {\n$contenu\n}\n";
    54                         $options="";
    55                 }
    56                 else
    57                         $options = array('media'=>$options);
    58         }
    59         if (!is_array($options)){
     57                        $options = "";
     58                } else {
     59                        $options = array('media' => $options);
     60                }
     61        }
     62        if (!is_array($options)) {
    6063
    6164                // nettoyer la css de tout ce qui sert pas
    6265                // pas de commentaires
    63                 $contenu = preg_replace(",/\*.*\*/,Ums","",$contenu);
    64                 $contenu = preg_replace(",\s//[^\n]*\n,Ums","",$contenu);
     66                $contenu = preg_replace(",/\*.*\*/,Ums", "", $contenu);
     67                $contenu = preg_replace(",\s//[^\n]*\n,Ums", "", $contenu);
    6568                // espaces autour des retour lignes
    66                 $contenu = str_replace("\r\n","\n",$contenu);
    67                 $contenu = preg_replace(",\s+\n,ms","\n",$contenu);
    68                 $contenu = preg_replace(",\n\s+,ms","\n",$contenu);
     69                $contenu = str_replace("\r\n", "\n", $contenu);
     70                $contenu = preg_replace(",\s+\n,ms", "\n", $contenu);
     71                $contenu = preg_replace(",\n\s+,ms", "\n", $contenu);
    6972                // pas d'espaces consecutifs
    70                 $contenu = preg_replace(",\s(?=\s),Ums","",$contenu);
     73                $contenu = preg_replace(",\s(?=\s),Ums", "", $contenu);
    7174                // pas d'espaces avant et apres { ; ,
    72                 $contenu = preg_replace("/\s?({|;|,)\s?/ms","$1",$contenu);
     75                $contenu = preg_replace("/\s?({|;|,)\s?/ms", "$1", $contenu);
    7376                // supprimer les espaces devant : sauf si suivi d'une lettre (:after, :first...)
    74                 $contenu = preg_replace("/\s:([^a-z])/ims",":$1",$contenu);
     77                $contenu = preg_replace("/\s:([^a-z])/ims", ":$1", $contenu);
    7578                // supprimer les espaces apres :
    76                 $contenu = preg_replace("/:\s/ms",":",$contenu);
     79                $contenu = preg_replace("/:\s/ms", ":", $contenu);
    7780                // pas d'espaces devant }
    78                 $contenu = preg_replace("/\s}/ms","}",$contenu);
     81                $contenu = preg_replace("/\s}/ms", "}", $contenu);
    7982
    8083                // ni de point virgule sur la derniere declaration
    81                 $contenu = preg_replace("/;}/ms","}",$contenu);
     84                $contenu = preg_replace("/;}/ms", "}", $contenu);
    8285                // pas d'espace avant !important
    83                 $contenu = preg_replace("/\s!\s?important/ms","!important",$contenu);
     86                $contenu = preg_replace("/\s!\s?important/ms", "!important", $contenu);
    8487                // passser les codes couleurs en 3 car si possible
    8588                // uniquement si non precedees d'un [="'] ce qui indique qu'on est dans un filter(xx=#?...)
    86                 $contenu = preg_replace(";([:\s,(])#([0-9a-f])(\\2)([0-9a-f])(\\4)([0-9a-f])(\\6)(?=[^\w\-]);i","$1#$2$4$6",$contenu);
     89                $contenu = preg_replace(";([:\s,(])#([0-9a-f])(\\2)([0-9a-f])(\\4)([0-9a-f])(\\6)(?=[^\w\-]);i", "$1#$2$4$6",
     90                        $contenu);
    8791                // remplacer font-weight:bold par font-weight:700
    88                 $contenu = preg_replace("/font-weight:bold(?!er)/ims","font-weight:700",$contenu);
     92                $contenu = preg_replace("/font-weight:bold(?!er)/ims", "font-weight:700", $contenu);
    8993                // remplacer font-weight:normal par font-weight:400
    90                 $contenu = preg_replace("/font-weight:normal/ims","font-weight:400",$contenu);
     94                $contenu = preg_replace("/font-weight:normal/ims", "font-weight:400", $contenu);
    9195
    9296                // si elle est 0, enlever la partie entière des unites decimales
    93                 $contenu = preg_replace("/\b0+\.(\d+em)/ims",".$1",$contenu);
     97                $contenu = preg_replace("/\b0+\.(\d+em)/ims", ".$1", $contenu);
    9498                // supprimer les declarations vides
    95                 $contenu = preg_replace(",(^|})([^{}]*){},Ums","$1",$contenu);
     99                $contenu = preg_replace(",(^|})([^{}]*){},Ums", "$1", $contenu);
    96100                // zero est zero, quelle que soit l'unite (sauf pour % car casse les @keyframes cf https://core.spip.net/issues/3128)
    97                 $contenu = preg_replace("/([^0-9.]0)(em|px|pt)/ms","$1",$contenu);
     101                $contenu = preg_replace("/([^0-9.]0)(em|px|pt)/ms", "$1", $contenu);
    98102
    99103                // renommer les couleurs par leurs versions courtes quand c'est possible
    100104                $colors = array(
    101                         'source'=>array('black','fuchsia','white','yellow','#800000','#ffa500','#808000','#800080','#008000','#000080','#008080','#c0c0c0','#808080','#f00'),
    102                         'replace'=>array('#000' ,'#F0F'   ,'#FFF' ,'#FF0'  ,'maroon' ,'orange' ,'olive'  ,'purple' ,'green'  ,'navy'   ,'teal'   ,'silver' ,'gray'   ,'red')
     105                        'source' => array(
     106                                'black',
     107                                'fuchsia',
     108                                'white',
     109                                'yellow',
     110                                '#800000',
     111                                '#ffa500',
     112                                '#808000',
     113                                '#800080',
     114                                '#008000',
     115                                '#000080',
     116                                '#008080',
     117                                '#c0c0c0',
     118                                '#808080',
     119                                '#f00'
     120                        ),
     121                        'replace' => array(
     122                                '#000',
     123                                '#F0F',
     124                                '#FFF',
     125                                '#FF0',
     126                                'maroon',
     127                                'orange',
     128                                'olive',
     129                                'purple',
     130                                'green',
     131                                'navy',
     132                                'teal',
     133                                'silver',
     134                                'gray',
     135                                'red'
     136                        )
    103137                );
    104                 foreach($colors['source'] as $k=>$v){
    105                         $colors['source'][$k]=";([:\s,(])".$v."(?=[^\w\-]);ms";
    106                         $colors['replace'][$k] = "$1".$colors['replace'][$k];
    107                 }
    108                 $contenu = preg_replace($colors['source'],$colors['replace'],$contenu);
     138                foreach ($colors['source'] as $k => $v) {
     139                        $colors['source'][$k] = ";([:\s,(])" . $v . "(?=[^\w\-]);ms";
     140                        $colors['replace'][$k] = "$1" . $colors['replace'][$k];
     141                }
     142                $contenu = preg_replace($colors['source'], $colors['replace'], $contenu);
    109143
    110144                // raccourcir les padding qui le peuvent (sur 3 ou 2 valeurs)
    111                 $contenu = preg_replace(",padding:([^\s;}]+)\s([^\s;}]+)\s([^\s;}]+)\s(\\2),ims","padding:$1 $2 $3",$contenu);
    112                 $contenu = preg_replace(",padding:([^\s;}]+)\s([^\s;}]+)\s(\\1)([;}!]),ims","padding:$1 $2$4",$contenu);
     145                $contenu = preg_replace(",padding:([^\s;}]+)\s([^\s;}]+)\s([^\s;}]+)\s(\\2),ims", "padding:$1 $2 $3", $contenu);
     146                $contenu = preg_replace(",padding:([^\s;}]+)\s([^\s;}]+)\s(\\1)([;}!]),ims", "padding:$1 $2$4", $contenu);
    113147
    114148                // raccourcir les margin qui le peuvent (sur 3 ou 2 valeurs)
    115                 $contenu = preg_replace(",margin:([^\s;}]+)\s([^\s;}]+)\s([^\s;}]+)\s(\\2),ims","margin:$1 $2 $3",$contenu);
    116                 $contenu = preg_replace(",margin:([^\s;}]+)\s([^\s;}]+)\s(\\1)([;}!]),ims","margin:$1 $2$4",$contenu);
     149                $contenu = preg_replace(",margin:([^\s;}]+)\s([^\s;}]+)\s([^\s;}]+)\s(\\2),ims", "margin:$1 $2 $3", $contenu);
     150                $contenu = preg_replace(",margin:([^\s;}]+)\s([^\s;}]+)\s(\\1)([;}!]),ims", "margin:$1 $2$4", $contenu);
    117151
    118152                $contenu = trim($contenu);
    119153
    120154                return $contenu;
    121         }
    122         else {
     155        } else {
    123156                // compression avancee en utilisant csstidy
    124157                // beaucoup plus lent, mais necessaire pour placer des @media la ou il faut
     
    127160                // modele de sortie plus ou moins compact
    128161                $template = 'high';
    129                 if (isset($options['template']) AND in_array($options['template'],array('low','default','high','highest')))
     162                if (isset($options['template']) AND in_array($options['template'], array('low', 'default', 'high', 'highest'))) {
    130163                        $template = $options['template'];
     164                }
    131165                // @media eventuel pour prefixe toutes les css
    132166                // et regrouper plusieurs css entre elles
    133167                $media = "";
    134                 if (isset($options['media']))
    135                         $media = "@media ".$options['media']." ";
     168                if (isset($options['media'])) {
     169                        $media = "@media " . $options['media'] . " ";
     170                }
    136171
    137172                include_spip("lib/csstidy/class.csstidy");
     
    139174
    140175                // essayer d'optimiser les font, margin, padding avec des ecritures raccourcies
    141                 $css->set_cfg('optimise_shorthands',1);
    142                 $css->set_cfg('template',$template);
     176                $css->set_cfg('optimise_shorthands', 1);
     177                $css->set_cfg('template', $template);
    143178                $css->parse($contenu);
     179
    144180                return $css->print->plain($media);
    145181        }
     
    178214 */
    179215function minifier_js($flux) {
    180         if (!strlen($flux))
     216        if (!strlen($flux)) {
    181217                return $flux;
     218        }
    182219
    183220        include_spip('lib/JavascriptPacker/class.JavaScriptPacker');
     
    186223        // en cas d'echec (?) renvoyer l'original
    187224        if (!strlen($t = $packer->pack())) {
    188                 spip_log('erreur de minifier_js',_LOG_INFO_IMPORTANTE);
     225                spip_log('erreur de minifier_js', _LOG_INFO_IMPORTANTE);
     226
    189227                return $flux;
    190228        }
     229
    191230        return $t;
    192231}
     
    195234/**
    196235 * Minification additionnelle de JS
    197  * 
     236 *
    198237 * Compacter du javascript plus intensivement
    199238 * grâce au google closure compiler
     
    214253                $nom = $content;
    215254                lire_fichier($nom, $content);
    216                 $dest = dirname($nom).'/'.md5($content.$file).'.js';
    217                 if (file_exists($dest) AND (!is_string($file) OR file_exists($file)))
    218                         if (filesize($dest))
    219                                 return is_string($file)?$file:$dest;
    220                         else {
    221                                 spip_log("minifier_encore_js: Fichier $dest vide",_LOG_INFO);
     255                $dest = dirname($nom) . '/' . md5($content . $file) . '.js';
     256                if (file_exists($dest) AND (!is_string($file) OR file_exists($file))) {
     257                        if (filesize($dest)) {
     258                                return is_string($file) ? $file : $dest;
     259                        } else {
     260                                spip_log("minifier_encore_js: Fichier $dest vide", _LOG_INFO);
     261
    222262                                return $nom;
    223263                        }
    224         }
    225 
    226         if (!$file AND strlen($content)>200000)
     264                }
     265        }
     266
     267        if (!$file AND strlen($content) > 200000) {
    227268                return $content;
     269        }
    228270
    229271        include_spip('inc/distant');
    230272
    231         $datas=array(
     273        $datas = array(
    232274                'output_format' => 'text',
    233275                'output_info' => 'compiled_code',
    234                 'compilation_level' => 'SIMPLE_OPTIMIZATIONS', // 'SIMPLE_OPTIMIZATIONS', 'WHITESPACE_ONLY', 'ADVANCED_OPTIMIZATIONS'
     276                'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
     277                // 'SIMPLE_OPTIMIZATIONS', 'WHITESPACE_ONLY', 'ADVANCED_OPTIMIZATIONS'
    235278        );
    236         if (!$file OR strlen($content) < 200000)
     279        if (!$file OR strlen($content) < 200000) {
    237280                $datas['js_code'] = $content;
    238         else
     281        } else {
    239282                $datas['url_code'] = url_absolue($nom);
     283        }
    240284
    241285        $cc = recuperer_page('http://closure-compiler.appspot.com/compile',
    242                 $trans=false, $get_headers=false,
     286                $trans = false, $get_headers = false,
    243287                $taille_max = null,
    244288                $datas,
     
    247291        if ($cc AND !preg_match(',^\s*Error,', $cc)) {
    248292                spip_log('Closure Compiler: success');
    249                 $cc = "/* $nom + Closure Compiler */\n".$cc;
    250                 if ($file){
    251                         ecrire_fichier ($dest, $cc, true);
    252                         ecrire_fichier ("$dest.gz", $cc, true);
     293                $cc = "/* $nom + Closure Compiler */\n" . $cc;
     294                if ($file) {
     295                        ecrire_fichier($dest, $cc, true);
     296                        ecrire_fichier("$dest.gz", $cc, true);
    253297                        $content = $dest;
    254                   if (is_string($file)){
    255                           ecrire_fichier ($file, $cc, true);
    256                           spip_clearstatcache(true,$file);
    257                           ecrire_fichier ("$file.gz", $cc, true);
    258                     $content = $file;
    259                   }
    260                 }
    261                 else
     298                        if (is_string($file)) {
     299                                ecrire_fichier($file, $cc, true);
     300                                spip_clearstatcache(true, $file);
     301                                ecrire_fichier("$file.gz", $cc, true);
     302                                $content = $file;
     303                        }
     304                } else {
    262305                        $content = &$cc;
     306                }
    263307        } else {
    264                 if ($file){
    265                         spip_log("minifier_encore_js:Echec appel Closure Compiler. Ecriture fichier $dest vide",_LOG_INFO_IMPORTANTE);
    266                         ecrire_fichier ($dest, '', true);
    267                 }
    268         }
     308                if ($file) {
     309                        spip_log("minifier_encore_js:Echec appel Closure Compiler. Ecriture fichier $dest vide", _LOG_INFO_IMPORTANTE);
     310                        ecrire_fichier($dest, '', true);
     311                }
     312        }
     313
    269314        return $content;
    270315}
     
    273318/**
    274319 * Une callback applicable sur chaque balise link qui minifie un fichier CSS
    275  * 
     320 *
    276321 * @param string $contenu
    277322 * @param  string $balise
    278323 * @return string
    279324 */
    280 function callback_minifier_css_file($contenu, $balise){
    281         return minifier_css($contenu, extraire_attribut($balise,'media'));
     325function callback_minifier_css_file($contenu, $balise) {
     326        return minifier_css($contenu, extraire_attribut($balise, 'media'));
    282327}
    283328
    284329/**
    285330 * Une callback applicable sur chaque balise script qui minifie un JS
    286  * 
     331 *
    287332 * @param string $contenu
    288333 * @param  string $balise
    289334 * @return string
    290335 */
    291 function callback_minifier_js_file($contenu, $balise){
     336function callback_minifier_js_file($contenu, $balise) {
    292337        return minifier_js($contenu);
    293338}
     
    296341/**
    297342 * Minifier du HTML
    298  * 
    299  * @param string $flux  HTML à compresser
     343 *
     344 * @param string $flux HTML à compresser
    300345 * @return string       HTML compressé
    301346 */
    302 function minifier_html($flux){
     347function minifier_html($flux) {
    303348
    304349        // si pas de contenu ni de balise html, ne rien faire
    305         if (!strlen($flux) OR strpos($flux,"<")===FALSE)
     350        if (!strlen($flux) OR strpos($flux, "<") === false) {
    306351                return $flux;
     352        }
    307353
    308354        static $options = null;
    309         if (is_null($options)){
     355        if (is_null($options)) {
    310356                $options = array();
    311                 if ($GLOBALS['meta']['auto_compress_css'] == 'oui')
     357                if ($GLOBALS['meta']['auto_compress_css'] == 'oui') {
    312358                        $options['cssMinifier'] = 'minifier_css';
    313                 if ($GLOBALS['meta']['auto_compress_js'] == 'oui')
     359                }
     360                if ($GLOBALS['meta']['auto_compress_js'] == 'oui') {
    314361                        $options['jsMinifier'] = 'minifier_js';
     362                }
    315363                include_spip('lib/minify_html/class.minify_html');
    316364        }
    317365
    318         return Minify_HTML_SPIP::minify($flux,$options);
    319 }
     366        return Minify_HTML_SPIP::minify($flux, $options);
     367}
  • _core_/plugins/compresseur/tests/compacte_css.php

    r93092 r93609  
    66 */
    77
    8         $test = 'minifier_css';
    9         $remonte = "../";
    10         while (!is_dir($remonte."ecrire"))
    11                 $remonte = "../$remonte";
    12         require $remonte.'tests/test.inc';
    13         $ok = true;
     8$test = 'minifier_css';
     9$remonte = "../";
     10while (!is_dir($remonte . "ecrire")) {
     11        $remonte = "../$remonte";
     12}
     13require $remonte . 'tests/test.inc';
     14$ok = true;
    1415
    15         include_spip('inc/compresseur_minifier');
    16         include_spip('inc/filtres');
     16include_spip('inc/compresseur_minifier');
     17include_spip('inc/filtres');
    1718
    18         lire_fichier(dirname(__FILE__)."/css/source.css", $css_code);
     19lire_fichier(dirname(__FILE__) . "/css/source.css", $css_code);
    1920
    20         // test du compacteur simple
    21         lire_fichier(dirname(__FILE__)."/css/expected.css", $expected);
     21// test du compacteur simple
     22lire_fichier(dirname(__FILE__) . "/css/expected.css", $expected);
    2223
    23         $compacte = minifier_css($css_code);
    24         if (rtrim($compacte)!=rtrim($expected)) {
    25                 erreur("minifier_css()",$compacte,$expected);
    26                 $ok = false;
    27         }
     24$compacte = minifier_css($css_code);
     25if (rtrim($compacte) != rtrim($expected)) {
     26        erreur("minifier_css()", $compacte, $expected);
     27        $ok = false;
     28}
    2829
    29         // le compacteur simple doit donner le meme resultat
    30         // avec un media all
    31         $compacte = minifier_css($css_code,'all');
    32         if (rtrim($compacte)!=rtrim($expected)) {
    33                 erreur("minifier_css('all')",$compacte,$expected);
    34                 $ok = false;
    35         }
     30// le compacteur simple doit donner le meme resultat
     31// avec un media all
     32$compacte = minifier_css($css_code, 'all');
     33if (rtrim($compacte) != rtrim($expected)) {
     34        erreur("minifier_css('all')", $compacte, $expected);
     35        $ok = false;
     36}
    3637
    37         lire_fichier(dirname(__FILE__)."/css/expected_more.css", $expected);
    38         $compacte = minifier_css($css_code,array());
    39         if (rtrim($compacte)!=rtrim($expected)) {
    40                 erreur("minifier_css(array())",$compacte,$expected);
    41                 $ok = false;
    42         }
     38lire_fichier(dirname(__FILE__) . "/css/expected_more.css", $expected);
     39$compacte = minifier_css($css_code, array());
     40if (rtrim($compacte) != rtrim($expected)) {
     41        erreur("minifier_css(array())", $compacte, $expected);
     42        $ok = false;
     43}
    4344
    44         lire_fichier(dirname(__FILE__)."/css/expected_more_screen.css", $expected);
    45         $compacte = minifier_css($css_code,'screen');
    46         if (rtrim($compacte)!=rtrim($expected)) {
    47                 erreur("minifier_css('screen')",$compacte,$expected);
    48                 $ok = false;
    49         }
     45lire_fichier(dirname(__FILE__) . "/css/expected_more_screen.css", $expected);
     46$compacte = minifier_css($css_code, 'screen');
     47if (rtrim($compacte) != rtrim($expected)) {
     48        erreur("minifier_css('screen')", $compacte, $expected);
     49        $ok = false;
     50}
    5051
    51         $compacte = minifier_css($css_code,array('media'=>'screen'));
    52         if (rtrim($compacte)!=rtrim($expected)) {
    53                 erreur("minifier_css(array('media'=>'screen'))",$compacte,$expected);
    54                 $ok = false;
    55         }
     52$compacte = minifier_css($css_code, array('media' => 'screen'));
     53if (rtrim($compacte) != rtrim($expected)) {
     54        erreur("minifier_css(array('media'=>'screen'))", $compacte, $expected);
     55        $ok = false;
     56}
    5657
    57         lire_fichier(dirname(__FILE__)."/css/expected_highest_screen.css", $expected);
    58         $compacte = minifier_css($css_code,array('media'=>'screen','template'=>'highest'));
    59         if (rtrim($compacte)!=rtrim($expected)) {
    60                 erreur("minifier_css(array('media'=>'screen','template'=>'highest'))",$compacte,$expected);
    61                 $ok = false;
    62         }
     58lire_fichier(dirname(__FILE__) . "/css/expected_highest_screen.css", $expected);
     59$compacte = minifier_css($css_code, array('media' => 'screen', 'template' => 'highest'));
     60if (rtrim($compacte) != rtrim($expected)) {
     61        erreur("minifier_css(array('media'=>'screen','template'=>'highest'))", $compacte, $expected);
     62        $ok = false;
     63}
    6364
    64         lire_fichier(dirname(__FILE__)."/css/source_simple.css", $css_code);
     65lire_fichier(dirname(__FILE__) . "/css/source_simple.css", $css_code);
    6566
    66         lire_fichier(dirname(__FILE__)."/css/expected_simple.css", $expected);
    67         $compacte = minifier_css($css_code,'screen');
    68         if (rtrim($compacte)!=rtrim($expected)) {
    69                 erreur("minifier_css('screen')",$compacte,$expected);
    70                 $ok = false;
    71         }
     67lire_fichier(dirname(__FILE__) . "/css/expected_simple.css", $expected);
     68$compacte = minifier_css($css_code, 'screen');
     69if (rtrim($compacte) != rtrim($expected)) {
     70        erreur("minifier_css('screen')", $compacte, $expected);
     71        $ok = false;
     72}
    7273
    73         lire_fichier(dirname(__FILE__)."/css/expected_url_abs.css", $expected);
    74         lire_fichier(dirname(__FILE__)."/css/source_url_abs.css", $source);
    75         $compacte = urls_absolues_css($source,"http://example.org/squelettes/source.css");
    76         if (rtrim($compacte)!=rtrim($expected)) {
    77                 erreur("urls_absolues_css()",$compacte,$expected);
    78                 $ok = false;
    79         }
     74lire_fichier(dirname(__FILE__) . "/css/expected_url_abs.css", $expected);
     75lire_fichier(dirname(__FILE__) . "/css/source_url_abs.css", $source);
     76$compacte = urls_absolues_css($source, "http://example.org/squelettes/source.css");
     77if (rtrim($compacte) != rtrim($expected)) {
     78        erreur("urls_absolues_css()", $compacte, $expected);
     79        $ok = false;
     80}
    8081
    8182
    82         if ($ok)
    83                 echo "OK";
     83if ($ok) {
     84        echo "OK";
     85}
    8486
    85         function erreur($titre, $result, $expected){
    86                 echo "Erreur $titre<br />";
    87                 echo "<tt>Resultat:</tt><pre>$result</pre>";
    88                 echo "<tt>Attendu :</tt><pre>$expected</pre>";
    89         }
     87function erreur($titre, $result, $expected) {
     88        echo "Erreur $titre<br />";
     89        echo "<tt>Resultat:</tt><pre>$result</pre>";
     90        echo "<tt>Attendu :</tt><pre>$expected</pre>";
     91}
     92
    9093?>
Note: See TracChangeset for help on using the changeset viewer.