Changeset 110214 in spip-zone


Ignore:
Timestamp:
May 11, 2018, 5:39:49 PM (22 months ago)
Author:
eric@…
Message:

Mise au point de la suppression de noisette et de conteneur en tenant compte des imbrications de noisette conteneur (pas de limite).
Toute la complexité est gérée par N-Core ce qui fait que les fonctions de service des plugins appelant restent simples.

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

Legend:

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

    r110051 r110214  
    1212/**
    1313 * Supprime toutes les noisettes d’un conteneur.
     14 * L'éventuelle imbrication de conteneurs est gérée dans la fonction de service ncore_conteneur_destocker().
    1415 *
    1516 * @api
     
    3334        $retour = false;
    3435
    35         // On charge l'API de N-Core.
    36         // Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
    37         include_spip('ncore/ncore');
    38 
    3936        if ($conteneur) {
    40                 // Si le conteneur n'est pas une noisette, on vérifie si il ne contient pas des noisettes conteneur auquel
    41                 // cas il faudrait les vider préalablement.
    42                 if (empty($conteneur['id_noisette'])) {
    43                         // On liste les noisettes du conteneur concerné et on repère les noisettes conteneur.
    44                         // Chaque noisette conteneur est vidée.
    45                         foreach (ncore_noisette_lister($plugin, $conteneur, '', 'rang_noisette', $stockage) as $_noisette) {
    46                                 if ($_noisette['est_conteneur'] == 'oui') {
    47                                         ncore_conteneur_destocker($plugin, $_noisette, $stockage);
    48                                 }
    49                         }
    50                 }
     37                // On charge l'API de N-Core.
     38                // Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
     39                include_spip('ncore/ncore');
    5140                $retour = ncore_conteneur_destocker($plugin, $conteneur, $stockage);
    5241        }
  • _plugins_/n-core/trunk/inc/ncore_noisette.php

    r110211 r110214  
    169169                $description = ncore_noisette_decrire($plugin, $noisette, $stockage);
    170170
    171                 // Si la noisette est de type conteneur, il faut vider le conteneur des éventuelles noisettes
    172                 // incluses avant de supprimer la noisette elle-même.
     171                // Si la noisette est de type conteneur, il faut la supprimer en vidant le conteneur qu'elle représente
     172                // et ce de façon récursive. La récursivité est gérée par la fonction de service ncore_conteneur_destocker().
    173173                if ($description['est_conteneur'] == 'oui') {
    174174                        // Inutile de redéfinir un conteneur car la description de la noisette contient les deux champs
    175175                        // essentiels, à savoir, type_noisette et id_noisette.
    176                         ncore_conteneur_destocker($plugin, $description, $stockage);
    177                 }
    178 
    179                 // Suppression de la noisette. On passe la description complète ce qui permet à la fonction de
    180                 // destockage de choisir la méthode d'identification la plus adaptée.
    181                 $retour = ncore_noisette_destocker($plugin, $description, $stockage);
     176                        $retour = ncore_conteneur_destocker($plugin, $description, $stockage);
     177                } else {
     178                        // Suppression de la noisette. On passe la description complète ce qui permet à la fonction de
     179                        // destockage de choisir la méthode d'identification la plus adaptée.
     180                        $retour = ncore_noisette_destocker($plugin, $description, $stockage);
     181                }
    182182
    183183                // On récupère les noisettes restant affectées au conteneur sous la forme d'un tableau indexé par rang.
  • _plugins_/n-core/trunk/ncore/ncore.php

    r110051 r110214  
    796796
    797797/**
    798  * Retire, de l'espace de stockage, toutes les noisettes d'un conteneur.
     798 * Retire, de l'espace de stockage, toutes les noisettes d'un conteneur et ce de façon récursive si
     799 * il existe une imbrication de conteneurs.
    799800 *
    800801 * @package SPIP\NCORE\CONTENEUR\SERVICE
    801802 *
    802803 * @uses ncore_chercher_service()
     804 * @uses ncore_noisette_lister()
    803805 * @uses ncore_conteneur_identifier()
    804806 *
     
    819821        // Initialisation de la sortie.
    820822        $retour = false;
     823
     824        // On liste les noisettes du conteneur concerné et on repère les noisettes conteneur.
     825        // Chaque conteneur imbriqué est vidé et ce de façon récursive.
     826        foreach (ncore_noisette_lister($plugin, $conteneur, '', 'rang_noisette', $stockage) as $_noisette) {
     827                if ($_noisette['est_conteneur'] == 'oui') {
     828                        // On vide récursivement les noisettes de type conteneur.
     829                        ncore_conteneur_destocker($plugin, $_noisette, $stockage);
     830                }
     831        }
    821832
    822833        // On cherche le service de stockage à utiliser selon la logique suivante :
Note: See TracChangeset for help on using the changeset viewer.