Changeset 110853 in spip-zone


Ignore:
Timestamp:
Jun 25, 2018, 9:25:40 AM (3 years ago)
Author:
eric@…
Message:

Mise au point du chargement des types de noisette : on gère l'activité des types de noisette sans nécessiter de tout recalculer. Ceci permet de limiter les cas de rechargement complet.

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

Legend:

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

    r110516 r110853  
    6868                $types_noisette_a_ajouter = $types_noisette_a_changer = $types_noisette_a_effacer = array();
    6969
    70                 // Récupération des signatures md5 des noisettes déjà enregistrées.
    71                 // Si on force le rechargement il est inutile de gérer les signatures et les noisettes modifiées ou obsolètes.
     70                // Récupération la description complète des types de noisette déjà enregistrés de façon :
     71                // - à gérer l'activité des types en fin de chargement
     72                // - de comparer les signatures md5 des noisettes déjà enregistrées. Si on force le rechargement il est inutile
     73                //   de gérer les signatures et les noisettes modifiées ou obsolètes.
     74                $types_noisettes_existantes = ncore_type_noisette_lister($plugin, '', $stockage);
    7275                $signatures = array();
    7376                if (!$recharger) {
    74                         $signatures = ncore_type_noisette_lister($plugin, 'signature', $stockage);
     77                        $signatures = array_column($types_noisettes_existantes, 'signature', 'type_noisette');
    7578                        // On initialise la liste des types de noisette à supprimer avec l'ensemble des types de noisette déjà stockés.
    7679                        $types_noisette_a_effacer = $signatures ? array_keys($signatures) : array();
     
    175178                }
    176179
     180                // On complète la liste des types de noisette à changer avec les types de noisette dont l'indicateur
     181                // d'activité est modifié suite à l'activation ou à la désactivation d'un plugin (le fichier YAML lui
     182                // n'a pas changé). Il est inutile de le faire si on recharge tout.
     183                // -- on cherche ces types en excluant les pages obsolètes et celles à changer qui ont déjà recalculé
     184                //    l'indicateur lors de la lecture du fichier YAML.
     185                if (!$recharger) {
     186                        $types_noisette_exclus = $types_noisette_a_changer
     187                                ? array_merge(array_column($types_noisette_a_changer, 'type_noisette'), $types_noisette_a_effacer)
     188                                : $types_noisette_a_effacer;
     189                        $types_noisette_a_verifier = $types_noisette_exclus
     190                                ? array_intersect_assoc($types_noisettes_existantes, array_flip($types_noisette_exclus))
     191                                : $types_noisettes_existantes;
     192
     193                        if ($types_noisette_a_verifier) {
     194                                foreach ($types_noisette_a_verifier as $_type => $_description) {
     195                                        $actif = 'oui';
     196                                        $plugins_necessites = unserialize($_description['necessite']);
     197                                        if ($plugins_necessites) {
     198                                                foreach ($plugins_necessites as $_plugin_necessite) {
     199                                                        if (!defined('_DIR_PLUGIN_' . strtoupper($_plugin_necessite))) {
     200                                                                $actif = 'non';
     201                                                                break;
     202                                                        }
     203                                                }
     204                                        }
     205                                        if ($actif != $_description['actif']) {
     206                                                // On stocke la mise à jour dans les types à changer.
     207                                                $_description['actif'] = $actif;
     208                                                $types_noisette_a_changer[] = $_description;
     209                                        }
     210
     211                                }
     212                        }
     213                }
     214
    177215                // Mise à jour du stockage des types de noisette si au moins un des 3 tableaux est non vide et que le chargement forcé
    178216                // n'est pas demandé:
     
    182220                // -- Insertion des nouveaux types de noisette.
    183221                if ($recharger
    184                         or (!$recharger and ($types_noisette_a_ajouter or $types_noisette_a_effacer or $types_noisette_a_changer))) {
     222                or (!$recharger and ($types_noisette_a_ajouter or $types_noisette_a_effacer or $types_noisette_a_changer))) {
    185223                        $types_noisette = array('a_ajouter' => $types_noisette_a_ajouter);
    186224                        if (!$recharger) {
  • _plugins_/n-core/trunk/paquet.xml

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