Changeset 113744 in spip-zone for _plugins_/cache/trunk/cache/cache.php


Ignore:
Timestamp:
Feb 5, 2019, 12:33:12 PM (4 months ago)
Author:
eric@…
Message:

Quelques améliorations du code des API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cache/trunk/cache/cache.php

    r113742 r113744  
    8989        );
    9090
    91         // Si le plugin utilisateur complète la description avec des champs spécifiques il doit proposer un service
    92         // de complément propre.
     91        // Le plugin utilisateur doit fournir un service propre pour la configuration de ses caches.
     92        // Cette configuration peut-être partielle, dans ce cas les données manquantes sont complétées
     93        // par celles par défaut.
    9394        $configuration_plugin = array();
    9495        if ($configurer = cache_chercher_service($plugin, 'cache_configurer')) {
     
    9899
    99100        // On merge la configuration du plugin avec celle par défaut pour assure la complétude.
    100         $configuration_plugin = array_merge($configuration_defaut, $configuration_plugin);
     101        $configuration = array_merge($configuration_defaut, $configuration_plugin);
    101102
    102103        // On vérifie l'indicateur de sécurisation : si le cache doit être sécurisé alors son extension
    103104        // doit absolument être .php. Si ce n'est pas le cas on la force.
    104         if ($configuration_plugin['securisation']
    105         and ($configuration_plugin['extension'] != '.php')) {
    106                 $configuration_plugin['extension'] = '.php';
     105        if ($configuration['securisation']
     106        and ($configuration['extension'] != '.php')) {
     107                $configuration['extension'] = '.php';
    107108        }
    108109
     
    111112        // -- Vérification de la localisation de la racine qui ne peut être que dans les trois dossiers SPIP
    112113        //    prévus et de la présence du / final.
    113         if (!in_array($configuration_plugin['racine'], array(_DIR_CACHE, _DIR_TMP, _DIR_VAR))) {
    114                 $configuration_plugin['racine'] = $configuration_defaut['racine'];
     114        if (!in_array($configuration['racine'], array(_DIR_CACHE, _DIR_TMP, _DIR_VAR))) {
     115                $configuration['racine'] = $configuration_defaut['racine'];
    115116        } else {
    116                 $configuration_plugin['racine'] = rtrim($configuration_plugin['racine'], '/') . '/';
     117                $configuration['racine'] = rtrim($configuration['racine'], '/') . '/';
    117118        }
    118119        // -- Sous-dossier spécifique au plugin
    119         $sous_dossier = ($configuration_plugin['racine'] == _DIR_VAR) ? "cache-${plugin}" : "$plugin";
     120        $sous_dossier = ($configuration['racine'] == _DIR_VAR) ? "cache-${plugin}" : "$plugin";
    120121        // -- Création et enregistrement du dossier de base
    121         sous_repertoire($configuration_plugin['racine'], $sous_dossier);
    122         $configuration['dossier_base'] = $configuration_plugin['racine'] . "${sous_dossier}/";
     122        sous_repertoire($configuration['racine'], $sous_dossier);
     123        $configuration['dossier_base'] = $configuration['racine'] . "${sous_dossier}/";
    123124       
    124125        // Enregistrement de la configuration du plugin utilisateur dans la meta prévue.
     
    129130        ecrire_config('cache', $meta_cache);
    130131
    131         return $configuration_plugin;
     132        return $configuration;
    132133}
    133134
     
    148149 * @return string
    149150 */
    150 function cache_cache_nommer_dist($plugin, $conteneur, $configuration) {
    151 
    152         // Initialisation du chemin complet du fichier cache
    153         $fichier_cache = '';
    154 
    155         // Détermination du répertoire final du fichier cache qui peut-être inclus dans un sous-dossier du dossier
    156         // de base des caches du plugin.
    157         $dir_cache = $configuration['dossier_base'];
    158         if (!empty($conteneur['sous_dossier'])) {
    159                 // Si le conteneur nécessite un sous-dossier, appelé service dans l'identifiant du conteneur.
    160                 $dir_cache .= rtrim($conteneur['sous_dossier'], '/');
    161         }
    162 
    163         // Détermination du nom du cache sans extension.
    164         // Celui-ci est construit à partir des éléments fournis sur le conteneur et de la configuration
    165         // fournie par le plugin (liste ordonnée de composant).
    166         $nom_cache = '';
    167         foreach ($configuration['nom'] as $_composant) {
    168                 if (isset($conteneur[$_composant])) {
    169                         $nom_cache .= ($nom_cache ? $configuration['separateur'] : '') . $conteneur[$_composant];
    170                 }
    171         }
    172 
    173         // Si le nom a pu être construit on finalise le chemin complet, sinon on renvoie une chaine vide.
    174         if ($nom_cache) {
    175                 // L'extension par défaut est dans la configuration mais peut-être forcée pour un cache donné.
    176                 // Par contre, si le cache est sécurisé alors on ne tient pas compte du forçage éventuel car l'extension
    177                 // doit toujours être .php et celle-ci a été forcée lors de la configuration des caches du plugin.
    178                 $extension = (!empty($conteneur['extension']) and !$configuration['securisation'])
    179                         ? $conteneur['extension']
    180                         : $configuration['extension'];
    181                 // Le chemin complet
    182                 $fichier_cache = "${dir_cache}${nom_cache}${extension}";
     151function cache_cache_nommer($plugin, $conteneur, $configuration) {
     152
     153        // Le plugin utilisateur peut fournir un service propre pour construire le chemin complet du fichier cache.
     154        // Néanmoins, étant donné la généricité du mécanisme offert par le plugin Cache cela devrait être rare.
     155        if ($nommer = cache_chercher_service($plugin, 'cache_nommer')) {
     156                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     157                $fichier_cache = $nommer($plugin, $conteneur, $configuration);
     158        } else {
     159                // On utilise le mécanisme de nommage standard du plugin Cache.
     160                // Initialisation du chemin complet du fichier cache
     161                $fichier_cache = '';
     162
     163                // Détermination du répertoire final du fichier cache qui peut-être inclus dans un sous-dossier du dossier
     164                // de base des caches du plugin.
     165                $dir_cache = $configuration['dossier_base'];
     166                if (!empty($conteneur['sous_dossier'])) {
     167                        // Si le conteneur nécessite un sous-dossier, appelé service dans l'identifiant du conteneur.
     168                        $dir_cache .= rtrim($conteneur['sous_dossier'], '/');
     169                }
     170
     171                // Détermination du nom du cache sans extension.
     172                // Celui-ci est construit à partir des éléments fournis sur le conteneur et de la configuration
     173                // fournie par le plugin (liste ordonnée de composant).
     174                $nom_cache = '';
     175                foreach ($configuration['nom'] as $_composant) {
     176                        if (isset($conteneur[$_composant])) {
     177                                $nom_cache .= ($nom_cache ? $configuration['separateur'] : '') . $conteneur[$_composant];
     178                        }
     179                }
     180
     181                // Si le nom a pu être construit on finalise le chemin complet, sinon on renvoie une chaine vide.
     182                if ($nom_cache) {
     183                        // L'extension par défaut est dans la configuration mais peut-être forcée pour un cache donné.
     184                        // Par contre, si le cache est sécurisé alors on ne tient pas compte du forçage éventuel car l'extension
     185                        // doit toujours être .php et celle-ci a été forcée lors de la configuration des caches du plugin.
     186                        $extension = (!empty($conteneur['extension']) and !$configuration['securisation'])
     187                                ? $conteneur['extension']
     188                                : $configuration['extension'];
     189                        // Le chemin complet
     190                        $fichier_cache = "${dir_cache}${nom_cache}${extension}";
     191                }
    183192        }
    184193
Note: See TracChangeset for help on using the changeset viewer.