From b2663ab4ab29c8fbd0ae1fe48e2b839cba6956ca Mon Sep 17 00:00:00 2001 From: nicod_ <nicod@lerebooteux.fr> Date: Thu, 23 Jan 2025 21:42:13 +0100 Subject: [PATCH] =?UTF-8?q?refactor:=20D=C3=A9placement=20de=20l'action=20?= =?UTF-8?q?de=20suppression=20d'un=20block=20dans=20un=20fichier=20d'inclu?= =?UTF-8?q?de=20=C3=A0=20part?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suppression des blocks enfants en même temps que le block parent --- action/editer_block.php | 22 ++++++++++++++++++++++ action/supprimer_block.php | 30 +++++++----------------------- 2 files changed, 29 insertions(+), 23 deletions(-) create mode 100644 action/editer_block.php diff --git a/action/editer_block.php b/action/editer_block.php new file mode 100644 index 0000000..470f0c8 --- /dev/null +++ b/action/editer_block.php @@ -0,0 +1,22 @@ +<?php + +function block_supprimer($id_block) { + + if ((int)$id_block && autoriser('supprimer', 'block', $id_block)) { + + $objet = sql_fetsel('*', 'spip_blocks', 'id_block=' . sql_quote($id_block)); + $qui = (!empty($GLOBALS['visiteur_session']['id_auteur']) ? 'auteur #' . $GLOBALS['visiteur_session']['id_auteur'] : 'IP ' . $GLOBALS['ip']); + spip_log("SUPPRESSION block#$id_block par $qui : " . json_encode($objet), "blocks" . _LOG_INFO_IMPORTANTE); + + sql_delete('spip_blocks', 'id_block=' . sql_quote($id_block)); + include_spip('action/editer_logo'); + logo_supprimer('spip_blocks', $id_block, 'on'); + logo_supprimer('spip_blocks', $id_block, 'off'); + + $enfants = sql_allfetsel('id_block', 'spip_blocks', 'objet = "block" and id_objet = ' . $id_block); + foreach ($enfants as $enfant) { + block_supprimer($enfant['id_block']); + } + + } +} diff --git a/action/supprimer_block.php b/action/supprimer_block.php index c32ed9a..62bcdb4 100644 --- a/action/supprimer_block.php +++ b/action/supprimer_block.php @@ -14,41 +14,25 @@ if (!defined('_ECRIRE_INC_VERSION')) { } /** - * Action pour supprimer un·e block + * Action pour supprimer un block * * Vérifier l'autorisation avant d'appeler l'action. * * @param null|int $arg * Identifiant à supprimer. * En absence de id utilise l'argument de l'action sécurisée. - * - * @throws \JsonException */ function action_supprimer_block_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } - $arg = intval($arg); - - // cas suppression - if (autoriser('supprimer', 'block', $arg)) { - if ($arg) { - $objet = sql_fetsel('*', 'spip_blocks', 'id_block=' . sql_quote($arg)); - $qui = (!empty($GLOBALS['visiteur_session']['id_auteur']) ? 'auteur #' . $GLOBALS['visiteur_session']['id_auteur'] : 'IP ' . $GLOBALS['ip']); - spip_log("SUPPRESSION block#$arg par $qui : " . json_encode($objet), "suppressions" . _LOG_INFO_IMPORTANTE); + $id_block = intval($arg); - sql_delete('spip_blocks', 'id_block=' . sql_quote($arg)); - include_spip('action/editer_logo'); - logo_supprimer('spip_blocks', $arg, 'on'); - logo_supprimer('spip_blocks', $arg, 'off'); + include_spip('action/editer_block'); + block_supprimer($id_block); - // invalider le cache - include_spip('inc/invalideur'); - suivre_invalideur("id='block/$arg'"); - - } else { - spip_log("action_supprimer_block_dist $arg pas compris"); - } - } + // invalider le cache + include_spip('inc/invalideur'); + suivre_invalideur("id='block/$id_block'"); } -- GitLab