Changeset 110179 in spip-zone


Ignore:
Timestamp:
May 10, 2018, 11:27:39 AM (19 months ago)
Author:
eric@…
Message:

Lors du chargement, on exclut plus les types de noisettes nécessitant un plugin inactif au moment du chargement mais on les tags inactifs.

Location:
_plugins_/n-core/trunk
Files:
2 edited

Legend:

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

    r109993 r110179  
    8686                                'icon'          => 'noisette-24.png',
    8787                                'necessite'     => array(),
     88                                'actif'         => 'oui',
    8889                                'conteneur'     => 'non',
    8990                                'contexte'      => array(),
     
    111112                                }
    112113
    113                                 // On n'inclue ce type de noisette que si les plugins qu'il nécessite explicitement dans son
    114                                 // fichier de configuration sont bien tous activés.
     114                                // On repère les types de noisette qui nécessitent des plugins explicitement dans leur
     115                                // fichier de configuration :
     116                                // -- si un plugin nécessité est inactif, on indique le type de noisette comme inactif mais on l'inclut
     117                                //    dans la liste retournée.
    115118                                // Rappel: si un type de noisette est incluse dans un plugin non actif elle ne sera pas détectée
    116119                                //         lors du find_all_in_path() puisque le plugin n'est pas dans le path SPIP.
    117120                                //         Ce n'est pas ce cas qui est traité ici.
    118                                 $type_noisette_a_garder = true;
    119121                                if (!empty($description['necessite'])) {
    120122                                        foreach ($description['necessite'] as $_plugin_necessite) {
    121123                                                if (!defined('_DIR_PLUGIN_' . strtoupper($_plugin_necessite))) {
    122                                                         $type_noisette_a_garder = false;
     124                                                        $description['actif'] = 'non';
    123125                                                        break;
    124126                                                }
     
    126128                                }
    127129
    128                                 // Si la noisette est à garder on finalise sa description et on détermine si elle est nouvelle ou modifiée.
    129130                                // En mode rechargement forcé toute noisette est considérée comme nouvelle.
    130131                                // Sinon, la noisette doit être retirée de la base car un plugin qu'elle nécessite a été désactivée:
    131132                                // => il suffit pour cela de la laisser dans la liste des noisettes obsolètes.
    132                                 if ($type_noisette_a_garder) {
    133                                         // Mise à jour du md5
    134                                         $description['signature'] = $md5;
    135                                         // Complétude de la description avec les valeurs par défaut
    136                                         $description = array_merge($description_defaut, $description);
    137                                         // Traitement spécifique d'un type de noisette conteneur : son contexte est toujours env et
    138                                         // l'ajax et l'inclusion dynamique ne sont pas autorisés.
    139                                         if ($description['conteneur'] == 'oui') {
    140                                                 $description['contexte'] = array('env');
    141                                                 $description['ajax'] = 'non';
    142                                                 $description['inclusion'] = 'statique';
    143                                         }
    144                                         // Sérialisation des champs 'necessite', 'contexte' et 'parametres' qui sont des tableaux
    145                                         $description['necessite'] = serialize($description['necessite']);
    146                                         $description['contexte'] = serialize($description['contexte']);
    147                                         $description['parametres'] = serialize($description['parametres']);
    148                                         // Complément spécifique au plugin utilisateur si nécessaire
    149                                         $description = ncore_type_noisette_completer($plugin, $description, $stockage);
    150 
    151                                         if (!$md5_stocke or $recharger) {
    152                                                 // Le type de noisette est soit nouveau soit on est en mode rechargement forcé:
    153                                                 // => il faut le rajouter.
    154                                                 $types_noisette_a_ajouter[] = $description;
    155                                         } else {
    156                                                 // La description stockée a été modifiée et le mode ne force pas le rechargement:
    157                                                 // => il faut mettre à jour le type de noisette.
    158                                                 $types_noisette_a_changer[] = $description;
    159                                                 // => et il faut donc le supprimer de la liste de types de noisette obsolètes
    160                                                 $types_noisette_a_effacer = array_diff($types_noisette_a_effacer, array($type_noisette));
    161                                         }
     133                                // Mise à jour du md5
     134                                $description['signature'] = $md5;
     135                                // Complétude de la description avec les valeurs par défaut
     136                                $description = array_merge($description_defaut, $description);
     137                                // Traitement spécifique d'un type de noisette conteneur : son contexte est toujours env et
     138                                // l'ajax et l'inclusion dynamique ne sont pas autorisés.
     139                                if ($description['conteneur'] == 'oui') {
     140                                        $description['contexte'] = array('env');
     141                                        $description['ajax'] = 'non';
     142                                        $description['inclusion'] = 'statique';
     143                                }
     144                                // Sérialisation des champs 'necessite', 'contexte' et 'parametres' qui sont des tableaux
     145                                $description['necessite'] = serialize($description['necessite']);
     146                                $description['contexte'] = serialize($description['contexte']);
     147                                $description['parametres'] = serialize($description['parametres']);
     148                                // Complément spécifique au plugin utilisateur si nécessaire
     149                                $description = ncore_type_noisette_completer($plugin, $description, $stockage);
     150
     151                                if (!$md5_stocke or $recharger) {
     152                                        // Le type de noisette est soit nouveau soit on est en mode rechargement forcé:
     153                                        // => il faut le rajouter.
     154                                        $types_noisette_a_ajouter[] = $description;
    162155                                } else {
    163                                         // Le type de noisette ne peut plus être utilisé car un des plugins qu'il nécessite n'est plus actif.
    164                                         // => il faut le laisser dans la liste des obsolètes.
    165                                         continue;
     156                                        // La description stockée a été modifiée et le mode ne force pas le rechargement:
     157                                        // => il faut mettre à jour le type de noisette.
     158                                        $types_noisette_a_changer[] = $description;
     159                                        // => et il faut donc le supprimer de la liste de types de noisette obsolètes
     160                                        $types_noisette_a_effacer = array_diff($types_noisette_a_effacer, array($type_noisette));
    166161                                }
    167162                        } else {
    168                                 // Le type de noisette n'a pas changé et n'a donc pas été réchargé:
     163                                // Le type de noisette n'a pas changé et n'a donc pas été rechargé:
    169164                                // => Il faut donc juste indiquer qu'il n'est pas obsolète.
    170165                                $types_noisette_a_effacer = array_diff($types_noisette_a_effacer, array($type_noisette));
  • _plugins_/n-core/trunk/paquet.xml

    r110131 r110179  
    22        prefix="ncore"
    33        categorie="outil"
    4         version="0.3.3"
     4        version="0.3.4"
    55        etat="dev"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.