Changeset 111128 in spip-zone


Ignore:
Timestamp:
Jul 14, 2018, 4:44:51 PM (21 months ago)
Author:
jluc@…
Message:

Animation du 14 juillet : gunziper les caches zippés pour visu et recherches (du coup ça ralentit les recherches profondes) + blinder la recherche par regexp sur le contenu HTML

Location:
_plugins_/xray/trunk
Files:
3 edited

Legend:

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

    r111127 r111128  
    22        prefix="xray"
    33        categorie="outil"
    4         version="0.14.3"
     4        version="0.14.4"
    55        etat="test"
    66        compatibilite="[2.1.0;3.2.*]"
  • _plugins_/xray/trunk/plugin.xml

    r111127 r111128  
    99        <licence>GPL</licence>
    1010        <licence>PHP</licence>
    11         <version>0.14.3</version>
     11        <version>0.14.4</version>
    1212        <etat>test</etat>
    1313        <description>
  • _plugins_/xray/trunk/xray_apc.php

    r111127 r111128  
    2828
    2929include_spip ('inc/autoriser');
     30
    3031if (!autoriser('webmestre'))
    3132        die("Autorisation non accordée : devenez webmestre d'abord.");
     
    7071include_spip ('inc/xray_apc');
    7172
     73// copie un peu modifiée de la fonction définie dans public/cacher.php
     74if (!function_exists('gunzip_page')) {
     75        function gunzip_page(&$page) {
     76                if (isset ($page['gz']) and $page['gz']) {
     77                        $page['texte'] = gzuncompress($page['texte']);
     78                        $page['gz'] = false; // ne pas gzuncompress deux fois une meme page
     79                }
     80        }
     81}
     82else
     83        die("La fonction gunzip_page ne devrait pas être déjà définie"); // à défaut de disposer de la lib nobug
     84
    7285// Strings utils
    7386
    74 function is_serialized($str)
    75 {
     87function is_serialized($str) {
    7688        return ($str == serialize(false) || @unserialize($str) !== false);
    7789}
    78 function get_serial_class($serial)
    79 {
     90
     91function get_serial_class($serial) {
    8092        $types = array(
    8193                's' => 'string',
     
    96108                and $success
    97109                and is_array($data) and (count($data) == 1)
    98                 and is_serialized($data[0]))
    99                 return unserialize($data[0]);
     110                and is_serialized($data[0])
     111                ) {
     112                $page = unserialize($data[0]);
     113                if (is_array($page))
     114                        gunzip_page($page);
     115                return $page;
     116        };
     117
    100118        $success = false;
    101119        return null;
     
    111129        }
    112130        $unser = unserialize($str);
    113         if (is_array($unser) and isset($unser['texte']) and isset($_GET['ZOOM']) and ($_GET['ZOOM'] == 'TEXTECOURT')) {
    114                 $unser['texte'] = trim(preg_replace('/\s+/', ' ', $unser['texte']));
    115                 if (mb_strlen($unser['texte']) > 80)
    116                         $unser['texte'] = mb_substr($unser['texte'], 0, 80) . '...';
    117                 elseif (!$unser['texte'])
    118                         $unser['texte'] = '(vide)';
     131        if (is_array($unser) and isset($unser['texte'])) {
     132                gunzip_page($unser); // si 'texte' est trop grand il est gzcompress par gzip_page
     133                if (isset($_GET['ZOOM']) and ($_GET['ZOOM'] == 'TEXTECOURT')) {
     134                        $unser['texte'] = trim(preg_replace('/\s+/', ' ', $unser['texte']));
     135                        if (mb_strlen($unser['texte']) > 80)
     136                                $unser['texte'] = mb_substr($unser['texte'], 0, 80) . '...';
     137                        elseif (!$unser['texte'])
     138                                $unser['texte'] = '(vide)';
     139                }
    119140        }
    120141        return print_contexte($unser, 1);
     
    12151236                </select>
    12161237                &nbsp;&nbsp;&nbsp;
    1217                 Chercher: <input name=SEARCH value="', $MYREQUEST['SEARCH'], '" type=text size=25/>
     1238                <span title="REGEXP">Chercher:</span> <input name=SEARCH value="', $MYREQUEST['SEARCH'], '" type=text size=25/>
    12181239                <b>Dans:</b>
    12191240                <select name=WHERE onChange="form.submit()">
     
    12301251                        // Don't use preg_quote because we want the user to be able to specify a
    12311252                        // regular expression subpattern.
    1232                         $MYREQUEST['SEARCH'] = '/' . str_replace('/', '\\/', $MYREQUEST['SEARCH']) . '/i';
    1233                         if (preg_match($MYREQUEST['SEARCH'], 'test') === false) {
    1234                                 echo '<div class="error">Error: enter a valid regular expression as a search query.</div>';
    1235                                 break;
     1253                        // Detection of a potential preg error :
     1254                        if (@preg_match('/' . str_replace('/', '\/', $MYREQUEST['SEARCH']) . '/i', null) === false) {
     1255                                echo '<div class="error">Error: search expression is not a valid regexp (it needs escaping parentheses etc)</div>';
     1256                                $MYREQUEST['SEARCH'] = preg_quote($MYREQUEST['SEARCH'],'/');
     1257                                echo "<div class='warning'>
     1258                                                Warning : search expression has been preg_quoted :
     1259                                                        <xmp>{$MYREQUEST['SEARCH']}</xmp>
     1260                                        </div>";
    12361261                        }
     1262                        $MYREQUEST['SEARCH'] = '/'.$MYREQUEST['SEARCH'].'/i';
    12371263                }
    12381264                echo '<div class="info"><table cellspacing=0><tbody>', '<tr>', '<th>', sortheader('S', $fieldheading), '</th>', '<th>', sortheader('H', 'Hits'), '</th>', '<th>', sortheader('Z', 'Size'), '</th>', '<th>', sortheader('A', 'Last accessed'), '</th>', '<th>', sortheader('C', 'Created at'), '</th>';
     
    13271353                                                break;
    13281354                                        case 'HTML' :
    1329                                                 if (is_array($searched)) // !textwheel
     1355                                                if (is_array($searched)) // !textwheel {
    13301356                                                        $searched = $data['texte'];
    13311357                                                break;
Note: See TracChangeset for help on using the changeset viewer.