Changeset 112766 in spip-zone


Ignore:
Timestamp:
Dec 13, 2018, 10:08:07 AM (3 months ago)
Author:
jluc@…
Message:

Lister non les caches mais les squelettes issus du filtrage des caches (pour l'instant sans boutonsliens pour aller plus loin)

Location:
_plugins_/xray/trunk
Files:
3 edited

Legend:

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

    r112695 r112766  
    22        prefix="xray"
    33        categorie="outil"
    4         version="0.20.2"
     4        version="0.21.0"
    55        etat="test"
    66        compatibilite="[2.1.0;3.2.*]"
  • _plugins_/xray/trunk/plugin.xml

    r112695 r112766  
    99        <licence>GPL</licence>
    1010        <licence>PHP</licence>
    11         <version>0.20.2</version>
     11        <version>0.21.0</version>
    1212        <etat>test</etat>
    1313        <description>
  • _plugins_/xray/trunk/xray_apc.php

    r112695 r112766  
    4343
    4444////////// BEGIN OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////
    45 
    46 defaults('USE_AUTHENTICATION', 0); // Use (internal) authentication - best choice if
    47 // no other authentication is available
    48 // If set to 0:
    49 //  There will be no further authentication. You
    50 //  will have to handle this by yourself!
    51 // If set to 1:
    52 //  You need to change ADMIN_PASSWORD to make
    53 //  this work!
    54 defaults('ADMIN_USERNAME', 'admin'); // Admin Username
    55 defaults('ADMIN_PASSWORD', 'password'); // Admin Password - CHANGE THIS TO ENABLE!!!
    5645
    5746defaults('MAXLEN_HTMLCOURT', 1000);     // Couper les html
     
    281270}
    282271
     272function cache_get_squelette($cle) {
     273        $squelette = substr(str_replace(XRAY_NEPASAFFICHER_DEBUTNOMCACHE, '', $cle), 33);
     274        $squelette = preg_replace(XRAY_PATTERN_SESSION, '', $squelette);
     275        return $squelette;
     276}
     277
    283278////////////////////////////////////////////////////////////////////////
    284279
     
    319314        'IMG' => '/^[123]$/', // image to generate
    320315        'SOURCE' => '/^[a-z0-9\-_\/\.]+$/', // file source to display
    321         'LO' => '/^1$/', // login requested
    322        
     316//      'LO' => '/^1$/', // login requested
     317        'TYPELISTE' => '/^(caches|squelettes)$/',
    323318        'COUNT' => '/^\d+$/', // number of line displayed in list
    324319        'S_KEY' => '/^[AHSMCDTZ]$/', // first sort key
     
    375370if (!isset($MYREQUEST['ZOOM']))
    376371        $MYREQUEST['ZOOM'] = 'TEXTECOURT';
     372if (!isset($MYREQUEST['TYPELISTE']))
     373        $MYREQUEST['TYPELISTE'] = 'caches';
    377374
    378375global $MY_SELF; // fix apcu
    379376global $MY_SELF_WO_SORT; // fix apcu
    380 $MY_SELF_WO_SORT = "$PHP_SELF" . "?COUNT=" . $MYREQUEST['COUNT'] . "&SEARCH=" . $MYREQUEST['SEARCH'] . "&TYPECACHE=" . $MYREQUEST['TYPECACHE'] . "&ZOOM=" . $MYREQUEST['ZOOM'] . "&EXTRA=" . $MYREQUEST['EXTRA'] . "&WHERE=" . $MYREQUEST['WHERE'] . "&exec=" . $MYREQUEST['exec'] . "&OB=" . $MYREQUEST['OB'];
    381 $MY_SELF         = $MY_SELF_WO_SORT . "&S_KEY=" . $MYREQUEST['S_KEY'] . "&SORT=" . $MYREQUEST['SORT'];
     377$MY_SELF_WO_SORT = "$PHP_SELF" . "?COUNT=" . $MYREQUEST['COUNT'] . "&SEARCH=" . $MYREQUEST['SEARCH'] . "&TYPECACHE=" . $MYREQUEST['TYPECACHE'] . "&ZOOM=" . $MYREQUEST['ZOOM'] . "&EXTRA=" . $MYREQUEST['EXTRA'] . "&WHERE=" . $MYREQUEST['WHERE'] . "&exec=" . $MYREQUEST['exec'] . "&OB=" . $MYREQUEST['OB']. "&TYPELISTE=" . $MYREQUEST['TYPELISTE'];
     378$MY_SELF = $MY_SELF_WO_SORT . "&S_KEY=" . $MYREQUEST['S_KEY'] . "&SORT=" . $MYREQUEST['SORT'];
     379
    382380$self_pour_lien =
    383381        "http" . (!empty($_SERVER['HTTPS']) ? "s" : "") . "://"
     
    389387$IMG_BASE = "$PHP_SELF" . "?exec=" . $MYREQUEST['exec'];
    390388
    391 // authentication needed?
    392 //
    393 if (!USE_AUTHENTICATION) {
    394         $AUTHENTICATED = 1;
    395 } else {
    396         $AUTHENTICATED = 0;
    397         if (ADMIN_PASSWORD != 'password' && ($MYREQUEST['LO'] == 1 || isset($_SERVER['PHP_AUTH_USER']))) {
    398                
    399                 if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
    400                         Header("WWW-Authenticate: Basic realm=\"APC Login\"");
    401                         Header("HTTP/1.0 401 Unauthorized");
    402                        
    403                         echo <<<EOB
    404                                 <html><body>
    405                                 <h1>Rejected!</h1>
    406                                 <big>Wrong Username or Password!</big><br/>&nbsp;<br/>&nbsp;
    407                                 <big><a href='$PHP_SELF?OB={$MYREQUEST['OB']}'>Continue...</a></big>
    408                                 </body></html>
    409 EOB;
    410                         exit;
    411                        
    412                 } else {
    413                         $AUTHENTICATED = 1;
    414                 }
    415         }
    416 }
    417 
    418 // clear cache
    419 if ($AUTHENTICATED && isset($MYREQUEST['CC']) && $MYREQUEST['CC']) {
     389// clear APC cache
     390if (isset($MYREQUEST['CC']) && $MYREQUEST['CC']) {
    420391        apcu_clear_cache();
    421392}
    422393
    423 // clear cache
    424 if ($AUTHENTICATED && isset($MYREQUEST['PP']) && $MYREQUEST['PP']) {
     394// clear APC & SPIP cache
     395if (isset($MYREQUEST['PP']) && $MYREQUEST['PP']) {
    425396        include_spip('inc/invalideur');
    426397        purger_repertoire(_DIR_SKELS);
     
    429400}
    430401
    431 if ($AUTHENTICATED && !empty($MYREQUEST['DU'])) {
     402if (!empty($MYREQUEST['DU'])) {
    432403        apcu_delete($MYREQUEST['DU']);
    433404}
     
    749720{
    750721        global $MYREQUEST;
    751         global $MY_SELF_WO_SORT; // fix apcu : il faut global ici aussi
    752722       
    753723        // fix apcu l'affichage des headers ne doit pas changer $MYREQUEST
    754         $SORT = $MYREQUEST['SORT'];
    755         if (!$SORT)
    756                 $SORT = 'D';
     724        $sort = $MYREQUEST['SORT'];
     725        if (!$sort)
     726                $sort = 'D';
    757727        if ($MYREQUEST['S_KEY'] == $key)
    758                 $SORT = (($SORT == 'A') ? 'D' : 'A');
    759         $url = "$MY_SELF_WO_SORT$extra&S_KEY=$key&SORT=$SORT";
     728                $sort = (($sort == 'A') ? 'D' : 'A');
     729
     730//      global $MY_SELF_WO_SORT; // fix apcu : il faut global ici aussi
     731//      $url = "$MY_SELF_WO_SORT$extra&S_KEY=$key&SORT=$SORT";
     732global $MY_SELF;
     733        $url = parametre_url(parametre_url($MY_SELF.$extra,'S_KEY',$key),'SORT', $sort);
    760734        return "<a class=sortable href='$url'>$name</a>";
    761735}
     
    772746        } else {
    773747                return "<li><a class=\"child_active\" href='$MY_SELF'>$title</a></li>";
    774         }
    775 }
    776 
    777 function put_login_link($s = "Login")
    778 {
    779         global $MY_SELF, $MYREQUEST, $AUTHENTICATED;
    780         // needs ADMIN_PASSWORD to be changed!
    781         //
    782         if (!USE_AUTHENTICATION) {
    783                 return;
    784         } else if (ADMIN_PASSWORD == 'password') {
    785                 print <<<EOB
    786                         <a href="#" onClick="javascript:alert('You need to set a password at the top of apc.php before this will work!');return false";>$s</a>
    787 EOB;
    788         } else if ($AUTHENTICATED) {
    789                 print <<<EOB
    790                         '{$_SERVER['PHP_AUTH_USER']}'&nbsp;logged&nbsp;in!
    791 EOB;
    792         } else {
    793                 print <<<EOB
    794                         <a href="$MY_SELF&LO=1">$s</a>
    795 EOB;
    796748        }
    797749}
     
    827779div.content { padding:1em 1em 1em 1em; width:97%; z-index:100; }
    828780
    829 
    830 div.head div.login {
    831         position:absolute;
    832         right: 1em;
    833         top: 1.2em;
    834         color:white;
    835         width:6em;
    836         }
    837 div.head div.login a {
    838         position:absolute;
    839         right: 0em;
    840         background:rgb(119,123,180);
    841         border:solid rgb(102,102,153) 2px;
    842         color:white;
    843         font-weight:bold;
    844         padding:0.1em 0.5em 0.1em 0.5em;
    845         text-decoration:none;
    846         }
    847 div.head div.login a:hover {
    848         background:rgb(193,193,244);
    849         }
    850 
    851781h1.apc { background:rgb(153,153,204); margin:0; padding:0.5em 1em 0.5em 1em; }
    852782* html h1.apc { margin-bottom:-7px; }
     
    1025955                </div>
    1026956                </a>
    1027         </h1>
    1028         <div class="login">
    1029         <?php
    1030 put_login_link();
    1031 ?>
    1032         </div>
    1033957        <hr class="apc">
    1034958</div>
     
    1045969        echo menu_entry(OB_CACHELAB, 'CacheLab');
    1046970
    1047 if ($AUTHENTICATED) {
    1048971        echo <<<EOB
    1049972                <li><a class="aright" href="$MY_SELF&CC=1" onClick="javascript:return confirm('Are you sure?');"
    1050                         title="Vider le cache APC user">Vider APC</a></li>
     973                        title="Vider le cache APC user">Vider APC</a>
     974                </li>
    1051975                <li><a class="aright" href="$MY_SELF&PP=1"
    1052976                                onClick="javascript:return confirm('Êtes-vous certain de vouloir vider le cache APC user et le dossier skel/ des squelettes compilés ?');"
    1053977                                title="Vider le cache APC user ET effacer les caches de compilation des squelettes ?">
    1054                                 Purger SPIP</a></li>
    1055                
    1056 EOB;
    1057 }
    1058 echo <<<EOB
     978                                Purger SPIP</a>
     979                </li>
    1059980        </ol>
    1060981EOB;
     
    12451166        // -----------------------------------------------
    12461167        case OB_USER_CACHE:
    1247                 if (!$AUTHENTICATED) {
    1248                         echo '<div class="error">You need to login to see the user values here!<br/>&nbsp;<br/>';
    1249                         put_login_link("Login now!");
    1250                         echo '</div>';
    1251                         break;
    1252                 }
    1253                 $fieldname    = 'info';
    1254                 $fieldkey     = 'info';
    1255                
    1256                 $cols = 6;
     1168                $cols = 7;
    12571169               
    12581170                echo '<form>
     
    12601172                        <input type="hidden" name="exec" value="'.$MYREQUEST['exec'].'">
    12611173                        <input type="hidden" name="S_KEY" value="'.$MYREQUEST['S_KEY'].'">
     1174                        <input type="hidden" name="TYPELISTE" value="'.$MYREQUEST['TYPELISTE'].'">
    12621175                <b>Affichage extra:</b>
    12631176                <select name=EXTRA  onChange="form.submit()">
     
    12731186                        <option value=MACROSESSIONS ', $MYREQUEST['EXTRA'] == 'MACROSESSIONS' ? ' selected' : '', '>#_SESSION</option>
    12741187                        <option value=MACROAUTORISER ', $MYREQUEST['EXTRA'] == 'MACROAUTORISER' ? ' selected' : '', '>#_AUTORISER_SI</option>
    1275                 </select>
    1276                 <p><b>Types cache:</b>
     1188                </select>';
     1189       
     1190                echo "<span style='margin-left: 2em; '></span>";
     1191                if ($MYREQUEST['TYPELISTE']=='squelettes') {
     1192                        echo '<a href="'.parametre_url($MY_SELF, 'TYPELISTE', 'caches').'">Caches</a>
     1193                        | <b>Squelettes</b>';
     1194                }
     1195                else {
     1196                        echo '<b>Caches</b>
     1197                        | <a href="'.parametre_url($MY_SELF, 'TYPELISTE', 'squelettes').'">Squelettes</a>';
     1198                };
     1199
     1200                echo '<p><b>Types cache:</b>
    12771201                <select name=TYPECACHE  onChange="form.submit()">
    12781202                        <option value=ALL', $MYREQUEST['TYPECACHE'] == 'ALL' ? ' selected' : '', '>Tous</option>
     
    13231247                        $MYREQUEST['SEARCH'] = '~'.$MYREQUEST['SEARCH'].'~i';
    13241248                }
    1325                 echo '<div class="info"><table cellspacing=0><tbody>', '<tr>', '<th>Caches - ', sortheader('S', 'tri par Squelette'), '</th>', '<th>', sortheader('H', 'Hits'), '</th>', '<th>', sortheader('Z', 'Size'), '</th>', '<th>', sortheader('A', 'Last accessed'), '</th>', '<th>', sortheader('C', 'Created at'), '</th>';
    1326                
    1327                 if ($fieldname == 'info') {
    1328                         $cols += 2;
    1329                         echo '<th>', sortheader('T', 'Timeout'), '</th>';
    1330                 }
    1331                 echo '<th>Del</th></tr>';
    1332                
     1249                echo '<div class="info">
     1250                                <table cellspacing=0>
     1251                                        <tbody><tr>';
     1252                if ($MYREQUEST['TYPELISTE']=='squelettes')
     1253                        echo '<th align="left">', sortheader('S', 'Squelettes').'</th>';
     1254                else {
     1255                        echo '<th align="left">Caches - ', sortheader('S', 'tri par Squelette').'</th>',
     1256                                '<th>', sortheader('H', 'Hits'), '</th>',
     1257                                '<th>', sortheader('Z', 'Size'), '</th>',
     1258                                '<th>', sortheader('A', 'Last accessed'), '</th>',
     1259                                '<th>', sortheader('C', 'Created at'), '</th>',
     1260                                '<th>', sortheader('T', 'Timeout'), '</th>',
     1261                                '<th>Del</th>
     1262                                </tr>';
     1263                };
     1264               
     1265                // FIXME : il vaudrait mieux trier aprés avoir filtré
     1266
    13331267                // builds list with alpha numeric sortable keys
    13341268                //
     
    13521286                                        $k = sprintf('%015d-', $entry['ttl']);
    13531287                                        break;
    1354                                 case 'D':
    1355                                         $k = sprintf('%015d-', $entry['deletion_time']);
    1356                                         break;
    13571288                                case 'S':
    13581289                                        // tri par squelette : on supprime le préfixe et le md5 au début
    13591290                                        // et alors on peut trier
    1360                                         $k = substr(str_replace(XRAY_NEPASAFFICHER_DEBUTNOMCACHE, '', $entry["info"]), 33);
     1291                                        $k = cache_get_squelette($entry['info']);
    13611292                                        break;
    13621293                        }
    1363                         if (!$AUTHENTICATED) {
    1364                                 // hide all path entries if not logged in
    1365                                 $list[$k . $entry[$fieldname]] = preg_replace('/^.*(\\/|\\\\)/', '*hidden*/', $entry);
    1366                         } else {
    1367                                 $list[$k . $entry[$fieldname]] = $entry;
    1368                         }
    1369                 }
    1370                
     1294                        echo "</ul>";
     1295                        $list[$k . $entry['info']] = $entry;
     1296                }
     1297
    13711298                if ($list) {
    13721299                        // sort list
     
    14131340                                        break;
    14141341                        }
    1415                        
     1342
     1343                        $liste_squelettes = array();
     1344
    14161345                        // output list
    14171346                        $i = 0;
     
    14441373                                };
    14451374
    1446                                 if ((!$pattern_typecache or preg_match($pattern_typecache, $entry[$fieldname]))
     1375                                if ((!$pattern_typecache or preg_match($pattern_typecache, $entry['info']))
    14471376                                        and (!$MYREQUEST['SEARCH']
    14481377                                                or (!$MYREQUEST['WHERE']
    1449                                                         and preg_match($MYREQUEST['SEARCH'], $entry[$fieldname]))
     1378                                                        and preg_match($MYREQUEST['SEARCH'], $entry['info']))
    14501379                                                or ($MYREQUEST['WHERE']
    14511380                                                        and preg_match($MYREQUEST['SEARCH'].'m', print_r($searched,1))))
    14521381                                        and (!$also_required
    1453                                                 or ($also_required($entry[$fieldname], $data)== $also_required_bool))) {
     1382                                                or ($also_required($entry['info'], $data)== $also_required_bool))
     1383                                        ) {
     1384
     1385                                        if ($MYREQUEST['TYPELISTE']=='squelettes') {
     1386                                                if ($MYREQUEST['TYPECACHE'] == 'SESSIONS_TALON')        // ya pas de 'source' dans les talons
     1387                                                        $squelette = cache_get_squelette($entry['info']);
     1388                                                elseif (!isset($data['source']))        // textwheel, etc
     1389                                                        continue;
     1390                                                else
     1391                                                        $squelette = $data['source'];
     1392
     1393                                                if (in_array($squelette, $liste_squelettes))    // déjà listé
     1394                                                        continue;
     1395
     1396                                                // squelette pas encore listé
     1397                                                $i++;
     1398                                                $liste_squelettes[] = $squelette;
     1399                                                echo "<tr class='tr-", $i % 2, "'><td colspan='7'>$i) $squelette</td></tr>";
     1400                                                if ($i == $MYREQUEST['COUNT'])
     1401                                                        break;
     1402                                                continue;
     1403                                        }
     1404                                        $i++;
    14541405                                        $sh = md5($entry["info"]);
    14551406                                       
    1456                                         $displayed_name = htmlentities(strip_tags($entry[$fieldname], ''), ENT_QUOTES, 'UTF-8');
     1407                                        $displayed_name = htmlentities(strip_tags($entry['info'], ''), ENT_QUOTES, 'UTF-8');
    14571408                                        if (defined('XRAY_NEPASAFFICHER_DEBUTNOMCACHE'))
    14581409                                                $displayed_name = str_replace(XRAY_NEPASAFFICHER_DEBUTNOMCACHE, '', $displayed_name);
     
    14631414                                                                </a>";
    14641415
    1465                                         if ($data and cache_est_talon($entry[$fieldname], $data))
     1416                                        if ($data and cache_est_talon($entry['info'], $data))
    14661417                                                echo "<span style='margin-left:2em' title='Talon des caches sessionnés avec ce squelette et le même contexte'>[talon]</span>";
    14671418                                       
     
    14871438                                        echo '<span style="float: right">'.$boutons_liens.'</span>';
    14881439
    1489                                        
    14901440                                        if ($MYREQUEST['EXTRA'] and ($sh != $MYREQUEST["SH"]) // sinon yaura un zoom après et c'est inutile de répéter ici
    14911441                                                and $data_success) {
     
    15921542                                                else
    15931543                                                        echo "<br>(rien)</br>";
    1594                                         }
     1544                                        } // fin affichage Extra
     1545
    15951546                                        echo '</td>
    15961547                                        <td class="td-n center">', $entry['num_hits'], '</td>
     
    15991550                                        <td class="td-n center">', date(DATE_FORMAT, $entry['creation_time']), '</td>';
    16001551                                       
    1601                                         if ($fieldname == 'info') {
    1602                                                 if ($entry['ttl'])
    1603                                                         echo '<td class="td-n center">' . $entry['ttl'] . ' seconds</td>';
    1604                                                 else
    1605                                                         echo '<td class="td-n center">None</td>';
    1606                                         }
     1552                                        if ($entry['ttl'])
     1553                                                echo '<td class="td-n center">' . $entry['ttl'] . ' seconds</td>';
     1554                                        else
     1555                                                echo '<td class="td-n center">None</td>';
     1556
    16071557                                        if ($entry['deletion_time']) {
    1608                                                
    16091558                                                echo '<td class="td-last center">', date(DATE_FORMAT, $entry['deletion_time']), '</td>';
    16101559                                        } else if ($MYREQUEST['OB'] == OB_USER_CACHE) {
    16111560                                               
    16121561                                                echo '<td class="td-last center">';
    1613                                                 echo '<a href="', $MY_SELF, '&DU=', urlencode($entry[$fieldkey]), '" style="color:red">X</a>';
     1562                                                echo '<a href="', $MY_SELF, '&DU=', urlencode($entry['info']), '" style="color:red">X</a>';
    16141563                                                echo '</td>';
    16151564                                        } else {
     
    16441593                                                echo '</td>';
    16451594                                                echo '</tr>';
    1646                                         }
    1647                                         $i++;
     1595                                        } // fin du zoom SH
    16481596                                        if ($i == $MYREQUEST['COUNT'])
    16491597                                                break;
    1650                                 }
    1651                         }
     1598                                } // fin du filtrage
     1599                        } // fin du foreach
    16521600                       
    1653                 } else {
     1601                } else { // En l'absence de tout cache
    16541602                        echo '<tr class=tr-0><td class="center" colspan=', $cols, '><i>No data</i></td></tr>';
    16551603                }
Note: See TracChangeset for help on using the changeset viewer.