[SPIP] v3.2.12 -> v3.2.12 - Reinstallation avec le spip_loader
[lhc/web/www.git] / www / squelettes-dist / formulaires / oubli.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2020 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) {
14 return;
15 }
16
17 // chargement des valeurs par defaut des champs du formulaire
18 function formulaires_oubli_charger_dist() {
19 $valeurs = array('oubli' => '', 'nobot' => '');
20
21 return $valeurs;
22 }
23
24 // https://code.spip.net/@message_oubli
25 function message_oubli($email, $param) {
26 $r = formulaires_oubli_mail($email);
27
28 if (is_array($r) and $r[1] and $r[1]['statut'] !== '5poubelle' and $r[1]['pass'] !== '') {
29 include_spip('inc/texte'); # pour corriger_typo
30
31 include_spip('action/inscrire_auteur');
32 $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
33
34 // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site
35 include_spip('inc/filtres');
36 $msg = recuperer_fond(
37 'modeles/mail_oubli',
38 array(
39 'url_reset' => url_absolue(
40 generer_url_public('spip_pass', "$param=$cookie"),
41 $GLOBALS['meta']['adresse_site'] . '/'
42 )
43 )
44 );
45 include_spip('inc/notifications');
46 notifications_envoyer_mails($email, $msg);
47 }
48
49 return _T('pass_recevoir_mail');
50 }
51
52 // la saisie a ete validee, on peut agir
53 function formulaires_oubli_traiter_dist() {
54
55 $message = message_oubli(_request('oubli'), 'p');
56
57 return array('message_ok' => $message);
58 }
59
60
61 // fonction qu'on peut redefinir pour filtrer les adresses mail
62 // https://code.spip.net/@test_oubli
63 function test_oubli_dist($email) {
64 include_spip('inc/filtres'); # pour email_valide()
65 if (!email_valide($email)) {
66 return _T('pass_erreur_non_valide', array('email_oubli' => spip_htmlspecialchars($email)));
67 }
68
69 return array('mail' => $email);
70 }
71
72 function formulaires_oubli_verifier_dist() {
73 $erreurs = array();
74
75 $email = strval(_request('oubli'));
76
77 $r = formulaires_oubli_mail($email);
78
79 if (!is_array($r)) {
80 $erreurs['oubli'] = $r;
81 } else {
82 if (!$r[1]) {
83 spip_log("demande de reinitialisation de mot de passe pour $email non enregistre sur le site", "oubli");
84 } elseif ($r[1]['statut'] == '5poubelle' or $r[1]['pass'] == '') {
85 spip_log("demande de reinitialisation de mot de passe pour $email sans acces (poubelle ou pass vide)", "oubli");
86 }
87 }
88
89 if (_request('nobot')) {
90 $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
91 }
92
93 return $erreurs;
94 }
95
96 function formulaires_oubli_mail($email) {
97 if (function_exists('test_oubli')) {
98 $f = 'test_oubli';
99 } else {
100 $f = 'test_oubli_dist';
101 }
102 $declaration = $f($email);
103
104 if (!is_array($declaration)) {
105 return $declaration;
106 } else {
107 include_spip('base/abstract_sql');
108
109 return array(
110 $declaration,
111 sql_fetsel('id_auteur,statut,pass', 'spip_auteurs', 'email =' . sql_quote($declaration['mail']))
112 );
113 }
114 }