Changeset 113904 in spip-zone


Ignore:
Timestamp:
Feb 14, 2019, 12:48:28 PM (7 months ago)
Author:
eric@…
Message:

Inutile de répéter n fois le même code dans les API : on le factorise dans la fonction de lecture de la configuration

File:
1 edited

Legend:

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

    r113881 r113904  
    1616 *
    1717 * @uses cache_obtenir_configuration()
    18  * @uses cache_cache_configurer()
    1918 * @uses cache_cache_composer()
    2019 *
     
    3736       
    3837        // Lecture de la configuration des caches du plugin.
    39         // Si celle-ci n'existe pas encore elle est créée (cas d'un premier appel).
    40         static $configuration = array();
    41         include_spip('cache/cache');
    42         if (empty($configuration[$plugin]) and (!$configuration[$plugin] = cache_obtenir_configuration($plugin))) {
    43                 $configuration[$plugin] = cache_cache_configurer($plugin);
    44         }
    45        
     38        $configuration = cache_obtenir_configuration($plugin);
     39
    4640        // Le cache peut-être fourni soit sous la forme d'un chemin complet soit sous la forme d'un
    4741        // tableau permettant de calculer le chemin complet. On prend en compte ces deux cas.
    4842        $fichier_cache = '';
    49         include_spip('inc/flock');
    5043        if (is_array($cache)) {
    5144                // Vérification de la conformité entre la configuration et le sous-dossier du cache.
    52                 if (!$configuration[$plugin]['sous_dossier']
    53                 or ($configuration[$plugin]['sous_dossier'] and !empty($cache['sous_dossier']))) {
     45                if (!$configuration['sous_dossier']
     46                or ($configuration['sous_dossier'] and !empty($cache['sous_dossier']))) {
    5447                        // Détermination du chemin du cache si pas d'erreur sur le sous-dossier :
    5548                        // - le nom sans extension est construit à partir des éléments fournis sur le conteneur et
    5649                        //   de la configuration du nom pour le plugin.
    57                         $fichier_cache = cache_cache_composer($plugin, $cache, $configuration[$plugin]);
     50                        include_spip('cache/cache');
     51                        $fichier_cache = cache_cache_composer($plugin, $cache, $configuration);
    5852                }
    5953        } elseif (is_string($cache)) {
     
    6559        if ($fichier_cache) {
    6660                // On crée les répertoires si besoin
     61                include_spip('inc/flock');
    6762                $dir_cache = sous_repertoire(
    68                         constant($configuration[$plugin]['racine']),
    69                         rtrim($configuration[$plugin]['dossier_plugin'], '/')
     63                        constant($configuration['racine']),
     64                        rtrim($configuration['dossier_plugin'], '/')
    7065                );
    71                 if ($configuration[$plugin]['sous_dossier']) {
     66                if ($configuration['sous_dossier']) {
    7267                        sous_repertoire($dir_cache, rtrim($cache['sous_dossier'], '/'));
    7368                }
     
    7671                // de façon à toujours écrire une chaine.
    7772                $contenu_cache = '';
    78                 if ($configuration[$plugin]['serialisation']) {
     73                if ($configuration['serialisation']) {
    7974                        if (!is_array($contenu)) {
    8075                                $contenu = $contenu ? array($contenu) : array();
     
    8984                // Ecriture du fichier cache sécurisé ou pas suivant la configuration.
    9085                $ecrire = 'ecrire_fichier';
    91                 if ($configuration[$plugin]['securisation']) {
     86                if ($configuration['securisation']) {
    9287                        $ecrire = 'ecrire_fichier_securise';
    9388                }
     
    106101 *
    107102 * @uses cache_obtenir_configuration()
    108  * @uses cache_cache_configurer()
    109103 * @uses cache_cache_composer()
    110104 *
     
    123117        // Initialisation du contenu du cache
    124118        $cache_lu = false;
    125        
    126         // Lecture de la configuration des caches du plugin.
    127         // Si celle-ci n'existe pas encore elle est créée (cas d'un premier appel, peu probable pour une lecture).
    128         static $configuration = array();
    129         include_spip('cache/cache');
    130         if (empty($configuration[$plugin]) and (!$configuration[$plugin] = cache_obtenir_configuration($plugin))) {
    131                 $configuration[$plugin] = cache_cache_configurer($plugin);
    132         }
     119
     120        // Lecture de la configuration des caches du plugin.
     121        $configuration = cache_obtenir_configuration($plugin);
    133122
    134123        // Le cache peut-être fourni soit sous la forme d'un chemin complet soit sous la forme d'un
     
    139128                // - le nom sans extension est construit à partir des éléments fournis sur le conteneur et
    140129                //   de la configuration du nom pour le plugin.
    141                 $fichier_cache = cache_cache_composer($plugin, $cache, $configuration[$plugin]);
     130                include_spip('cache/cache');
     131                $fichier_cache = cache_cache_composer($plugin, $cache, $configuration);
    142132        } elseif (is_string($cache)) {
    143133                // Le chemin complet du fichier cache est fourni. Aucune vérification ne peut être faite
     
    151141                include_spip('inc/flock');
    152142                $lire = 'lire_fichier';
    153                 if ($configuration[$plugin]['securisation']) {
     143                if ($configuration['securisation']) {
    154144                        $lire = 'lire_fichier_securise';
    155145                }
     
    158148               
    159149                if ($lecture_ok) {
    160                         if ($configuration[$plugin]['serialisation']) {
     150                        if ($configuration['serialisation']) {
    161151                                $cache_lu = unserialize($contenu_cache);
    162152                        } else {
     
    176166 *
    177167 * @uses cache_obtenir_configuration()
    178  * @uses cache_cache_configurer()
    179168 * @uses cache_cache_composer()
    180169 *
     
    191180
    192181        // Lecture de la configuration des caches du plugin.
    193         // Si celle-ci n'existe pas encore elle est créée (cas d'un premier appel).
    194         static $configuration = array();
    195         include_spip('cache/cache');
    196         if (empty($configuration[$plugin]) and (!$configuration[$plugin] = cache_obtenir_configuration($plugin))) {
    197                 $configuration[$plugin] = cache_cache_configurer($plugin);
    198         }
     182        $configuration = cache_obtenir_configuration($plugin);
    199183
    200184        // Le cache peut-être fourni soit sous la forme d'un chemin complet soit sous la forme d'un
     
    205189                // - le nom sans extension est construit à partir des éléments fournis sur le conteneur et
    206190                //   de la configuration du nom pour le plugin.
    207                 $fichier_cache = cache_cache_composer($plugin, $cache, $configuration[$plugin]);
     191                include_spip('cache/cache');
     192                $fichier_cache = cache_cache_composer($plugin, $cache, $configuration);
    208193        } elseif (is_string($cache)) {
    209194                // Le chemin complet du fichier cache est fourni. Aucune vérification ne peut être faite
     
    230215 *
    231216 * @uses cache_obtenir_configuration()
    232  * @uses cache_cache_configurer()
    233217 * @uses cache_cache_composer()
    234218 *
     
    244228
    245229        // Lecture de la configuration des caches du plugin.
    246         // Si celle-ci n'existe pas encore elle est créée (cas d'un premier appel).
    247         static $configuration = array();
    248         include_spip('cache/cache');
    249         if (empty($configuration[$plugin]) and (!$configuration[$plugin] = cache_obtenir_configuration($plugin))) {
    250                 $configuration[$plugin] = cache_cache_configurer($plugin);
    251         }
     230        $configuration = cache_obtenir_configuration($plugin);
    252231
    253232        // Le cache est toujours fourni sous la forme d'un tableau permettant de calculer le chemin complet.
     
    257236                // - le nom sans extension est construit à partir des éléments fournis sur le conteneur et
    258237                //   de la configuration du nom pour le plugin.
    259                 $fichier_cache = cache_cache_composer($plugin, $cache, $configuration[$plugin]);
     238                include_spip('cache/cache');
     239                $fichier_cache = cache_cache_composer($plugin, $cache, $configuration);
    260240        }
    261241
     
    270250 *
    271251 * @uses cache_obtenir_configuration()
    272  * @uses cache_cache_configurer()
    273252 * @uses cache_cache_composer()
    274253 * @uses supprimer_fichier()
     
    288267        // Initialisation du contenu du cache
    289268        $cache_supprime = false;
    290        
    291         // Lecture de la configuration des caches du plugin.
    292         // Si celle-ci n'existe pas encore elle est créée (cas d'un premier appel, peu probable pour une lecture).
    293         static $configuration = array();
    294         include_spip('cache/cache');
    295         if (empty($configuration[$plugin]) and (!$configuration[$plugin] = cache_obtenir_configuration($plugin))) {
    296                 $configuration[$plugin] = cache_cache_configurer($plugin);
    297         }
     269
     270        // Lecture de la configuration des caches du plugin.
     271        $configuration = cache_obtenir_configuration($plugin);
    298272
    299273        // Le cache peut-être fourni soit sous la forme d'un chemin complet soit sous la forme d'un
     
    304278                // - le nom sans extension est construit à partir des éléments fournis sur le conteneur et
    305279                //   de la configuration du nom pour le plugin.
    306                 $fichier_cache = cache_cache_composer($plugin, $cache, $configuration[$plugin]);
     280                include_spip('cache/cache');
     281                $fichier_cache = cache_cache_composer($plugin, $cache, $configuration);
    307282        } elseif (is_string($cache)) {
    308283                // Le chemin complet du fichier cache est fourni. Aucune vérification ne peut être faite
     
    328303 *
    329304 * @uses cache_obtenir_configuration()
    330  * @uses cache_cache_configurer()
    331305 * @uses cache_cache_composer()
    332306 * @uses cache_cache_decomposer()
     
    350324
    351325        // Lecture de la configuration des caches du plugin.
    352         // Si celle-ci n'existe pas encore elle est créée (cas d'un premier appel, peu probable pour une lecture).
    353         static $configuration = array();
    354         include_spip('cache/cache');
    355         if (empty($configuration[$plugin]) and (!$configuration[$plugin] = cache_obtenir_configuration($plugin))) {
    356                 $configuration[$plugin] = cache_cache_configurer($plugin);
    357         }
     326        $configuration = cache_obtenir_configuration($plugin);
    358327
    359328        // Rechercher les caches du plugin sans appliquer de filtre si ce n'est sur le sous-dossier éventuellement.
    360329        // Les autres filtres seront appliqués sur les fichiers récupérés.
    361         $pattern_fichier = constant($configuration[$plugin]['racine']) . $configuration[$plugin]['dossier_plugin'];
    362         if ($configuration[$plugin]['sous_dossier']) {
     330        $pattern_fichier = constant($configuration['racine']) . $configuration['dossier_plugin'];
     331        if ($configuration['sous_dossier']) {
    363332                if (array_key_exists('sous_dossier', $filtres)) {
    364333                        $pattern_fichier .= rtrim($filtres['sous_dossier'], '/') . '/';
     
    369338
    370339        // On complète le pattern avec une recherche d'un nom quelconque mais avec l'extension configurée.
    371         $pattern_fichier .= '*' . $configuration[$plugin]['extension'];
     340        $pattern_fichier .= '*' . $configuration['extension'];
    372341
    373342        // On recherche les fichiers correspondant au pattern.
     
    377346                foreach ($fichiers_cache as $_fichier_cache) {
    378347                        // On décompose le chemin de chaque cache afin de renvoyer l'identifiant canonique du cache.
    379                         $cache = cache_cache_decomposer($plugin, $_fichier_cache, $configuration[$plugin]);
     348                        include_spip('cache/cache');
     349                        $cache = cache_cache_decomposer($plugin, $_fichier_cache, $configuration);
    380350
    381351                        // Maintenant que les composants sont déterminés on applique les filtres pour savoir si on
     
    399369                        if ($cache_conforme) {
    400370                                // On permet au plugin de completer la description canonique
    401                                 $cache = cache_cache_completer($plugin, $cache, $_fichier_cache, $configuration[$plugin]);
     371                                $cache = cache_cache_completer($plugin, $cache, $_fichier_cache, $configuration);
    402372
    403373                                // On stocke la description du fichier cache dans le tableau de sortie.
     
    449419 *
    450420 * @uses lire_config()
     421 * @uses cache_cache_configurer()
    451422 *
    452423 * @param string $plugin
     
    461432function cache_obtenir_configuration($plugin = '') {
    462433
     434        static $configuration = array();
     435
    463436        // Retourner la configuration du plugin ou de tous les plugins utilisateur.
    464437        include_spip('inc/config');
    465438        if ($plugin) {
    466                 $configuration_lue = lire_config("cache/${plugin}", array());
     439                // Lecture de la configuration des caches du plugin. Si celle-ci n'existe pas encore elle est créée.
     440                if (empty($configuration[$plugin]) and (!$configuration[$plugin] = lire_config("cache/${plugin}", array()))) {
     441                        include_spip('cache/cache');
     442                        $configuration[$plugin] = cache_cache_configurer($plugin);
     443                }
     444                $configuration_lue = $configuration[$plugin];
    467445        } else {
    468446                $configuration_lue = lire_config('cache', array());
Note: See TracChangeset for help on using the changeset viewer.