#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;
}