oubli.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined('_ECRIRE_INC_VERSION')) return;
  12. // chargement des valeurs par defaut des champs du formulaire
  13. function formulaires_oubli_charger_dist(){
  14. $valeurs = array('oubli'=>'','nobot'=>'');
  15. return $valeurs;
  16. }
  17. // http://code.spip.net/@message_oubli
  18. function message_oubli($email, $param)
  19. {
  20. $r = formulaires_oubli_mail($email);
  21. if (is_array($r) AND $r[1]) {
  22. include_spip('inc/texte'); # pour corriger_typo
  23. include_spip('action/inscrire_auteur');
  24. $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
  25. $msg = recuperer_fond(
  26. "modeles/mail_oubli",
  27. array(
  28. 'url_reset'=>generer_url_public('spip_pass',"$param=$cookie", true, false)
  29. )
  30. );
  31. include_spip("inc/notifications");
  32. notifications_envoyer_mails($email, $msg);
  33. return _T('pass_recevoir_mail');
  34. }
  35. return _T('pass_erreur_probleme_technique');
  36. }
  37. // la saisie a ete validee, on peut agir
  38. function formulaires_oubli_traiter_dist(){
  39. $message = message_oubli(_request('oubli'),'p');
  40. return array('message_ok'=>$message);
  41. }
  42. // fonction qu'on peut redefinir pour filtrer les adresses mail
  43. // http://code.spip.net/@test_oubli
  44. function test_oubli_dist($email)
  45. {
  46. include_spip('inc/filtres'); # pour email_valide()
  47. if (!email_valide($email) )
  48. return _T('pass_erreur_non_valide', array('email_oubli' => spip_htmlspecialchars($email)));
  49. return array('mail' => $email);
  50. }
  51. function formulaires_oubli_verifier_dist(){
  52. $erreurs = array();
  53. $email = strval(_request('oubli'));
  54. $r = formulaires_oubli_mail($email);
  55. if (!is_array($r))
  56. $erreurs['oubli'] = $r;
  57. else {
  58. if (!$r[1])
  59. $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => spip_htmlspecialchars($email)));
  60. elseif ($r[1]['statut'] == '5poubelle' OR $r[1]['pass'] == '')
  61. $erreurs['oubli'] = _T('pass_erreur_acces_refuse');
  62. }
  63. if (_request('nobot'))
  64. $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
  65. return $erreurs;
  66. }
  67. function formulaires_oubli_mail($email)
  68. {
  69. if (function_exists('test_oubli'))
  70. $f = 'test_oubli';
  71. else
  72. $f = 'test_oubli_dist';
  73. $declaration = $f($email);
  74. if (!is_array($declaration))
  75. return $declaration;
  76. else {
  77. include_spip('base/abstract_sql');
  78. return array($declaration, sql_fetsel("id_auteur,statut,pass", "spip_auteurs", "email =" . sql_quote($declaration['mail'])));
  79. }
  80. }
  81. ?>