compteSPIP/formulaires/supprimer_compte_spip.php

108 lines
2.8 KiB
PHP

<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_supprimer_compte_spip_charger_dist($id_auteur, $redirect = ''){
if (! intval($id_auteur)) {
return false;
}
$row = sql_fetsel('login, alea_actuel, alea_futur', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
$valeurs = array(
'password' => '',
'toto' => '',
'login' => $row['login'],
'_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
'_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
);
return $valeurs;
}
function formulaires_supprimer_compte_spip_verifier_dist($id_auteur, $redirect = ''){
$erreurs = array();
if (! intval($id_auteur)) {
$erreurs['message_erreur'] = _T('moncompte:action_interdite');
return $erreurs;
}
//champs obligatoire
foreach (array ('password') as $obligatoire) {
if (!_request($obligatoire)) $erreurs[$obligatoire] = _T('obligatoire');
}
return $erreurs;
}
function formulaires_supprimer_compte_spip_traiter_dist($id_auteur, $redirect = ''){
$chaine = _request('password');
$password_a_tester = explode(';', $chaine)[0];
$password = sql_getfetsel('pass', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
$retour = array();
if (
!$password or
$password === $password_a_tester
) {
supprimer_ce_compte($id_auteur);
$retour['message_ok'] = _T('moncompte:compte_supprime');
} else {
echo "Ne pas Supprimer";
$retour['message_erreur'] = _T('moncompte:compte_pas_supprime');
}
$retour['redirect'] = "spip.php";
if ($redirect) {
$retour = $redirect;
}
return $retour;
}
function supprimer_ce_compte($id_auteur){
// suppression definitive du compte
$type_action = 'poubelle';
if (lire_config('comptespip/choix_suppression_compte') === 'supprimer' ) {
$type_action = 'suppression';
sql_delete('spip_auteurs','id_auteur='.intval($id_auteur));
sql_delete('spip_forum','id_auteur='.intval($id_auteur));
$from = array(
'spip_auteurs_liens'
);
$where = array(
'id_auteur='.intval($id_auteur),
'objet="article"',
);
$T_id_article = sql_allfetsel('id_objet',$from, $where);
$in = sql_in('id_article', array_column($T_id_article, 'id_objet'));
sql_updateq('spip_articles', array('statut' => 'poubelle'), $in);
} else {
// on passe à la poubelle le compte
sql_updateq('spip_auteurs', array('statut' => '5poubelle'), 'id_auteur='.intval($id_auteur));
sql_updateq('spip_forum', array('auteur' => '', 'email_auteur' => ''), 'id_auteur='.intval($id_auteur));
}
pipeline('comptespip_desinscription',[
'args' => compact('id_auteur', 'type_action'),
'data' => ''
]);
// on deconnecte
$logout = charger_fonction('logout','action');
set_request('url', 'spip.php');
$logout();
// On invalide le cache
include_spip('inc/invalideur');
suivre_invalideur("id='id_auteur/$id_auteur'");
}