[SPIP] ~v3.2.5-->v3.2.7
[lhc/web/www.git] / www / squelettes-dist / formulaires / oubli.php
index 34d59ae..1d7b74e 100644 (file)
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2013                                                *
+ *  Copyright (c) 2001-2019                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 // chargement des valeurs par defaut des champs du formulaire
-function formulaires_oubli_charger_dist(){
-       $valeurs = array('oubli'=>'');
+function formulaires_oubli_charger_dist() {
+       $valeurs = array('oubli' => '', 'nobot' => '');
+
        return $valeurs;
 }
 
-// http://doc.spip.org/@message_oubli
-function message_oubli($email, $param)
-{
+// https://code.spip.net/@message_oubli
+function message_oubli($email, $param) {
        $r = formulaires_oubli_mail($email);
-       if (is_array($r) AND $r[1]) {
+       
+       if (is_array($r) and $r[1] and $r[1]['statut'] !== '5poubelle' and $r[1]['pass'] !== '') {
                include_spip('inc/texte'); # pour corriger_typo
 
                include_spip('action/inscrire_auteur');
                $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
 
+               // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site
+               include_spip('inc/filtres');
                $msg = recuperer_fond(
-                       "modeles/mail_oubli",
+                       'modeles/mail_oubli',
                        array(
-                               'url_reset'=>generer_url_public('spip_pass',"$param=$cookie", true, false)
+                               'url_reset' => url_absolue(
+                                       generer_url_public('spip_pass', "$param=$cookie"),
+                                       $GLOBALS['meta']['adresse_site'] . '/'
+                               )
                        )
                );
-               include_spip("inc/notifications");
+               include_spip('inc/notifications');
                notifications_envoyer_mails($email, $msg);
-         return _T('pass_recevoir_mail');
        }
-       return  _T('pass_erreur_probleme_technique');
+
+       return _T('pass_recevoir_mail');
 }
 
 // la saisie a ete validee, on peut agir
-function formulaires_oubli_traiter_dist(){
+function formulaires_oubli_traiter_dist() {
 
-       $message = message_oubli(_request('oubli'),'p');
-       return array('message_ok'=>$message);
+       $message = message_oubli(_request('oubli'), 'p');
+
+       return array('message_ok' => $message);
 }
 
 
 // fonction qu'on peut redefinir pour filtrer les adresses mail
-// http://doc.spip.org/@test_oubli
-function test_oubli_dist($email)
-{
+// https://code.spip.net/@test_oubli
+function test_oubli_dist($email) {
        include_spip('inc/filtres'); # pour email_valide()
-       if (!email_valide($email) )
-               return _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($email)));
+       if (!email_valide($email)) {
+               return _T('pass_erreur_non_valide', array('email_oubli' => spip_htmlspecialchars($email)));
+       }
+
        return array('mail' => $email);
 }
 
-function formulaires_oubli_verifier_dist(){
+function formulaires_oubli_verifier_dist() {
        $erreurs = array();
 
        $email = strval(_request('oubli'));
 
        $r = formulaires_oubli_mail($email);
 
-       if (!is_array($r))
+       if (!is_array($r)) {
                $erreurs['oubli'] = $r;
-       else {
-               if (!$r[1])
-                       $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($email)));
+       } else {
+               if (!$r[1]) {
+                       spip_log("demande de reinitialisation de mot de passe pour $email non enregistre sur le site", "oubli");
+               } elseif ($r[1]['statut'] == '5poubelle' or $r[1]['pass'] == '') {
+                       spip_log("demande de reinitialisation de mot de passe pour $email sans acces (poubelle ou pass vide)", "oubli");
+               }
+       }
 
-               elseif ($r[1]['statut'] == '5poubelle' OR $r[1]['pass'] == '')
-                       $erreurs['oubli'] =  _T('pass_erreur_acces_refuse');
+       if (_request('nobot')) {
+               $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
        }
 
        return $erreurs;
 }
 
-function formulaires_oubli_mail($email)
-{
-       if (function_exists('test_oubli'))
+function formulaires_oubli_mail($email) {
+       if (function_exists('test_oubli')) {
                $f = 'test_oubli';
-       else
+       } else {
                $f = 'test_oubli_dist';
+       }
        $declaration = $f($email);
 
-       if (!is_array($declaration))
+       if (!is_array($declaration)) {
                return $declaration;
-       else {
+       else {
                include_spip('base/abstract_sql');
-               return array($declaration, sql_fetsel("id_auteur,statut,pass", "spip_auteurs", "email =" . sql_quote($declaration['mail'])));
+
+               return array(
+                       $declaration,
+                       sql_fetsel('id_auteur,statut,pass', 'spip_auteurs', 'email =' . sql_quote($declaration['mail']))
+               );
        }
 }
-?>