Changeset 112671 in spip-zone


Ignore:
Timestamp:
Dec 7, 2018, 9:23:08 PM (6 months ago)
Author:
root
Message:

nouvelles actions get_html et get + petit ménage

Location:
_plugins_/cachelab/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cachelab/trunk/inc/cachelab.php

    r112625 r112671  
    33        return;
    44}
    5 
    6 if (!function_exists('plugin_est_actif')) {
    7         function plugin_est_actif($prefixe) {
    8                 $f = chercher_filtre('info_plugin');
    9                 return $f($prefixe, 'est_actif');
    10         }
    11 }
     5include_spip('public/cachelab_utils');
    126
    137//
    148// Applique une action sur un cache donné
    159//
    16 // Nécessite Mémoization (OK pour toutes les méthodes).
    17 //
    18 // renvoie un booléen indiquant si l'action a pu être appliquée ou non
    19 //
    20 function cachelab_applique ($action, $cle, $data=null, $options='') {
     10// Nécessite Mémoization (toutes méthodes OK).
     11//
     12// Renvoie un booléen indiquant si l'action a pu être appliquée ou non
     13//
     14function cachelab_applique ($action, $cle, $data=null, $options='', &$return=null) {
    2115global $Memoization;
    2216        if (!isset($Memoization) or !$Memoization) {
     
    3933                break;
    4034
    41         case 'echo_cache' :
     35        // gérés par cachelab_cibler
     36        case 'pass' :   // passe
     37        case 'list' :   // renvoie les clés
     38        case 'clean' :  // nettoie
     39                break;
     40               
     41        case 'list_html' :      // renvoie les contenus indexés par les clés sans préfixes
     42                                                // attention ça peut grossir !
     43                if (!is_array($return))
     44                        $return = array();
     45                $return[$joliecle] = $data['texte'];
     46                break;
     47
     48        case 'get' :    // renvoie le 1er cache ciblé
    4249                if (!$data)
    4350                        $data = $Memoization->get($joliecle);
    44                 echo "«<xmp>".substr(print_r($data,1), 0,2000)."</xmp>»";
    45                 break;
    46 
    47         case 'echo_html' :
     51                $return = $data;
     52                break;
     53
     54        case 'get_html' :       // renvoie le contenu du 1er cache
    4855                if (!$data)
    4956                        $data = $Memoization->get($joliecle);
    50                 echo "<p>«<xmp>".print_r($data,1)."</xmp>»</p>";
    51                 break;
    52 
    53         case 'pass' :
    54         case 'list' :
     57                $return = $data['texte'];
    5558                break;
    5659
    5760        default :
    58                 // on pourrait appeler cachelab_applique_$action(...)
    59                 break;
     61                $f = 'cachelab_applique_'.$action;
     62                if (function_exists($f))
     63                        return $f($action, $cle, $data, $options, $return);
     64                else {
     65                        spip_log ("L'action $action n'est pas définie pour cachelab_applique", 'cachelab_erreur');
     66                        return false;
     67                };
    6068        }
    6169        return true;
     
    7381// uses apcu_cache_info()
    7482//      et donc nécessite que Memoization soit activé avec APC ou APCu
     83//
     84// renvoie :
     85//      le résultat si c'est une action 'get' ou 'get_...'
     86//      la liste des stats sinon, avec éventuellement la liste des résultats s'ils sont demandés (pour 'list_html'...)
    7587//
    7688function cachelab_cibler ($action, $conditions=array(), $options=array()) {
     
    8092                die ("cachelab_cibler($action...) : le plugin Mémoization doit être activé avec APC ou APCu");
    8193        }
     94        $return = null;
    8295
    8396        // filtrage
     
    244257                        $stats['l_cible'][] = $cle;
    245258
    246                 cachelab_applique ($action, $cle, $data, $options);
     259                cachelab_applique ($action, $cle, $data, $options, $return);
     260
     261                if ($return
     262                        and (($action=='get')
     263                                or (substr($action,0,4)=='get_')))
     264                        return $return;
    247265        }
    248266
     
    252270        }
    253271
     272        if ($return)
     273                $stats['retour'] = $return;
    254274        return $stats;
    255275}
  • _plugins_/cachelab/trunk/inc/cachelab_invalideur.php

    r112666 r112671  
    11<?php
     2//
     3// Fonctions définies par invalideur.php dans le core,
     4// et surchargées par CacheLab
     5//
    26
    37if (!defined('_ECRIRE_INC_VERSION')) {
  • _plugins_/cachelab/trunk/inc/cachelab_utils.php

    r112625 r112671  
    4848}
    4949
     50if (!function_exists('plugin_est_actif')) {
     51        function plugin_est_actif($prefixe) {
     52                $f = chercher_filtre('info_plugin');
     53                return $f($prefixe, 'est_actif');
     54        }
     55}
     56
  • _plugins_/cachelab/trunk/paquet.xml

    r112667 r112671  
    22        prefix="cachelab"
    33        categorie="outil"
    4         version="0.8.4"
     4        version="0.9.0"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.