119 lines
3.5 KiB
PHP
119 lines
3.5 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Utilisation de l'action supprimer pour l'objet chapitre
|
||
|
*
|
||
|
* @plugin chapitre
|
||
|
* @copyright 2021
|
||
|
* @author chankalan,vcalame
|
||
|
* @licence GNU/GPL
|
||
|
* @package SPIP\Chapitre\Action
|
||
|
*/
|
||
|
|
||
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Action pour supprimer un·e chapitre
|
||
|
*
|
||
|
* Vérifier l'autorisation avant d'appeler l'action.
|
||
|
*
|
||
|
* @example
|
||
|
* ```
|
||
|
* [(#AUTORISER{supprimer, chapitre, #ID_CHAPITRE}|oui)
|
||
|
* [(#BOUTON_ACTION{<:chapitre:supprimer_chapitre:/>,
|
||
|
* #URL_ACTION_AUTEUR{supprimer_chapitre, #ID_CHAPITRE, #URL_ECRIRE{chapitres}},
|
||
|
* danger, <:chapitre:confirmer_supprimer_chapitre:/>})]
|
||
|
* ]
|
||
|
* ```
|
||
|
*
|
||
|
* @example
|
||
|
* ```
|
||
|
* [(#AUTORISER{supprimer, chapitre, #ID_CHAPITRE}|oui)
|
||
|
* [(#BOUTON_ACTION{
|
||
|
* [(#CHEMIN_IMAGE{chapitre-del-24.png}|balise_img{<:chapitre:supprimer_chapitre:/>}|concat{' ',#VAL{<:chapitre:supprimer_chapitre:/>}|wrap{<b>}}|trim)],
|
||
|
* #URL_ACTION_AUTEUR{supprimer_chapitre, #ID_CHAPITRE, #URL_ECRIRE{chapitres}},
|
||
|
* icone s24 horizontale danger chapitre-del-24, <:chapitre:confirmer_supprimer_chapitre:/>})]
|
||
|
* ]
|
||
|
* ```
|
||
|
*
|
||
|
* @example
|
||
|
* ```
|
||
|
* if (autoriser('supprimer', 'chapitre', $id_chapitre)) {
|
||
|
* $supprimer_chapitre = charger_fonction('supprimer_chapitre', 'action');
|
||
|
* $supprimer_chapitre($id_chapitre);
|
||
|
* }
|
||
|
* ```
|
||
|
*
|
||
|
* @param null|int $arg
|
||
|
* Identifiant à supprimer.
|
||
|
* En absence de id utilise l'argument de l'action sécurisée.
|
||
|
**/
|
||
|
function action_supprimer_chapitre_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_chapitre_avant_action(_T('chapitre:confirmer_supprimer_chapitre'), _T('item_oui') . '! ' . _T('chapitre:supprimer_chapitre'));
|
||
|
}
|
||
|
|
||
|
// cas suppression
|
||
|
if (autoriser('supprimer', 'chapitre', $arg)) {
|
||
|
if ($arg) {
|
||
|
$objet = sql_fetsel('*', 'spip_chapitres', 'id_chapitre=' . sql_quote($arg));
|
||
|
$qui = (!empty($GLOBALS['visiteur_session']['id_auteur']) ? 'auteur #' . $GLOBALS['visiteur_session']['id_auteur'] : 'IP ' . $GLOBALS['ip']);
|
||
|
spip_log("SUPPRESSION chapitre#$arg par $qui : " . json_encode($objet), "suppressions" . _LOG_INFO_IMPORTANTE);
|
||
|
|
||
|
sql_delete('spip_chapitres', 'id_chapitre=' . sql_quote($arg));
|
||
|
|
||
|
// invalider le cache
|
||
|
include_spip('inc/invalideur');
|
||
|
suivre_invalideur("id='chapitre/$arg'");
|
||
|
|
||
|
}
|
||
|
else {
|
||
|
spip_log("action_supprimer_chapitre_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_chapitre_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 = "<div style='text-align:center;'>$bouton_action</div>";
|
||
|
|
||
|
include_spip("inc/minipres");
|
||
|
echo minipres($titre,$corps);
|
||
|
exit;
|
||
|
}
|