Ignore:
Timestamp:
Jan 17, 2019, 8:22:26 PM (4 months ago)
Author:
eric@…
Message:

Corriger l'autorisation de suppression d'une composition virtuelle (il faut configurerpage aussi).
Simplifier l'action vider_page en utilisant l'API conteneur_vider.
Corriger l'action supprimer_composition en ajoutant le vidage des noisettes des blocs de la composition (avec l'API conteneur_vider).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/action/vider_page.php

    r110066 r113480  
    1111/**
    1212 * Cette action permet à l'utilisateur de supprimer de sa base de données, de façon sécurisée,
    13  * toutes les noisettes d'un conteneur, d'une page ou d'un objet.
     13 * toutes les noisettes d'une page ou d'un objet.
    1414 * Les compositions de page explicites ou virtuelles (créée par le noizetier) sont aussi prises en compte.
    1515 *
     
    4848                }
    4949
    50                 // Suppression des noisettes concernées.
    51                 // -- On ne s'occupe que des noisettes du noizetier
    52                 $where[] = 'plugin=' . sql_quote('noizetier');
    53                 if (!empty($options['objet'])) {
    54                         // -- Suppression des noisettes d'un objet d'un type donnée
    55                         $where[] = 'objet=' . sql_quote($options['objet']);
    56                         $where[] = 'id_objet=' . intval($options['id_objet']);
     50                // On récupère la liste des blocs ayant des noisettes
     51                if ($options['page']) {
     52                        include_spip('inc/noizetier_page');
     53                        $blocs = noizetier_page_compter_noisettes($options['page']);
     54                        $page_ou_objet = $options['page'];
    5755                } else {
    58                         // -- Suppression des noisettes d'une page.
    59                         //    Il faut tenir compte du cas où la page est une composition auquel cas le type et la
    60                         //    composition sont insérées séparément dans la table spip_noisettes.
    61                         $identifiants = explode('-', $options['page'], 2);
    62                         $where[] = 'type=' . sql_quote($identifiants[0]);
    63                         if (isset($identifiants[1])) {
    64                                 $where[] = 'composition=' . sql_quote($identifiants[1]);
    65                         } else {
    66                                 $where[] = 'composition=' . sql_quote('');
     56                        include_spip('inc/noizetier_objet');
     57                        $blocs = noizetier_objet_compter_noisettes($options['objet'], $options['id_objet']);
     58                        $page_ou_objet = $options;
     59                }
     60
     61                // Suppression des noisettes concernées en utilisant l'API de vidage d'un conteneur, le conteneur étant
     62                // chaque bloc de la page ou de l'objet contenant des noisettes.
     63                if ($blocs) {
     64                        include_spip('inc/ncore_conteneur');
     65                        include_spip('inc/noizetier_conteneur');
     66                        foreach (array_keys($blocs) as $_bloc) {
     67                                // On calcule le conteneur sous sa forme identifiant chaine.
     68                                $id_conteneur = noizetier_conteneur_composer($page_ou_objet, $_bloc);
     69                                conteneur_vider('noizetier', $id_conteneur);
    6770                        }
    6871                }
    69 
    70                 // Suppression en base de données
    71                 sql_delete('spip_noisettes', $where);
    7272
    7373                // On invalide le cache
Note: See TracChangeset for help on using the changeset viewer.