[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / squelettes-dist / formulaires / mot_de_passe.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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 /**
17 * Chargement de l'auteur qui peut changer son mot de passe.
18 * Soit un cookie d'oubli fourni par #FORMULAIRE_OUBLI est passe dans l'url par &p=
19 * Soit un id_auteur est passe en parametre #FORMULAIRE_MOT_DE_PASSE{#ID_AUTEUR}
20 * Dans les deux cas on verifie que l'auteur est autorise
21 *
22 * @param int $id_auteur
23 * @return array
24 */
25 function formulaires_mot_de_passe_charger_dist($id_auteur=null){
26
27 include_spip('base/abstract_sql');
28 $valeurs = array();
29 if ($id_auteur=intval($id_auteur)) {
30 $id_auteur = sql_getfetsel('id_auteur','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''"));
31 }
32 elseif ($p=_request('p')) {
33 $p = preg_replace(',[^0-9a-f.],i','',$p);
34 if ($p AND $id_auteur = sql_getfetsel('id_auteur','spip_auteurs',array('cookie_oubli='.sql_quote($p),"statut<>'5poubelle'","pass<>''")))
35 $valeurs['_hidden'] = '<input type="hidden" name="p" value="'.$p.'" />';
36 }
37
38 if ($id_auteur){
39 $valeurs['id_auteur'] = $id_auteur; // a toutes fins utiles pour le formulaire
40 }
41 else {
42 $valeurs['_hidden'] = _T('pass_erreur_code_inconnu');
43 $valeurs['editable'] = false; // pas de saisie
44 }
45 return $valeurs;
46 }
47
48 /**
49 * Verification de la saisie du mot de passe.
50 * On verifie qu'un mot de passe est saisi, et que sa longuer est suffisante
51 * Ce serait le lieu pour verifier sa qualite (caracteres speciaux ...)
52 *
53 * @param int $id_auteur
54 */
55 function formulaires_mot_de_passe_verifier_dist($id_auteur=null){
56 $erreurs = array();
57 if (!_request('oubli'))
58 $erreurs['oubli'] = _T('info_obligatoire');
59 else if (strlen(_request('oubli')) < 6)
60 $erreurs['oubli'] = _T('info_passe_trop_court');
61
62 return $erreurs;
63 }
64
65 /**
66 * Modification du mot de passe d'un auteur.
67 * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur
68 *
69 * @param int $id_auteur
70 */
71 function formulaires_mot_de_passe_traiter_dist($id_auteur=null){
72 $message = '';
73 include_spip('base/abstract_sql');
74 if ($id_auteur=intval($id_auteur)) {
75 $row = sql_fetsel('id_auteur,login','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''"));
76 }
77 elseif ($p=_request('p')) {
78 $p = preg_replace(',[^0-9a-f.],i','',$p);
79 $row = sql_fetsel('id_auteur,login,source','spip_auteurs',array('cookie_oubli='.sql_quote($p),"statut<>'5poubelle'","pass<>''"));
80 }
81
82 if ($row
83 && ($id_auteur = $row['id_auteur'])
84 && ($oubli = _request('oubli'))) {
85 include_spip('action/editer_auteur');
86 auteurs_set($id_auteur, array('pass'=>$oubli,'cookie_oubli'=>''));
87
88 $login = $row['login'];
89 $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
90 "<br />" . _T('pass_rappel_login', array('login' => $login));
91 }
92 return array('message_ok'=>$message);
93 }
94 ?>