Changeset 113719 in spip-zone


Ignore:
Timestamp:
Feb 3, 2019, 2:36:25 PM (4 months ago)
Author:
eric@…
Message:

Mise en cohérence du nom des caches Wikipédia.
Ajout d'une fonction et d'un formulaire de vidage des caches.

Location:
_plugins_/taxonomie/trunk
Files:
5 added
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/taxonomie/trunk/inc/taxonomie_cacher.php

    r108904 r113719  
    163163        return true;
    164164}
     165
     166/**
     167 * Répertorie les fichiers caches issu de l'utilisation de l'API d'un service donné.
     168 * La fonction renvoie une description de chaque fichier cache, à savoir, à minima, l'action lancée, le TSN
     169 * du taxon concerné et le nom du fichier cache.
     170 *
     171 * @package SPIP\TAXONOMIE\CACHE
     172 *
     173 * @param string $service
     174 *        Alias en minuscules du service pour lequel on veut lister les caches créés ou chaine vide si on souhaite
     175 *        tous les caches sans distinction de service.
     176 *
     177 * @return array
     178 *        Tableau des descriptions des fichiers cache créés par le service indexé par le chemin complet de
     179 *        chaque fichier cache.
     180 */
     181function cache_taxonomie_repertorier($service = '') {
     182
     183        // Initialisation de la liste des descriptions des caches du service
     184        $descriptions_cache = array();
     185
     186        // Tableau des taxons pour éviter de faire des appels SQL à chaque cache.
     187        static $taxons = array();
     188
     189        // On constitue la liste des services requis par l'appel
     190        include_spip('taxonomie_fonctions');
     191        $services = taxon_lister_services();
     192        if ($service) {
     193                if (array_key_exists($service, $services)) {
     194                        $services = array($service => $services[$service]);
     195                } else {
     196                        $services = array();
     197                }
     198        }
     199
     200        if ($services) {
     201                foreach ($services as $_service => $_titre) {
     202                        // Récupération des fichiers cache du service.
     203                        $pattern_cache = _TAXONOMIE_CACHE_DIR . $_service . '_*.txt';
     204                        $fichiers_cache = glob($pattern_cache);
     205
     206                        if ($fichiers_cache) {
     207                                foreach ($fichiers_cache as $_fichier_cache) {
     208                                        // On raz la description pour éviter de garder des éléments du cache précédent et on initialise avec
     209                                        // le nom du fichier qui peut servir d'id, le chemin complet et le service.
     210                                        $description = array();
     211                                        $description['nom_cache'] = basename($_fichier_cache, '.txt');
     212                                        $description['fichier_cache'] = $_fichier_cache;
     213                                        $description['service'] = $_service;
     214
     215                                        // On extrait le service qui sert toujours d'index principal du tableau
     216                                        $description['service'] = $_service;
     217                                        $description['titre_service'] = $_titre;
     218
     219                                        // On décompose le nom pour récupérer l'action et le TSN correspondant ainsi que la langue.
     220                                        // Le nom du fichier est composé d'éléments séparés par un underscore. La structure est toujours
     221                                        // composée dans l'ordre du service, de l'action et du TSN et peut être complétée par la langue.
     222                                        $elements = explode('_', $description['nom_cache']);
     223                                        $description['action'] = $elements[1];
     224                                        $description['tsn'] = intval($elements[2]);
     225                                        if (isset($elements[3])) {
     226                                                $description['langue'] = $elements[3];
     227                                        }
     228
     229                                        // On rajoute le nom scientifique du taxon pour un affichage plus compréhensible
     230                                        if (!isset($taxons[$description['tsn']])) {
     231                                                // Si pas encore stocké, on cherche le nom scientifique du taxon et on le sauvegarde.
     232                                                $where = array('tsn=' . $description['tsn']);
     233                                                $taxons[$description['tsn']] = sql_getfetsel('nom_scientifique', 'spip_taxons', $where);
     234                                        }
     235                                        $description['nom_scientifique'] = $taxons[$description['tsn']];
     236
     237
     238                                        // On structure le tableau par service.
     239                                        $descriptions_cache[$_service]['titre_service'] = $_titre;
     240                                        $descriptions_cache[$_service]['caches'][] = $description;
     241                                }
     242                        }
     243                }
     244        }
     245
     246        return $descriptions_cache;
     247}
  • _plugins_/taxonomie/trunk/lang/taxonomie_fr.php

    r113677 r113719  
    66
    77        // B
     8        'bouton_vider_cache' => 'Vider les caches Taxonomie',
    89        'bouton_continuer' => 'Passer à l\'étape suivante',
    910        'bouton_retourner' => 'Retourner à l\'étape @etape@',
     
    2930        'erreur_creation_taxon' => 'Une erreur s\'est produite lors de la création du taxon @taxon@ en base de données. Veuillez consulter la liste des taxons et relancer le formulaire si besoin.',
    3031        'explication_iucn_token' => 'L\'utilisation du service IUCN nécessite de posséder un token. Vous pouvez en faire la demande à partir de la page <a href="http://apiv3.iucnredlist.org/api/v3/token">Generate a token</a>.',
     32        'explication_vider_cache' => 'Vous pouvez choisir tout ou partie des caches à supprimer.',
    3133        'explication_taxon_trouve' => 'Chaque taxon est désigné par son nom, scientifique ou commun, et son rang.',
    3234        'explication_recherche_type' => 'Si vous le connaissez, le nom scientifique permet une recherche d\'emblée plus précise.',
     
    8587
    8688        'info_boite_taxonomie_configuration' => 'Cette page permet de configurer les paramètres de base du plugin comme la liste des langues utilisables pour nommer ou décrire les taxons.',
     89        'info_boite_taxonomie_caches' => 'Cette page permet de vider tout ou partie des caches issus de l\'appel des API des divers services utilisés par Taxonomie.',
    8790        'info_boite_regnes' => 'Cette page permet de charger, mettre à jour ou vider les taxons du règne au genre (rangs principaux, secondaires et intercalaires) importés à partir des rapports hiérarchiques extraits de la base ITIS. Ces taxons peuvent être rechargés sans danger pour les autres taxons et pour les modifications éventuellement effectuées.',
    8891        'info_boite_taxons' => 'Cette page permet de consulter la liste des taxons dont le rang est strictement supérieur au rang espèce. Ces taxons sont tous créés automatiquement même si ils peuvent être modifiés manuellement après coup.',
     
    140143        'label_recherche_regne' => 'Limiter la recherche à un règne',
    141144        'label_parents_espece' => 'Ascendance jusqu\'au genre',
     145        'label_vider_cache' => 'Caches rangés par service',
    142146
    143147        // N
    144148        'notice_vider_regne_inexistant' => 'Le règne @regne@ n\'a pas été trouvé en base de données.',
    145149        'notice_liste_aucun_regne' => 'Aucun règne n\'a encore été chargé en base de données. Utiliser le formulaire ci-dessous pour y remédier.',
     150        'notice_liste_aucun_cache' => 'Aucun cache n\'a encore été créé par le service.',
    146151
    147152        // R
     
    193198        'succes_vider_regne' => 'Le règne @regne@ a bien été supprimé de la base de données.',
    194199        'succes_charger_regne' => 'Le règne @regne@ a bien été chargé en base de données.',
     200        'succes_vider_caches' => 'Les caches sélectionnés ont bien été supprimés.',
    195201
    196202        // T
    197203        'titre_form_configuration' => 'Configurer le plugin Taxonomie',
     204        'titre_form_vidage_cache' => 'Vider les caches des services taxonomiques',
    198205        'titre_form_gestion_regne' => 'Gestion des règnes',
    199206        'titre_liste_regnes' => 'Liste des règnes chargés en base de données',
  • _plugins_/taxonomie/trunk/prive/squelettes/inclure/inc-taxonomie_raccourcis_config.html

    r113387 r113719  
    33                [(#URL_ECRIRE{configurer_taxonomie}
    44                        |icone_horizontale{<:taxonomie:titre_form_configuration:>, 'cfg-24', '', #LANG_LEFT})]
     5        [(#URL_ECRIRE{cacher_taxonomie}
     6                |icone_horizontale{<:taxonomie:bouton_vider_cache:>, 'taxonomie_cache-del-24', '', #LANG_LEFT})]
    57
    68                [(#PLUGIN{ieconfig}|oui)
  • _plugins_/taxonomie/trunk/prive/style_prive_plugin_taxonomie.html

    r109602 r113719  
    5858/* Filtres secondaires */
    5959.onglets_simple.second ul.suivant li.first { margin-left: 20px; }
     60
     61/* Formulaire de vidage des caches */
     62.formulaire_vider_cache h4 {}
     63.formulaire_vider_cache .action-checkbox { text-align: right; margin-bottom: 1em;}
    6064[(#REM) </style>]
  • _plugins_/taxonomie/trunk/services/wikipedia/wikipedia_api.php

    r109416 r113719  
    9898
    9999                if (!empty($options['reload'])
    100                 or !$file_cache = cache_taxonomie_existe('wikipedia', '', $search['tsn'], $options_cache)
     100                or !$file_cache = cache_taxonomie_existe('wikipedia', 'get', $search['tsn'], $options_cache)
    101101                or !filemtime($file_cache)
    102102                or (time() - filemtime($file_cache) > _TAXONOMIE_WIKIPEDIA_CACHE_TIMEOUT)
  • _plugins_/taxonomie/trunk/taxonomie_administrations.php

    r109763 r113719  
    7575        $config = array(
    7676                'langues_utilisees' => array('fr'),
    77                 'services'          => array('wikipedia'),
     77                'services_utilises' => array('wikipedia'),
    7878                'iucn_token'        => ''
    7979        );
  • _plugins_/taxonomie/trunk/taxonomie_fonctions.php

    r113704 r113719  
    329329        return $puce;
    330330}
     331
     332
     333/**
     334 * Renvoie la liste des services de taxonomie utilisés par le plugin en tenant compte de la configuration
     335 * choisi par le webmestre.
     336 *
     337 * @package SPIP\TAXONOMIE\TAXON
     338 *
     339 * @api
     340 * @filtre
     341 *
     342 * @return array
     343 *        Tableau des services utilisés sous la forme [alias] = titre du service.
     344 */
     345function taxon_lister_services() {
     346
     347        // On initialise la liste avec le service ITOS qui est toujours utilisé.
     348        $services = array('itis');
     349
     350        // On lit la configuration pour voir quels autres services sont autorisés à l'utilisation
     351        include_spip('inc/config');
     352        $services = array_flip(array_merge($services, lire_config('taxonomie/services_utilises')));
     353
     354        // On met à jour la liste avec le titre de chaque service
     355        foreach ($services as $_service => $_index) {
     356                $services[$_service] = _T("taxonomie:label_service_${_service}");
     357        }
     358
     359        return $services;
     360}
Note: See TracChangeset for help on using the changeset viewer.