[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_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-2016 *
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')) return;
14
15 // chargement des valeurs par defaut des champs du formulaire
16 function formulaires_oubli_charger_dist(){
17 $valeurs = array('oubli'=>'','nobot'=>'');
18 return $valeurs;
19 }
20
21 // http://code.spip.net/@message_oubli
22 function message_oubli($email, $param)
23 {
24 $r = formulaires_oubli_mail($email);
25 if (is_array($r) AND $r[1]) {
26 include_spip('inc/texte'); # pour corriger_typo
27
28 include_spip('action/inscrire_auteur');
29 $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
30
31 // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site
32 include_spip('inc/filtres');
33 $msg = recuperer_fond(
34 "modeles/mail_oubli",
35 array(
36 'url_reset' => url_absolue(generer_url_public('spip_pass', "$param=$cookie"), $GLOBALS['meta']['adresse_site'] . '/')
37 )
38 );
39 include_spip("inc/notifications");
40 notifications_envoyer_mails($email, $msg);
41 return _T('pass_recevoir_mail');
42 }
43 return _T('pass_erreur_probleme_technique');
44 }
45
46 // la saisie a ete validee, on peut agir
47 function formulaires_oubli_traiter_dist(){
48
49 $message = message_oubli(_request('oubli'),'p');
50 return array('message_ok'=>$message);
51 }
52
53
54 // fonction qu'on peut redefinir pour filtrer les adresses mail
55 // http://code.spip.net/@test_oubli
56 function test_oubli_dist($email)
57 {
58 include_spip('inc/filtres'); # pour email_valide()
59 if (!email_valide($email) )
60 return _T('pass_erreur_non_valide', array('email_oubli' => spip_htmlspecialchars($email)));
61 return array('mail' => $email);
62 }
63
64 function formulaires_oubli_verifier_dist(){
65 $erreurs = array();
66
67 $email = strval(_request('oubli'));
68
69 $r = formulaires_oubli_mail($email);
70
71 if (!is_array($r))
72 $erreurs['oubli'] = $r;
73 else {
74 if (!$r[1])
75 $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => spip_htmlspecialchars($email)));
76
77 elseif ($r[1]['statut'] == '5poubelle' OR $r[1]['pass'] == '')
78 $erreurs['oubli'] = _T('pass_erreur_acces_refuse');
79 }
80
81 if (_request('nobot'))
82 $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
83
84 return $erreurs;
85 }
86
87 function formulaires_oubli_mail($email)
88 {
89 if (function_exists('test_oubli'))
90 $f = 'test_oubli';
91 else
92 $f = 'test_oubli_dist';
93 $declaration = $f($email);
94
95 if (!is_array($declaration))
96 return $declaration;
97 else {
98 include_spip('base/abstract_sql');
99 return array($declaration, sql_fetsel("id_auteur,statut,pass", "spip_auteurs", "email =" . sql_quote($declaration['mail'])));
100 }
101 }
102 ?>