0af55c37653fed6193ed725d25339c660f4958f4
[lhc/web/www.git] / www / squelettes-dist / formulaires / inscription.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')) {
14 return;
15 }
16
17 function formulaires_inscription_charger_dist($mode = '', $id = 0, $retour = '') {
18 global $visiteur_session;
19
20 // fournir le mode de la config ou tester si l'argument du formulaire est un mode accepte par celle-ci
21 // pas de formulaire si le mode est interdit
22 include_spip('inc/autoriser');
23 if (!autoriser('inscrireauteur', $mode, $id)) {
24 return false;
25 }
26
27 // pas de formulaire si on a déjà une session avec un statut égal ou meilleur au mode
28 if (isset($visiteur_session['statut']) && ($visiteur_session['statut'] <= $mode)) {
29 return false;
30 }
31
32 $valeurs = array('nom_inscription' => '', 'mail_inscription' => '', 'id' => $id, '_mode' => $mode);
33
34 return $valeurs;
35 }
36
37 // Si inscriptions pas autorisees, retourner une chaine d'avertissement
38 function formulaires_inscription_verifier_dist($mode = '', $id = 0, $retour = '') {
39
40 set_request('_upgrade_auteur'); // securite
41 include_spip('inc/filtres');
42 $erreurs = array();
43
44 include_spip('inc/autoriser');
45 if (!autoriser('inscrireauteur', $mode, $id)
46 or (strlen(_request('nobot')) > 0)
47 ) {
48 $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
49 }
50
51 if (!$nom = _request('nom_inscription')) {
52 $erreurs['nom_inscription'] = _T('info_obligatoire');
53 } elseif (!nom_acceptable(_request('nom_inscription'))) {
54 $erreurs['nom_inscription'] = _T('ecrire:info_nom_pas_conforme');
55 }
56 if (!$mail = strval(_request('mail_inscription'))) {
57 $erreurs['mail_inscription'] = _T('info_obligatoire');
58 }
59
60 // compatibilite avec anciennes fonction surchargeables
61 // plus de definition par defaut
62 if (!count($erreurs)) {
63 include_spip('action/inscrire_auteur');
64 if (function_exists('test_inscription')) {
65 $f = 'test_inscription';
66 } else {
67 $f = 'test_inscription_dist';
68 }
69 $declaration = $f($mode, $mail, $nom, $id);
70 if (is_string($declaration)) {
71 $k = (strpos($declaration, 'mail') !== false) ?
72 'mail_inscription' : 'nom_inscription';
73 $erreurs[$k] = _T($declaration);
74 } else {
75 include_spip('base/abstract_sql');
76
77 if ($row = sql_fetsel(
78 'statut, id_auteur, login, email',
79 'spip_auteurs',
80 'email=' . sql_quote($declaration['email'])
81 )) {
82 if (($row['statut'] == '5poubelle') and !$declaration['pass']) {
83 // irrecuperable
84 $erreurs['message_erreur'] = _T('form_forum_access_refuse');
85 } else {
86 if (($row['statut'] != 'nouveau') and !$declaration['pass']) {
87 if (intval($row['statut']) > intval($mode)) {
88 set_request('_upgrade_auteur', $row['id_auteur']);
89 } else {
90 // deja inscrit
91 $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre');
92 }
93 }
94 }
95 spip_log($row['id_auteur'] . ' veut se resinscrire');
96 }
97 }
98 }
99
100 return $erreurs;
101 }
102
103 function formulaires_inscription_traiter_dist($mode = '', $id = 0, $retour = '') {
104
105 include_spip('inc/filtres');
106 include_spip('inc/autoriser');
107 if (!autoriser('inscrireauteur', $mode, $id)) {
108 $desc = 'rien a faire ici';
109 } else {
110 if ($id_auteur = _request('_upgrade_auteur')) {
111 include_spip('action/editer_auteur');
112 autoriser_exception('modifier', 'auteur', $id_auteur);
113 autoriser_exception('instituer', 'auteur', $id_auteur);
114 auteur_modifier($id_auteur, array('statut' => $mode));
115 autoriser_exception('modifier', 'auteur', $id_auteur, false);
116 autoriser_exception('instituer', 'auteur', $id_auteur, false);
117
118 return array('message_ok' => _T('form_forum_email_deja_enregistre'), 'id_auteur' => $id_auteur);
119 }
120
121 $nom = _request('nom_inscription');
122 $mail_complet = _request('mail_inscription');
123
124 $inscrire_auteur = charger_fonction('inscrire_auteur', 'action');
125 $desc = $inscrire_auteur($mode, $mail_complet, $nom, array('id'=>$id, 'redirect'=> $retour));
126 }
127
128 // erreur ?
129 if (is_string($desc)) {
130 return array('message_erreur' => $desc);
131 } // OK
132 else {
133 return array('message_ok' => _T('form_forum_identifiant_mail'), 'id_auteur' => $desc['id_auteur']);
134 }
135 }