Changeset 119648 in spip-zone


Ignore:
Timestamp:
Jan 5, 2020, 7:49:43 PM (10 months ago)
Author:
Eric Lupinacci
Message:

Améliorer la vérification de la configuration d'un cache.

Location:
_plugins_/cache/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cache/trunk

    • Property subgit:lock:12e90b93647b17190b71e8dcc01e801d3bd6402b set to 2020-01-05T20:50:02.618
  • _plugins_/cache/trunk/cache/cache.php

    r118497 r119648  
    1313}
    1414
    15 
    1615// -----------------------------------------------------------------------
    1716// ---------------------- SERVICES SURCHARGEABLES ------------------------
     
    2827 *
    2928 * @param string $plugin
    30  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
    31  *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     29 *                       Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     30 *                       un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    3231 *
    3332 * @return array
    34  *        Tableau de la configuration complétée des caches d'un plugin venant d'être enregistrée.
     33 *               Tableau de la configuration complétée des caches d'un plugin venant d'être enregistrée.
    3534 */
    3635function cache_cache_configurer($plugin) {
     
    6564        $configuration['conservation'] = abs(intval($configuration['conservation']));
    6665
    67         // On vérifie que la sérialisation et le décodage sont cohérents:
    68         // - si une sérialisation est demandée, alors le décodage n'est pas possible.
     66        // On vérifie en priorité la sécurisation. Si le cache doit être sécurisé :
     67        // - le décodage et la sérialisation ne sont pas possibles
     68        // - l'extension du cache doit absolument être .php. Si ce n'est pas le cas on la force.
    6969        if ($configuration['securisation']) {
    7070                $configuration['decodage'] = false;
    71         }
    72 
    73         // On vérifie que le décodage est valide et cohérent avec l'extension:
    74         // - on ne peut décoder que des extensions json, xml et yaml.
     71                $configuration['serialisation'] = false;
     72                if ($configuration['extension'] != '.php') {
     73                        $configuration['extension'] = '.php';
     74                }
     75        }
     76
     77        // On vérifie ensuite la sérialisation. Si le cache est sérialisé :
     78        // - la sécurisation n'est pas possible mais a été traitée précédemment
     79        // - le décodage n'est pas possible non plus.
     80        if ($configuration['securisation']) {
     81                $configuration['decodage'] = false;
     82        }
     83
     84        // On vérifie en dernier le décodage. Si le cache demande un décodage :
     85        // - sécurisation et sérialisation ne sont pas possibles mais ont été traitées précédemment
     86        // - le cache n'accepte que les extensions : json, xml ou yaml.
    7587        if ($configuration['decodage']) {
    7688                if ((($configuration['extension'] == 'yaml') or ($configuration['extension'] == 'yml'))
     
    7890                        $configuration['decodage'] = false;
    7991                }
    80         }
    81 
    82         // On vérifie l'indicateur de sécurisation : si le cache doit être sécurisé alors son extension
    83         // doit absolument être .php. Si ce n'est pas le cas on la force.
    84         if ($configuration['securisation']
    85         and ($configuration['extension'] != '.php')) {
    86                 $configuration['extension'] = '.php';
    8792        }
    8893
     
    100105        // suivis des composants facultatifs.
    101106        $configuration['nom'] = array_merge($configuration['nom_obligatoire'], $configuration['nom_facultatif']);
    102        
    103         // Si le nom ne comporte qu'un seul composant forcer le séparateur à '' pour ne pas interdire d'utiliser les 
     107
     108        // Si le nom ne comporte qu'un seul composant forcer le séparateur à '' pour ne pas interdire d'utiliser les
    104109        // caractères '_' ou '-' dans le composant unique.
    105110        if (count($configuration['nom']) == 1) {
     
    117122}
    118123
    119 
    120124/**
    121125 * Construit le chemin complet du fichier cache.
     
    124128 *
    125129 * @param string $plugin
    126  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
    127  *        ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     130 *                              Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
     131 *                              ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    128132 * @param array  $cache
    129  *        Tableau identifiant le cache pour lequel on veut construire le nom.
     133 *                              Tableau identifiant le cache pour lequel on veut construire le nom.
    130134 * @param array  $configuration
    131  *        Configuration complète des caches du plugin utlisateur lue à partir de la meta de stockage.
     135 *                              Configuration complète des caches du plugin utlisateur lue à partir de la meta de stockage.
    132136 *
    133137 * @return string
     
    192196}
    193197
    194 
    195198/**
    196199 * Décompose le chemin complet du fichier cache en éléments constitutifs. Par défaut, le tableau obtenu coïncide
     
    203206 *
    204207 * @param string $plugin
    205  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
    206  *        ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     208 *                              Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
     209 *                              ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    207210 * @param string $fichier_cache
    208  *        Le chemin complet du fichier à phraser.
     211 *                              Le chemin complet du fichier à phraser.
    209212 * @param array  $configuration
    210  *        Configuration complète des caches du plugin utlisateur lue à partir de la meta de stockage.
     213 *                              Configuration complète des caches du plugin utlisateur lue à partir de la meta de stockage.
    211214 *
    212215 * @return array
    213  *         Tableau des composants constitutifs du cache
     216 *               Tableau des composants constitutifs du cache
    214217 */
    215218function cache_cache_decomposer($plugin, $fichier_cache, $configuration) {
     
    230233                $fichier_cache = str_replace($dir_cache, '', $fichier_cache);
    231234
    232                 // Détermination du nom du cache sans extension et décomposition suivant la configuration du nom.               
     235                // Détermination du nom du cache sans extension et décomposition suivant la configuration du nom.
    233236                $nom_cache = basename($fichier_cache, $configuration['extension']);
    234237                if (count($configuration['nom']) == 1) {
     
    251254}
    252255
    253 
    254256/**
    255257 * Complète la description d'un cache issue du service `cache_decomposer()`.
     
    260262 *
    261263 * @param string $plugin
    262  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
    263  *        ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     264 *                              Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
     265 *                              ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    264266 * @param array  $cache
    265  *       Tableau identifiant le cache pour lequel on veut construire le nom.
     267 *                              Tableau identifiant le cache pour lequel on veut construire le nom.
    266268 * @param string $fichier_cache
    267  *        Fichier cache désigné par son chemin complet.
     269 *                              Fichier cache désigné par son chemin complet.
    268270 * @param array  $configuration
    269  *        Configuration complète des caches du plugin utilisateur lue à partir de la meta de stockage.
     271 *                              Configuration complète des caches du plugin utilisateur lue à partir de la meta de stockage.
    270272 *
    271273 * @return array
    272  *         Description du cache complétée par un ensemble de données propres au plugin.
     274 *               Description du cache complétée par un ensemble de données propres au plugin.
    273275 */
    274276function cache_cache_completer($plugin, $cache, $fichier_cache, $configuration) {
     
    288290}
    289291
    290 
    291292/**
    292293 * Décode le contenu du fichier cache en fonction de l'extension.
     
    298299 *
    299300 * @param string $plugin
    300  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
    301  *        ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     301 *                              Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
     302 *                              ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    302303 * @param string $contenu
    303  *        Contenu du fichier cache au format chaine.
     304 *                              Contenu du fichier cache au format chaine.
    304305 * @param array  $configuration
    305  *        Configuration complète des caches du plugin utilisateur lue à partir de la meta de stockage.
     306 *                              Configuration complète des caches du plugin utilisateur lue à partir de la meta de stockage.
    306307 *
    307308 * @return array
    308  *         Contenu du cache décodé si la fonction idoine a été appliqué ou tel que fourni en entrée sinon.
     309 *               Contenu du cache décodé si la fonction idoine a été appliqué ou tel que fourni en entrée sinon.
    309310 */
    310311function cache_cache_decoder($plugin, $contenu, $configuration) {
     
    345346}
    346347
    347 
    348348/**
    349349 * Effectue le chargement du formulaire de vidage des caches pour un plugin utilisateur donné.
     
    356356 *
    357357 * @param string $plugin
    358  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
    359  *        ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     358 *                              Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
     359 *                              ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    360360 * @param array  $options
    361  *        Tableau d'options qui peut être fourni par un plugin utilisateur uniquement si celui-ci fait appel
    362  *        au formulaire. La page cache_vider de Cache Factory n'utilise pas ce paramètre.
    363  *        Le tableau est passé à la fonction de service de chargement du formulaire uniquement.
     361 *                              Tableau d'options qui peut être fourni par un plugin utilisateur uniquement si celui-ci fait appel
     362 *                              au formulaire. La page cache_vider de Cache Factory n'utilise pas ce paramètre.
     363 *                              Le tableau est passé à la fonction de service de chargement du formulaire uniquement.
    364364 * @param array  $configuration
    365  *        Configuration complète des caches du plugin utilisateur lue à partir de la meta de stockage.
     365 *                              Configuration complète des caches du plugin utilisateur lue à partir de la meta de stockage.
    366366 *
    367367 * @return array
    368  *         Description du cache complétée par un ensemble de données propres au plugin.
     368 *               Description du cache complétée par un ensemble de données propres au plugin.
    369369 */
    370370function cache_formulaire_charger($plugin, $options, $configuration) {
     
    390390}
    391391
    392 
    393392// -----------------------------------------------------------------------
    394393// ----------------- UTILITAIRE PROPRE AU PLUGIN CACHE -------------------
     
    402401 *
    403402 * @param string $plugin
    404  *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
    405  *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     403 *                         Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     404 *                         un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    406405 * @param bool   $fonction
    407  *        Nom de la fonction de service à chercher.
     406 *                         Nom de la fonction de service à chercher.
    408407 *
    409408 * @return string
    410  *        Nom complet de la fonction si trouvée ou chaine vide sinon.
     409 *                Nom complet de la fonction si trouvée ou chaine vide sinon.
    411410 */
    412411function cache_service_chercher($plugin, $fonction) {
    413 
    414412        $fonction_trouvee = '';
    415413
  • _plugins_/cache/trunk/paquet.xml

    r118497 r119648  
    22        prefix="cache"
    33        categorie="outil"
    4         version="0.5.0"
     4        version="0.5.1"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.