Changeset 107445 in spip-zone


Ignore:
Timestamp:
Nov 10, 2017, 11:16:31 AM (2 years ago)
Author:
jluc@…
Message:

pouvoir chercher l'intérieur des caches, soit tout, soit le html seulement, soit les métadonnées

Location:
_plugins_/xray/trunk
Files:
3 edited

Legend:

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

    r107422 r107445  
    22        prefix="xray"
    33        categorie="outil"
    4         version="0.6.0"
     4        version="0.7.0"
    55        etat="test"
    66        compatibilite="[2.1.0;3.2.*]"
  • _plugins_/xray/trunk/plugin.xml

    r107422 r107445  
    99        <licence>GPL</licence>
    1010        <licence>PHP</licence>
    11         <version>0.6.0</version>
     11        <version>0.7.0</version>
    1212        <etat>test</etat>
    1313        <description>
  • _plugins_/xray/trunk/xray_apc.php

    r107424 r107445  
    8383        return isset($types[$parts[0]]) ? $types[$parts[0]] : trim($parts[2], '"');
    8484}
     85
     86function get_apc_data($info, &$success) {
     87        if (apcu_exists($info)
     88                and ($data = apcu_fetch($info, $success))
     89                and $success
     90                and is_array($data) and (count($data) == 1)
     91                and is_serialized($data[0]))
     92                return unserialize($data[0]);
     93        $success = false;
     94        return null;
     95}
     96
    8597function spipsafe_unserialize($str)
    8698{
     
    99111                        $unser['texte'] = '(vide)';
    100112        }
    101         return "Unserialized : " . print_r($unser, 1);
     113        return print_contexte($unser, 1);
    102114}
    103115
     
    114126                }, $print);
    115127        }
     128        $print=preg_replace('/^    /m', '', $print);
    116129        if ($tostring)
    117130                return $print;
     
    175188        'SORT' => '/^[DA]$/', // second sort key
    176189        'AGGR' => '/^\d+$/', // aggregation by dir level
    177         'SEARCH' => '~^[a-zA-Z0-9/_.\-\$\^]*$~', // aggregation by dir level
     190        'SEARCH' => '~.*~',
    178191        'TYPECACHE' => '/^(|ALL|SESSIONS|SESSIONS_AUTH|SESSIONS_NONAUTH|FORMULAIRES)$/', //
    179192        'ZOOM' => '/^(|TEXTECOURT|TEXTELONG)$/', //
     193        'WHERE' => '/^(|ALL|HTML|META)$/', // recherche dans le contenu
    180194        'EXTRA' => '/^(|CONTEXTE|CONTEXTES_SPECIAUX|INFO_AUTEUR|INVALIDEURS|INVALIDEURS_SPECIAUX|INCLUSIONS)$/' //
    181195);
     
    229243global $MY_SELF; // fix apcu
    230244global $MY_SELF_WO_SORT; // fix apcu
    231 $MY_SELF_WO_SORT = "$PHP_SELF" . "?SCOPE=" . $MYREQUEST['SCOPE'] . "&COUNT=" . $MYREQUEST['COUNT'] . "&SEARCH=" . $MYREQUEST['SEARCH'] . "&TYPECACHE=" . $MYREQUEST['TYPECACHE'] . "&ZOOM=" . $MYREQUEST['ZOOM'] . "&EXTRA=" . $MYREQUEST['EXTRA'] . "&exec=" . $MYREQUEST['exec'] . "&OB=" . $MYREQUEST['OB'];
     245$MY_SELF_WO_SORT = "$PHP_SELF" . "?SCOPE=" . $MYREQUEST['SCOPE'] . "&COUNT=" . $MYREQUEST['COUNT'] . "&SEARCH=" . $MYREQUEST['SEARCH'] . "&TYPECACHE=" . $MYREQUEST['TYPECACHE'] . "&ZOOM=" . $MYREQUEST['ZOOM'] . "&EXTRA=" . $MYREQUEST['EXTRA'] . "&WHERE=" . $MYREQUEST['WHERE'] . "&exec=" . $MYREQUEST['exec'] . "&OB=" . $MYREQUEST['OB'];
    232246$MY_SELF         = $MY_SELF_WO_SORT . "&S_KEY=" . $MYREQUEST['S_KEY'] . "&SORT=" . $MYREQUEST['SORT'];
    233247$self            = "http" . (!empty($_SERVER['HTTPS']) ? "s" : "") . "://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
     
    834848        }
    835849
     850/* xray styles */
    836851xmp { display: inline }
     852.menuzoom {
     853        border :  1px solid grey;
     854        border-radius: 3px;
     855        padding : 0px 5px 0px 5px;
     856}
    837857
    838858//-->
     
    845865                <div class="nameinfo" style="display: inline">
    846866                        User Cache
    847                         <a href='contrib.spip.net/4946'>
     867                        <a href='https://contrib.spip.net/4946'>
    848868                        <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAEwAAABMBDsgnAwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAARiSURBVFiFxVdNSBtbFP5m8pqpRmw2EhAU/6JtQAStG5VEiC5cCkLBhcQuXIi2i0ppSZ+laGmxghJFwU1cZCe6cFFXKlYENybSQqMENa1SGLUEQ6iZ5CXfW/S9YEwm0YLtgUuY852f7557z5mJIAjCmSiKIgABPyXplyTS6a9rp4YLABLInxDxtyQRRQwMDKCioiItzpteDoeDiqKwpKQkHY74TSavra0lSb569UrNJjMBm83Guro6VVyj0fDt27fUarVp8cnJSX779o2SJKXF/8p0dgCg0+mwtLSEhoYGaLVa1NXVQa/Xw+12w+Px4N27d+jo6MCLFy/S+peXl2NzcxOKoqjmyFiBwsJCqkksFiNJjo2Nqfp//vyZQ0NDqrgoCAIySWtrKwDgx48fF3sZABAOhwEA9+/fV/XPz89HQUGBKp61De/duwcAePjwISorK7G7uwtFUdDU1ASLxQIAKC0tVfX3+Xyq7QcAEAQh4xHcvXuXiqLw69evXFtb4/n5OePxOBcXF/np0yeS5JMnT1T9p6eneXBwoN4p2QgA4PDwsOo9WF9fpyiKqr6PHj1iLBbj7du3VQnELipycnJSjCRJYktLC3t6eri/v0+SHB8fp81mY2FhYYr9xRj19fUkSYvFkp2ATqej3+9nW1sbATA/P58GgyFpbWxskCStVmsKJggCAdDr9bKrq+vnLRdFBgIBvnz5MjsBg8FAknz8+DGLiop4dnamWvp08vz5cwIgSb558yaRZGFhgaurq9cbRIeHh+ju7kZ9fX2SvrOzE8XFxXA6nZBlOaEPBAJwOp1pYy0vL2N0dBSSJKUOJFEU01YAAO12+5V3v7e3lxjHlytQVVVFkjSbzdcbxVNTUzg6OkJZWRm0Wq1qBQ4PD+F2uxGJRNLG2d3dxdHREZqbm/Hhw4erVwAArVZr1t3Pz88n7epyBQBwdnaWKysrmSsQDAaxvb0Nj8eT0K2srKC9vR2SJAEABgcHYTKZ8OzZM/j9fgDA5uZmyo53dnaSdMvLy5iZmUm9B6Io/nORUaahAoCrq6skyZqaGlWbvLy8FJ3JZCJJlpeXJ2OXCVxeBoOB79+/pyzL/P79O6PRKEkyGAwyEAjw4OCAnZ2dGUkDYFNTE0mmDq5sBPr6+rLegY8fP1Kv17O3t5d37txJG+fBgweMRCLMzc29HgGj0UhZllWTx+Nx9vf3U6fTcW9vjycnJ+zv7+etW7cSMfR6Pb1eLxcXF1NzaDSajAT+vxfhcJgTExOJsVtdXU2S7OvrS3pnPH36lMFgkF++fKHD4eDr16/p8Xjo9/tpNBpTY+MKEo/HQRKhUAiyLEOWZRwfHwMAotFowk5RFIyMjMBoNMLlcqG6uhpmsxlbW1tobGyEz+dLiZ31m/BXRJZl2O32K9n+lj8mmUQjiuLfZPajCIfDmJubw+npKYCf34iCIMDlciEUCv0yAUGj0URjsdiNHMVV5I8fgQDgHID03/PFFvktz/8C/6xwoasnBYAAAAAASUVORK5CYII=' >
    849869                        XRay pour SPIP
     
    10961116                        <option value=INVALIDEURS ', $MYREQUEST['EXTRA'] == 'INVALIDEURS' ? ' selected' : '', '>Invalideurs</option>
    10971117                        <option value=INVALIDEURS_SPECIAUX ', $MYREQUEST['EXTRA'] == 'INVALIDEURS_SPECIAUX' ? ' selected' : '', '>Invalideurs spécifiques</option>
    1098                         <option value=INCLUSIONS ', $MYREQUEST['EXTRA'] == 'INCLUSIONS' ? ' selected' : '', '>&LT;INCLURE&GT;</option>
     1118                        <option value=INCLUSIONS ', $MYREQUEST['EXTRA'] == 'INCLUSIONS' ? ' selected' : '', '>&lt;INCLURE&gt;</option>
    10991119                </select>
    11001120                <p><b>Types cache:</b>
     
    11171137                </select>
    11181138                &nbsp;&nbsp;&nbsp;
    1119                 Search: <input name=SEARCH value="', $MYREQUEST['SEARCH'], '" type=text size=25/>
    1120                 &nbsp;
     1139                Chercher: <input name=SEARCH value="', $MYREQUEST['SEARCH'], '" type=text size=25/>
     1140                <label>Dans:</label>
     1141                <select name=WHERE onChange="form.submit()">
     1142                        <option value="" ', $MYREQUEST['WHERE'] == '' ? ' selected' : '', '>Noms des caches</option>
     1143                        <option value="ALL" ', $MYREQUEST['WHERE'] == 'ALL' ? ' selected' : '', '>Tout le contenu</option>
     1144                        <option value="HTML" ', $MYREQUEST['WHERE'] == 'HTML' ? ' selected' : '', '>HTML</option>
     1145                        <option value="META" ', $MYREQUEST['WHERE'] == 'META' ? ' selected' : '', '>Métadonnées</option>
     1146                </select>
     1147                &nbsp;&nbsp;&nbsp;
    11211148                <input type=submit value="GO!">
    11221149                </p></form></div>';
     
    12151242                        $i = 0;
    12161243                        foreach ($list as $k => $entry) {
    1217                                
    1218                                 if ((!$MYREQUEST['SEARCH'] || preg_match($MYREQUEST['SEARCH'], $entry[$fieldname])) and (!$pattern_typecache or preg_match($pattern_typecache, $entry[$fieldname]))) {
     1244                                $data=$searched=null;
     1245                                $success = false;
     1246                                $tried_get_apc_data = false;
     1247                                if ($MYREQUEST['SEARCH'] and $MYREQUEST['WHERE']) {
     1248                                        $searched = $data = get_apc_data($entry['info'], $success);
     1249                                        $tried_get_apc_data = true;
     1250                                        switch ($MYREQUEST['WHERE']) {
     1251                                        case 'ALL' :
     1252                                                break;
     1253                                        case 'HTML' :
     1254                                                if (is_array($searched)) // !textwheel
     1255                                                        $searched = $data['texte'];
     1256                                                break;
     1257                                        case 'META' :
     1258                                                if (is_array($searched)) // !textwheel
     1259                                                        unset($searched['texte']);
     1260                                                break;
     1261                                        default :
     1262                                                die("Mauvaise valeur pour where : " . $MYREQUEST['WHERE']);
     1263                                        }
     1264                                };
     1265
     1266                                if ((!$pattern_typecache or preg_match($pattern_typecache, $entry[$fieldname]))
     1267                                        and (!$MYREQUEST['SEARCH']
     1268                                                or (!$MYREQUEST['WHERE']
     1269                                                        and preg_match($MYREQUEST['SEARCH'], $entry[$fieldname]))
     1270                                                or ($MYREQUEST['WHERE']
     1271                                                        and preg_match($MYREQUEST['SEARCH'].'m', print_r($searched,1))))) {
    12191272                                        $sh = md5($entry["info"]);
    12201273                                       
     
    12251278                        <a href='$MY_SELF&SH={$sh}#key-{$sh}'>$field_value</a>";
    12261279                                       
    1227                                         if ($p = preg_match('/_([0-9a-f]{8})$/i', $field_value, $match) and $MYREQUEST['SEARCH'] != "/{$match[1]}/i") {
     1280                                        if ($p = preg_match('/_([0-9a-f]{8})$/i', $field_value, $match)
     1281                                                and $MYREQUEST['SEARCH'] != "/{$match[1]}/i") {
    12281282                                                $url_session = parametre_url($MY_SELF, 'SEARCH', $match[1]);
    12291283                                                echo "<a href='$url_session' style='float: right'>[session]</a>";
    12301284                                        }
    12311285                                        if ($MYREQUEST['EXTRA'] and ($sh != $MYREQUEST["SH"]) // sinon yaura un zoom après et c'est inutile de répéter ici
    1232                                                 and apcu_exists($entry['info']) and ($data = apcu_fetch($entry['info'], $success)) and $success and is_array($data) and (count($data) == 1) and is_serialized($data[0])) {
    1233                                                 $data  = unserialize($data[0]);
     1286                                                and (($tried_get_apc_data and $success)
     1287                                                        or (!$tried_get_apc_data
     1288                                                                and ($data = get_apc_data($entry['info'], $success))))) {
    12341289                                                $extra = null;
    12351290                                                $liens = '';
     
    12941349                                                }
    12951350                                                if ($extra = print_contexte($extra, 1))
    1296                                                         echo "<br><xmp>    $extra</xmp>";
     1351                                                        echo "<br><xmp>$extra</xmp>";
    12971352                                                if ($liens)     // inutilisé désormais en fait
    12981353                                                        echo "<small style='float:right'>$liens</small>";
     
    13251380                                        if ($sh == $MYREQUEST["SH"]) { // Le ZOOM sur une entrée
    13261381                                                echo '<tr>';
    1327                                                 echo '<td colspan="7"><pre>';
     1382                                                echo '<td colspan="7">';
    13281383                                               
    13291384                                                if (isset($_GET['ZOOM']) and ($_GET['ZOOM'] == 'TEXTECOURT')) {
    13301385                                                        $url      = parametre_url($self, 'ZOOM', 'TEXTELONG') . "#key-$sh";
    1331                                                         $menuzoom = "<a href='$url'>[Voir tout le texte]</a> ";
     1386                                                        $menuzoom = "<a href='$url' class='menuzoom'>Voir tout le texte</a> ";
    13321387                                                } else {
    13331388                                                        $url      = parametre_url($self, 'ZOOM', 'TEXTECOURT') . "#key-$sh";
    1334                                                         $menuzoom = "<a href='$url'>[Voir texte abbrégé]</a> ";
     1389                                                        $menuzoom = "<a href='$url' class='menuzoom'>Voir texte abbrégé</a> ";
    13351390                                                }
    13361391                                                $url = parametre_url($self, 'SH', '') . "#key-$sh";
    1337                                                 $menuzoom .= "<a href='$url'>[Replier]</a>";
     1392                                                $menuzoom .= "<a href='$url' class='menuzoom'>Replier</a>";
    13381393                                               
    13391394                                                if (apcu_exists($entry['info'])) {
    13401395                                                        $d = apcu_fetch($entry['info'], $success);
    13411396                                                        if ($success) {
    1342                                                                 echo $menuzoom . "<br>";
     1397                                                                echo "<p>$menuzoom</p>";
    13431398                                                                if (is_array($d) and (count($d) == 1) and is_serialized($d[0]))
    13441399                                                                        echo "<xmp>" . spipsafe_unserialize($d[0]) . "</xmp>";
     
    13491404                                                } else
    13501405                                                        echo '(doesnt exist)';
    1351                                                 echo '</pre></td>';
     1406                                                echo '</td>';
    13521407                                                echo '</tr>';
    13531408                                        }
     
    14411496}
    14421497
    1443 echo <<< EOB
     1498?>
     1499
    14441500        </div>
    1445 EOB;
    1446 
    1447 ?>
    1448 
    1449 <!-- <?php
    1450 echo "\nBased on APCGUI By R.Becker\n$VERSION\n";
    1451 ?> -->
     1501<!--
     1502Based on APCGUI By R.Becker\n$VERSION
     1503-->
    14521504</body>
    14531505</html>
Note: See TracChangeset for help on using the changeset viewer.