Changeset 117658 in spip-zone


Ignore:
Timestamp:
Aug 27, 2019, 12:24:45 PM (7 weeks ago)
Author:
cedric@…
Message:

Utiliser l'entete des fichiers cssifie pour retrouver la source, plutot que de parser tous les fichiers de tous les dossiers du path, ce qui explose tres vite

Location:
_plugins_/skeleditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/skeleditor/trunk/paquet.xml

    r112492 r117658  
    22        prefix="skeleditor"
    33        categorie="outil"
    4         version="3.0.3"
    5         etat="dev"
     4        version="3.1.0"
     5        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
    77        logo="images/skeleditor-32.png"
  • _plugins_/skeleditor/trunk/skeleditor_options.php

    r117656 r117658  
    124124
    125125function skeleditor_trouver_source($src){
    126         // enlever un timestamp eventuel derriere un nom de fichier statique
    127         $source_file = preg_replace(",[.]css[?].+$,", '.css', $src);
    128         // est-ce un fichier scss cssifié
    129         if (preg_match("/-cssify-[\w\d]*.css/s", $source_file)){
    130                 $scss_file = preg_replace(",local/cache-scss/([a-z0-9\-\_]*)-cssify-[\w\d]*.css,s", '${1}.scss', $source_file);
     126        $source_file = explode('?', $src);
     127        $source_file = reset($source_file);
    131128
    132                 $paths = creer_chemin();
    133                 foreach ($paths as $path){
    134                         if ($path!=''){
    135                                 $dir_iterator = new RecursiveDirectoryIterator($path);
    136                                 $iterator = new RecursiveIteratorIterator($dir_iterator,
    137                                         RecursiveIteratorIterator::SELF_FIRST);
    138                                 foreach ($iterator as $splFile){
    139                                         if ($splFile->getBaseName()==$scss_file){
    140                                                 return $splFile->getPathName();
    141                                         }
     129        // est-ce un fichier (less|scss) cssifié
     130        // dans ce cas on l'ouvre et on lit les premieres lignes qui contiennent la reference aux fichiers compiles
     131        if (strpos($source_file, "-cssify-")
     132          and preg_match("#/cache-(less|scss)/.*-cssify-[\w\d-]*.css#s", $source_file)){
     133                $start = file_get_contents($source_file, false, null, 0, 2048);
     134                if (strpos($start, '#@') !== false) {
     135                        $start = explode('#@', $start);
     136                        array_shift($start);
     137                        $file = reset($start);
     138                        $file = explode("\n", $file);
     139                        $file = reset($file);
     140                        if (file_exists($file)) {
     141                                if (strpos($file, _ROOT_RACINE) === 0) {
     142                                        $file = substr($file, strlen(_ROOT_RACINE));
    142143                                }
     144                                return $file;
    143145                        }
    144146                }
Note: See TracChangeset for help on using the changeset viewer.