Changeset 113856 in spip-zone


Ignore:
Timestamp:
Feb 11, 2019, 6:29:53 PM (6 days ago)
Author:
eric@…
Message:

Mise au point de la nouvelle API type_noisette_decacher() qui supprime les caches de compilation demandés.
Suppression du fichier ncorer_utils.php car la seule fonction contenue est maintenant intégrée à ncore/ncore.php

Location:
_plugins_/n-core/trunk
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/n-core/trunk/inc/ncore_type_noisette.php

    r113854 r113856  
    350350
    351351/**
    352  * Supprime les caches liés à la compilation. Les autres caches fournis par N-Core comme un espace de stokage
    353  * possible pour les plugins utilisateurs ne sont pas concernés par cette fonction.
     352 * Supprime tout ou partie des caches liés à la compilation uniquement.
    354353 *
    355354 * @api
     355 *
    356356 * @uses cache_supprimer()
    357357 *
    358  * @param string $plugin
     358 * @param string        $plugin
    359359 *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
    360360 *        ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    361  * @param array  $fonction
    362  *        Identification de la fonction du cache qui participe à son nommage (uniquement liée à la compilation).
    363  *
    364  * @return array
    365  *        Tableau des descriptions des types de noisette trouvés indexé par le type de noisette.
     361 * @param array|string  $fonctions
     362 *        Identifiants des fonctions permettant de nommer le cache : les valeurs possibles sont `ajax`, `inclusions`
     363 *        et `contextes`. Il est possible de fournir un tableau vide pour supprimer tous les caches
     364 *        ou juste une fonction sous forme de chaine.
     365 *
     366 * @return bool
     367 *        `false` si une erreur de fonction s'est produite, `true` sinon.
    366368 */
    367 function type_noisette_supprimer_cache($plugin, $fonction) {
    368 
    369         // Initialisation de l'identifiant du cache des descriptions
    370         $cache = array(
    371                 'sous_dossier' => $plugin,
    372                 'objet'        => 'type_noisette',
    373                 'fonction'     => $fonction
    374         );
    375 
    376         // Suppression du cache spécifié.
    377         include_spip('inc/cache');
    378         $retour = cache_supprimer('ncore', $cache);
    379        
     369function type_noisette_decacher($plugin, $fonctions = array()) {
     370
     371        // Retour de la fonction
     372        $retour = false;
     373
     374        // Liste des fonctions valides pour cette API.
     375        static $fonctions_autorisees = array('ajax', 'inclusions', 'contextes');
     376
     377        // Identification des caches à supprimer.
     378        // -- si vide on supprime tous les caches.
     379        // -- si une seule fonction est passée en chaine on la transforme en tableau.
     380        // -- si une liste on vérifie que les fonctions sont valides.
     381        if (!$fonctions) {
     382                $fonctions = $fonctions_autorisees;
     383        } elseif (is_string($fonctions)) {
     384                $fonctions = array($fonctions);
     385        } elseif (is_array($fonctions)) {
     386                $fonctions = array_intersect($fonctions, $fonctions_autorisees);
     387        } else {
     388                $fonctions = array();
     389        }
     390
     391        if ($fonctions) {
     392                // Initialisation de l'identifiant du cache
     393                include_spip('inc/cache');
     394                $cache = array(
     395                        'sous_dossier' => $plugin,
     396                        'objet'        => 'type_noisette'
     397                );
     398                foreach ($fonctions as $_fonction) {
     399                        // Complétude de l'identifiant du cache
     400                        $cache['fonction'] = $_fonction;
     401
     402                        // Suppression du cache spécifié.
     403                        cache_supprimer('ncore', $cache);
     404                }
     405                $retour = true;
     406        }
     407
    380408        return $retour;
    381409}
  • _plugins_/n-core/trunk/ncore/ncore.php

    r113848 r113856  
    149149        // Si le plugin utilisateur complète la description avec des champs spécifiques il doit proposer un service
    150150        // de complément propre.
    151         include_spip('inc/ncore_utils');
    152151        if ($completer = ncore_chercher_service($plugin, 'type_noisette_completer', $stockage)) {
    153152                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    191190        // Si le plugin appelant complète la description du type de noisette avec des champs textuels il doit
    192191        // proposer un service propre de traitement de ces champs.
    193         include_spip('inc/ncore_utils');
    194192        if ($traiter_typo = ncore_chercher_service($plugin, 'type_noisette_traiter_typo', $stockage)) {
    195193                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    227225        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour récupérer
    228226        // la description brute d'un type de noisette.
    229         include_spip('inc/ncore_utils');
    230227        if ($decrire = ncore_chercher_service($plugin, 'type_noisette_decrire', $stockage)) {
    231228                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    282279        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour récupérer
    283280        // les données requises de tous les types de noisette disponibles.
    284         include_spip('inc/ncore_utils');
    285281        if ($lister = ncore_chercher_service($plugin, 'type_noisette_lister', $stockage)) {
    286282                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    340336        // Si le plugin utilisateur permet la configuration du défaut Ajax ou ne suit pas la configuration de N-Core, il
    341337        // doit proposer un service pour fournir cette valeur.
    342         include_spip('inc/ncore_utils');
    343338        if ($configurer = ncore_chercher_service($plugin, 'type_noisette_initialiser_ajax', '')) {
    344339                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    376371        // Si le plugin utilisateur permet la configuration du défaut d'inclusion ou ne suit pas la configuration de N-Core,
    377372        // il doit proposer un service pour fournir cette valeur.
    378         include_spip('inc/ncore_utils');
    379373        if ($configurer = ncore_chercher_service($plugin, 'type_noisette_initialiser_inclusion', '')) {
    380374                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    411405        // Si le plugin utilisateur permet la configuration du dossier des types de noisette ou ne suit pas la configuration
    412406        // de N-Core, il doit proposer un service pour fournir cette valeur.
    413         include_spip('inc/ncore_utils');
    414407        if ($configurer = ncore_chercher_service($plugin, 'type_noisette_initialiser_dossier', '')) {
    415408                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    456449        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour stocker
    457450        // les données d'une noisette.
    458         include_spip('inc/ncore_utils');
    459451        if ($stocker = ncore_chercher_service($plugin, 'noisette_stocker', $stockage)) {
    460452                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    541533        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour effectuer
    542534        // le changement de conteneur d'une noisette.
    543         include_spip('inc/ncore_utils');
    544535        if ($changer = ncore_chercher_service($plugin, 'noisette_changer_conteneur', $stockage)) {
    545536                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    597588        // Si le plugin utilisateur complète la description avec des champs spécifiques il doit proposer un service
    598589        // de complément propre.
    599         include_spip('inc/ncore_utils');
    600590        if ($completer = ncore_chercher_service($plugin, 'noisette_completer', $stockage)) {
    601591                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    633623        // Si le plugin appelant complète la description du type de noisette avec des champs textuels il doit
    634624        // proposer un service propre de traitement typo de ces champs.
    635         include_spip('inc/ncore_utils');
    636625        if ($traiter_typo = ncore_chercher_service($plugin, 'noisette_traiter_typo', $stockage)) {
    637626                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    667656        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour changer
    668657        // la position d'une noisette au sein d'un conteneur.
    669         include_spip('inc/ncore_utils');
    670658        if ($ranger = ncore_chercher_service($plugin, 'noisette_ranger', $stockage)) {
    671659                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    727715        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour supprimer
    728716        // une noisette de son conteneur.
    729         include_spip('inc/ncore_utils');
    730717        if ($destocker = ncore_chercher_service($plugin, 'noisette_destocker', $stockage)) {
    731718                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    792779        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour récupérer
    793780        // les données demandées d'une liste noisette.
    794         include_spip('inc/ncore_utils');
    795781        if ($lister = ncore_chercher_service($plugin, 'noisette_lister', $stockage)) {
    796782                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    863849        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour récupérer
    864850        // la description brute d'une noisette.
    865         include_spip('inc/ncore_utils');
    866851        if ($decrire = ncore_chercher_service($plugin, 'noisette_decrire', $stockage)) {
    867852                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    936921        // Si le plugin utilisateur permet la configuration du défaut d'encapsulaiton ou ne suit pas la configuration
    937922        // de N-Core, il doit proposer un service pour fournir cette valeur.
    938         include_spip('inc/ncore_utils');
    939923        if ($configurer = ncore_chercher_service($plugin, 'noisette_initialiser_encapsulation', '')) {
    940924                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    995979                } else {
    996980                        // Le conteneur est spécifique au plugin utilisateur, c'est donc au plugin faire la vérification des index.
    997                         include_spip('inc/ncore_utils');
    998981                        if ($verifier = ncore_chercher_service($plugin, 'conteneur_verifier', $stockage)) {
    999982                                $conteneur_verifie = $verifier($plugin, $conteneur);
     
    10431026                } else {
    10441027                        // Le conteneur est spécifique au plugin utilisateur, c'est donc au plugin de le calculer.
    1045                         include_spip('inc/ncore_utils');
    10461028                        if ($identifier = ncore_chercher_service($plugin, 'conteneur_identifier', $stockage)) {
    10471029                                $id_conteneur = $identifier($plugin, $conteneur);
     
    10911073                } else {
    10921074                        // Le conteneur est spécifique au plugin utilisateur, c'est donc au plugin de le calculer.
    1093                         include_spip('inc/ncore_utils');
    10941075                        if ($construire = ncore_chercher_service($plugin, 'conteneur_construire', $stockage)) {
    10951076                                $conteneur = $construire($plugin, $id_conteneur);
     
    11721153        // Si le plugin utilisateur possède un stockage propre il doit proposer un service spécifique pour supprimer
    11731154        // les noisettes d'un conteneur.
    1174         include_spip('inc/ncore_utils');
    11751155        if ($destocker = ncore_chercher_service($plugin, 'conteneur_destocker', $stockage)) {
    11761156                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     
    12001180        return $retour;
    12011181}
     1182
     1183
     1184// -----------------------------------------------------------------------
     1185// ---------------- UTILITAIRE PROPRE AU PLUGIN N-CORE -------------------
     1186// -----------------------------------------------------------------------
     1187
     1188/**
     1189 * Cherche une fonction donnée en se basant sur le service de stockage ou à défaut sur le plugin appelant.
     1190 * Si ni le service de stockage ni le plugin ne fournissent la fonction demandée la chaîne vide est renvoyée.
     1191 *
     1192 * @internal
     1193 *
     1194 * @param string $plugin
     1195 *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     1196 *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     1197 * @param bool   $fonction
     1198 *        Nom de la fonction à chercher.
     1199 * @param string $stockage
     1200 *        Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
     1201 *        ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
     1202 *        fournissant le service de stockage souhaité.
     1203 *
     1204 * @return string
     1205 *        Nom complet de la fonction si trouvée ou chaine vide sinon.
     1206 */
     1207function ncore_chercher_service($plugin, $fonction, $stockage = '') {
     1208
     1209        $fonction_trouvee = '';
     1210
     1211        // Si le stockage n'est pas précisé on cherche la fonction dans le plugin appelant.
     1212        if (!$stockage) {
     1213                $stockage = $plugin;
     1214        }
     1215
     1216        // Eviter la réentrance si on demande explicitement le stockage N-Core
     1217        if ($stockage != 'ncore') {
     1218                include_spip("ncore/${stockage}");
     1219                $fonction_trouvee = "${stockage}_${fonction}";
     1220                if (!function_exists($fonction_trouvee)) {
     1221                        $fonction_trouvee = '';
     1222                }
     1223        }
     1224
     1225        return $fonction_trouvee;
     1226}
  • _plugins_/n-core/trunk/paquet.xml

    r113848 r113856  
    22        prefix="ncore"
    33        categorie="outil"
    4         version="0.9.0"
     4        version="0.9.1"
    55        etat="test"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.