diff --git a/gis_autoriser.php b/gis_autoriser.php index ba6d41a..aadadaf 100644 --- a/gis_autoriser.php +++ b/gis_autoriser.php @@ -121,11 +121,20 @@ function autoriser_gis_delier_dist($faire, $quoi, $id, $qui, $opts) { * @return boolean true/false */ function autoriser_gis_supprimer_dist($faire, $quoi, $id, $qui, $opts) { - $liaisons = sql_select('*', 'spip_gis_liens', 'id_gis=' . intval($id)); + include_spip('base/objets'); + + $objets_legitimes = array_map('objet_type', array_keys(lister_tables_objets_sql())); + $liaisons = sql_select( + '*', + 'spip_gis_liens', + array('id_gis=' . intval($id), sql_in('objet', $objets_legitimes)) + ); + while ($liaison = sql_fetch($liaisons)) { if (!autoriser('delier', 'gis', $liaison['id_gis'], $qui, $liaison)) { return false; } } + return autoriser('modifier', 'gis', $id, $qui, $opts); } diff --git a/paquet.xml b/paquet.xml index e450797..9a0c06c 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ +}})] + +#SET{objets_legitimes, #VAL{objet_type}|array_map{#VAL|lister_tables_objets_sql|array_keys}} + + #ANCRE_PAGINATION
@@ -17,7 +20,7 @@ - + @@ -25,10 +28,12 @@
[(#OBJET|objet_icone{16})] [(#OBJET|objet_info{texte_objet}|_T)]#INFO_TITRE{#OBJET,#ID_OBJET} - [(#BOUTON_ACTION{ - <:gis:info_supprimer_lien:> [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'X'})], - #URL_ACTION_AUTEUR{editer_lien_gis,delier/#ID_GIS/#OBJET/#ID_OBJET,#SELF}, - ajax})] + [(#AUTORISER{delier, gis, #ID_GIS, '', #ARRAY{objet,#OBJET,id_objet,#ID_OBJET}}|oui) + [(#BOUTON_ACTION{ + <:gis:info_supprimer_lien:> [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'X'})], + #URL_ACTION_AUTEUR{editer_lien_gis,delier/#ID_GIS/#OBJET/#ID_OBJET,#SELF}, + ajax})] + ]