forked from spip-contrib-extensions/pensebetes
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.4 KiB
PHP
86 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* Gestion de l'action supprimer_pensebete
|
|
*
|
|
* @plugin Pense-bêtes
|
|
* @copyright 2019-2021
|
|
* @author Vincent CALLIES
|
|
* @licence GNU/GPL
|
|
* @package SPIP\Pensebetes\Actions
|
|
*/
|
|
|
|
if (!defined("_ECRIRE_INC_VERSION")) return;
|
|
|
|
/**
|
|
* Action pour supprimer un Pense-bête
|
|
*
|
|
* En réalité, c'est la déclaration de l'auteur comme receveur du pense-bête
|
|
* qui est supprimée, ce qui fait qu'il ne s'affiche plus (pour lui).
|
|
* Si l'auteur était le dernier receveur, alors le
|
|
* pense-bête effectivement est supprimé.
|
|
*
|
|
* @param int $id_pensebete Identifiant de l'objet
|
|
* @return void
|
|
**/
|
|
|
|
function action_supprimer_pensebete_dist($id_pensebete=null){
|
|
|
|
if (is_null($id_pensebete)){
|
|
$securiser_action = charger_fonction('securiser_action', 'inc');
|
|
$id_pensebete = $securiser_action();
|
|
}
|
|
|
|
if (!autoriser('pensebete_supprimer', 'pensebete', $id_pensebete)) {
|
|
include_spip('inc/minipres');
|
|
minipres(_T('erreur'),_T('pensebete:erreur_suppression'));
|
|
exit;
|
|
}
|
|
|
|
$id_auteur = $GLOBALS['auteur_session']['id_auteur'];
|
|
// Le demandeur de la suppression est-il le donneur du pense-bête ?
|
|
if (
|
|
$id_donneur = sql_getfetsel('id_donneur', 'spip_pensebetes', 'id_pensebete=' . intval($id_pensebete))
|
|
and
|
|
$id_donneur == $id_auteur
|
|
) {
|
|
$sup_receveur = sql_delete('spip_pensebetes_receveurs', array('id_pensebete=' . intval($id_pensebete)));
|
|
$sup_pensebete = sql_delete('spip_pensebetes', array('id_pensebete=' . intval($id_pensebete)));
|
|
} else {
|
|
// le receveur ne veut plus être destinataire du pense-bête
|
|
$sup_receveur = sql_delete('spip_pensebetes_receveurs',array('id_pensebete=' . intval($id_pensebete), 'id_receveur=' . $id_auteur));
|
|
// si le receveur était le dernier destinataire du pense-bête, on supprime le pense-bête
|
|
$encore = sql_countsel('spip_pensebetes_receveurs', 'id_pensebete=' . intval($id_pensebete));
|
|
if (!$encore) {
|
|
$sup_pensebete = sql_delete('spip_pensebetes',array('id_pensebete=' . intval($id_pensebete)));
|
|
}
|
|
}
|
|
|
|
if (!$sup_receveur) {
|
|
spip_log(_T('pensebete:log_action_supprimer_receveur_imp', array( 'id' => intval($id_pensebete), 'aut' => $id_auteur)),'pensebetes.' . _LOG_ERREUR);
|
|
} else {
|
|
spip_log(_T('pensebete:log_action_supprimer_receveur', array('id' => intval($id_pensebete),'aut' => $id_auteur, 'nb' => $sup_receveur)),'pensebetes.' . _LOG_INFO_IMPORTANTE);
|
|
}
|
|
|
|
if (!$sup_pensebete) {
|
|
spip_log(_T('pensebete:log_action_supprimer_pensebete_imp', array('id' => intval($id_pensebete), 'aut' => $id_auteur)),'pensebetes.' . _LOG_ERREUR);
|
|
} else {
|
|
spip_log(_T('pensebete:log_action_supprimer_pensebete', array('id' => intval($id_pensebete), 'aut' => $id_auteur)),'pensebetes.' . _LOG_INFO_IMPORTANTE);
|
|
// supprimer les liaisons
|
|
$sup_pensebete = sql_delete('spip_pensebetes_liens', array('id_pensebete=' . intval($id_pensebete)));
|
|
}
|
|
// si l'on est en train de visualiser le contenu du pense-bête
|
|
// sa suppression ne permet pas la redirection prévue :
|
|
if (_request('exec') == 'pensebete' and test_espace_prive()) {
|
|
// Nous sommes dans l'espace privé et l'on regarde le contenu d'un pensebete
|
|
// On le supprimer, il faut revenir vers la liste des pensesbetes
|
|
include_spip('inc/headers');
|
|
$redirect = generer_url_ecrire('pensebetes');
|
|
redirige_par_entete($redirect);
|
|
}
|
|
// Invalider les caches
|
|
// pour que la page soit recalculée et que le pense-bête disparaisse.
|
|
include_spip('inc/invalideur');
|
|
suivre_invalideur("id='pensebete/$id_pensebete'");
|
|
}
|
|
|
|
?>
|