#PHP [(#INCLURE{fond=fabrique/entetes/php,env, description=Utilisation de l'action supprimer pour l'objet #ENV{type}, package=Action})] /** * Action pour supprimer un·e [(#ENV{type})] * * Vérifier l'autorisation avant d'appeler l'action. * * @example * ``` * [(\#AUTORISER{supprimer, #TYPE, \##MID_OBJET}|oui) * [(\#BOUTON_ACTION{\<:#TYPE:supprimer_#TYPE:/>, * \#URL_ACTION_AUTEUR{supprimer_#TYPE, \##MID_OBJET, \#URL_ECRIRE{#LOBJET}}, * danger, \<:#TYPE:confirmer_supprimer_#TYPE:/>})] * ] * ``` * * @example * ``` * [(\#AUTORISER{supprimer, #TYPE, \##MID_OBJET}|oui) * [(\#BOUTON_ACTION{ * [(\#CHEMIN_IMAGE{#TYPE-del-24.png}|balise_img{\<:#TYPE:supprimer_#TYPE:/>}|concat{' ',\#VAL{\<:#TYPE:supprimer_#TYPE:/>}|wrap{}}|trim)], * \#URL_ACTION_AUTEUR{supprimer_#TYPE, \##MID_OBJET, \#URL_ECRIRE{#LOBJET}}, * icone s24 horizontale danger #TYPE-del-24, \<:#TYPE:confirmer_supprimer_#TYPE:/>})] * ] * ``` * * @example * ``` * if (autoriser('supprimer', '#TYPE', $#ID_OBJET)) { * $supprimer_#TYPE = charger_fonction('supprimer_#TYPE', 'action'); * $supprimer_#TYPE($#ID_OBJET); * } * ``` * * @param null|int $arg * Identifiant à supprimer. * En absence de id utilise l'argument de l'action sécurisée. **/ function action_supprimer_#ENV{type}_dist($arg=null) { $need_confirm = false; if (is_null($arg)){ $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); $need_confirm = true; } $arg = intval($arg); if ($need_confirm){ $ok = confirmer_supprimer_#ENV{type}_avant_action(_T('#ENV{type}:confirmer_supprimer_#ENV{type}'), _T('item_oui') . '! ' . _T('#ENV{type}:supprimer_#ENV{type}')); } // cas suppression if (autoriser('supprimer', '#ENV{type}', $arg)) { if ($arg) { $objet = sql_fetsel('*', '#TABLE', '#ID_OBJET=' . sql_quote($arg)); $qui = (!empty($GLOBALS['visiteur_session']['id_auteur']) ? 'auteur #' . $GLOBALS['visiteur_session']['id_auteur'] : 'IP ' . $GLOBALS['ip']); spip_log("SUPPRESSION #ENV{type} #$arg par $qui : " . json_encode($objet), "suppressions" . _LOG_INFO_IMPORTANTE); sql_delete('#TABLE', '#ID_OBJET=' . sql_quote($arg)); include_spip('action/editer_logo'); logo_supprimer('#TABLE', $arg, 'on'); logo_supprimer('#TABLE', $arg, 'off'); // invalider le cache include_spip('inc/invalideur'); suivre_invalideur("id='#ENV{type}/$arg'"); } else { spip_log("action_supprimer_#ENV{type}_dist $arg pas compris"); } } } /** * Confirmer avant suppression si on arrive par un bouton action * @param string $titre * @param string $titre_bouton * @param string|null $url_action * @return bool */ function confirmer_supprimer_#ENV{type}_avant_action($titre, $titre_bouton, $url_action=null) { if (!$url_action) { $url_action = self(); $action = _request('action'); $url_action = parametre_url($url_action, 'action', $action, '&'); } else { $action = parametre_url($url_action, 'action'); } $arg = parametre_url($url_action, 'arg'); $confirm = md5("$action:$arg:".realpath(__FILE__)); if (_request('confirm_action') === $confirm) { return true; } $url_confirm = parametre_url($url_action, "confirm_action", $confirm, '&'); include_spip("inc/filtres"); $bouton_action = bouton_action($titre_bouton, $url_confirm); $corps = "
$bouton_action
"; include_spip("inc/minipres"); echo minipres($titre,$corps); exit; }