Changeset 113480 in spip-zone


Ignore:
Timestamp:
Jan 17, 2019, 8:22:26 PM (3 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).

Location:
_plugins_/noizetier/trunk
Files:
4 edited

Legend:

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

    r104962 r113480  
    3030
    3131        if ($page) {
     32                // On récupère la liste des blocs ayant des noisettes
     33                include_spip('inc/noizetier_page');
     34                $blocs = noizetier_page_compter_noisettes($page);
     35
     36                // Suppression des noisettes concernées en utilisant l'API de vidage d'un conteneur, le conteneur étant
     37                // chaque bloc de la composition virtuelle.
     38                if ($blocs) {
     39                        include_spip('inc/ncore_conteneur');
     40                        include_spip('inc/noizetier_conteneur');
     41                        foreach (array_keys($blocs) as $_bloc) {
     42                                // On calcule le conteneur sous sa forme identifiant chaine.
     43                                $id_conteneur = noizetier_conteneur_composer($page, $_bloc);
     44                                conteneur_vider('noizetier', $id_conteneur);
     45                        }
     46                }
     47
     48                // On supprime la composition elle-même.
    3249                sql_delete('spip_noizetier_pages', array('page=' . sql_quote($page)));
    33                 // TODO : ne faudrait-il pas supprimer les noisettes utilisées dans la page ?
    3450        }
    3551}
  • _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
  • _plugins_/noizetier/trunk/noizetier_autorisations.php

    r113334 r113480  
    197197 * Autorisation de suppression d'une composition virtuelle du noiZetier.
    198198 * Il faut :
    199  * - être autorisé à configurer le noiZetier
     199 * - être autorisé à configurer la page concernée (pour la suppression des noisettes)
    200200 * - et que la page existe toujours et soit bien une composition virtuelle.
    201201 *
     
    212212
    213213        include_spip('inc/noizetier_page');
    214         if (autoriser('noizetier')
    215         and (is_array($options) and !empty($options))
    216         and (!empty($options['page']) and ($configuration = noizetier_page_lire($options['page'], false))
    217         and $configuration['composition'])
     214        if ((is_array($options) and !empty($options['page']))
     215        and autoriser('configurerpage', 'noizetier', 0, '', $options)
     216        and ($configuration = noizetier_page_lire($options['page'], false))
     217        and $configuration['composition']
    218218        and ($configuration['est_virtuelle'] == 'oui')) {
    219219                $autoriser = true;
  • _plugins_/noizetier/trunk/paquet.xml

    r113444 r113480  
    22        prefix="noizetier"
    33        categorie="maintenance"
    4         version="3.0.66"
     4        version="3.0.67"
    55        etat="dev"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.