[CSS] +fix page header and title color
[lhc/web/www.git] / www / plugins / facteur / formulaires / configurer_facteur.php
1 <?php
2 /**
3 * Plugin Facteur 2
4 * (c) 2009-2011 Collectif SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9 if (!defined('_ECRIRE_INC_VERSION')) {
10 return;
11 }
12
13 function formulaires_configurer_facteur_charger_dist() {
14 include_spip('inc/config');
15 $valeurs = array(
16 'facteur_adresse_envoi' => lire_config('facteur_adresse_envoi'),
17 'facteur_adresse_envoi_nom' => lire_config('facteur_adresse_envoi_nom'),
18 'facteur_adresse_envoi_email' => lire_config('facteur_adresse_envoi_email'),
19 'facteur_forcer_from' => lire_config('facteur_forcer_from'),
20 'facteur_smtp' => lire_config('facteur_smtp'),
21 'facteur_smtp_host' => lire_config('facteur_smtp_host'),
22 'facteur_smtp_port' => lire_config('facteur_smtp_port', 25),
23 'facteur_smtp_auth' => lire_config('facteur_smtp_auth'),
24 'facteur_smtp_username' => lire_config('facteur_smtp_username'),
25 'facteur_smtp_password' => '',
26 '_facteur_smtp_password' => lire_config('facteur_smtp_password'),
27 'facteur_smtp_secure' => lire_config('facteur_smtp_secure'),
28 'facteur_smtp_tls_allow_self_signed'=> lire_config('facteur_smtp_tls_allow_self_signed'),
29 'facteur_smtp_sender' => lire_config('facteur_smtp_sender'),
30 'facteur_filtre_images' => lire_config('facteur_filtre_images'),
31 'facteur_filtre_iso_8859' => lire_config('facteur_filtre_iso_8859'),
32 'facteur_cc' => lire_config('facteur_cc'),
33 'facteur_bcc' => lire_config('facteur_bcc'),
34 'email_test' => lire_config('facteur_adresse_envoi') == 'oui' ? lire_config('facteur_adresse_envoi_email') : $GLOBALS['meta']['email_webmaster'],
35 'tester' => '',
36 );
37
38 // recuperer le from par defaut actuel pour l'indiquer dans le formulaire
39 include_spip('classes/facteur');
40 $facteur = new Facteur('test@example.org', 'Test', '', '', array('adresse_envoi' => 'non'));
41 $valeurs['_from_defaut'] = $facteur->From;
42 if ($facteur->FromName) {
43 $valeurs['_from_defaut'] = $facteur->FromName . ' &lt;'.$valeurs['_from_defaut'].'&gt;';
44 }
45
46 return $valeurs;
47 }
48
49 function formulaires_configurer_facteur_verifier_dist() {
50 $erreurs = array();
51 include_spip('inc/config');
52 if ($email = _request('facteur_adresse_envoi_email')
53 and !email_valide($email)) {
54 $erreurs['facteur_adresse_envoi_email'] = _T('form_email_non_valide');
55 set_request('facteur_adresse_envoi', 'oui');
56 }
57 if (_request('facteur_smtp') == 'oui') {
58 if (!($h = _request('facteur_smtp_host'))) {
59 $erreurs['facteur_smtp_host'] = _T('info_obligatoire');
60 } else {
61 $h = trim($h);
62 $regexp_ip_valide = '#^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$#';
63 // Source : http://www.d-sites.com/2008/10/09/regex-ipv4-et-ipv6/
64 if (!preg_match($regexp_ip_valide, $h)) { // ce n'est pas une IP
65 if (!preg_match(';^([^.\s/?:]+[.])*[^.\s/?:]+$;', $h)
66 or gethostbyname($h) == $h) {
67 $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
68 }
69 } else {
70 if (gethostbyaddr($h) == $h) {
71 $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
72 }
73 }
74 set_request('facteur_smtp_host', $h);
75 }
76 if (!($p=_request('facteur_smtp_port'))) {
77 $erreurs['facteur_smtp_port'] = _T('info_obligatoire');
78 } elseif (!preg_match(';^[0-9]+$;', $p) or !intval($p)) {
79 $erreurs['facteur_smtp_port'] = _T('facteur:erreur_invalid_port');
80 }
81
82 if (!_request('facteur_smtp_auth')) {
83 $erreurs['facteur_smtp_auth'] = _T('info_obligatoire');
84 }
85
86 if (_request('facteur_smtp_auth')=='oui') {
87 if (!_request('facteur_smtp_username')) {
88 $erreurs['facteur_smtp_username'] = _T('info_obligatoire');
89 }
90 if (!_request('facteur_smtp_password') and !lire_config('facteur_smtp_password')) {
91 $erreurs['facteur_smtp_password'] = _T('info_obligatoire');
92 }
93 }
94 }
95 if ($emailcc = _request('facteur_cc')
96 and !email_valide($emailcc)) {
97 $erreurs['facteur_cc'] = _T('form_email_non_valide');
98 }
99 if ($emailbcc = _request('facteur_bcc')
100 and !email_valide($emailbcc)) {
101 $erreurs['facteur_bcc'] = _T('form_email_non_valide');
102 }
103
104 if (_request('tester')) {
105 if (!$email = _request('email_test')) {
106 $erreurs['email_test'] = _T('info_obligatoire');
107 } elseif (!email_valide($email)) {
108 $erreurs['email_test'] = _T('form_email_non_valide');
109 }
110 }
111
112
113 if (count($erreurs) > 0) {
114 $erreurs['message_erreur'] = _T('facteur:erreur_generale');
115 }
116 return $erreurs;
117 }
118
119 function formulaires_configurer_facteur_traiter_dist() {
120 include_spip('inc/meta');
121
122 $facteur_adresse_envoi = _request('facteur_adresse_envoi');
123 ecrire_meta('facteur_adresse_envoi', ($facteur_adresse_envoi=='oui')?'oui':'non');
124
125 $facteur_adresse_envoi_nom = _request('facteur_adresse_envoi_nom');
126 ecrire_meta('facteur_adresse_envoi_nom', $facteur_adresse_envoi_nom?$facteur_adresse_envoi_nom:'');
127
128 $facteur_adresse_envoi_email = _request('facteur_adresse_envoi_email');
129 ecrire_meta('facteur_adresse_envoi_email', $facteur_adresse_envoi_email?$facteur_adresse_envoi_email:'');
130
131 $facteur_forcer_from = _request('facteur_forcer_from');
132 ecrire_meta('facteur_forcer_from', ($facteur_forcer_from=='oui')?'oui':'non');
133
134 $facteur_smtp = _request('facteur_smtp');
135 ecrire_meta('facteur_smtp', ($facteur_smtp=='oui')?'oui':'non');
136
137 $facteur_smtp_host = _request('facteur_smtp_host');
138 ecrire_meta('facteur_smtp_host', $facteur_smtp_host?$facteur_smtp_host:'');
139
140 $facteur_smtp_port = _request('facteur_smtp_port');
141 ecrire_meta('facteur_smtp_port', strlen($facteur_smtp_port)?intval($facteur_smtp_port):'');
142
143 $facteur_smtp_auth = _request('facteur_smtp_auth');
144 ecrire_meta('facteur_smtp_auth', ($facteur_smtp_auth=='oui')?'oui':'non');
145
146 $facteur_smtp_username = _request('facteur_smtp_username');
147 ecrire_meta('facteur_smtp_username', $facteur_smtp_username);
148
149 if ($facteur_smtp_password = _request('facteur_smtp_password')) {
150 ecrire_meta('facteur_smtp_password', $facteur_smtp_password);
151 }
152
153 $facteur_smtp_secure = _request('facteur_smtp_secure');
154 ecrire_meta('facteur_smtp_secure', in_array($facteur_smtp_secure, array('non', 'ssl', 'tls')) ? $facteur_smtp_secure : 'non');
155
156 $facteur_smtp_tls_allow_self_signed = _request('facteur_smtp_tls_allow_self_signed');
157 ecrire_meta('facteur_smtp_tls_allow_self_signed', ($facteur_smtp_tls_allow_self_signed=='oui')?'oui':'non');
158
159 $facteur_smtp_sender = _request('facteur_smtp_sender');
160 ecrire_meta('facteur_smtp_sender', $facteur_smtp_sender);
161
162 ecrire_meta('facteur_filtre_images', intval(_request('facteur_filtre_images')));
163 ecrire_meta('facteur_filtre_iso_8859', intval(_request('facteur_filtre_iso_8859')));
164
165 $facteur_cc = _request('facteur_cc');
166 ecrire_meta('facteur_cc', $facteur_cc?$facteur_cc:'');
167
168 $facteur_bcc = _request('facteur_bcc');
169 ecrire_meta('facteur_bcc', $facteur_bcc?$facteur_bcc:'');
170
171
172 $res = array('message_ok' => _T('facteur:config_info_enregistree'));
173
174 // faut-il envoyer un message de test ?
175 if (_request('tester')) {
176 $res = array();
177 $destinataire = _request('email_test');
178 $err = facteur_envoyer_mail_test($destinataire, _T('facteur:corps_email_de_test'));
179 if ($err) {
180 $res['message_erreur'] = $err;
181 } else {
182 $res['message_ok'] = _T('facteur:email_test_envoye');
183 }
184 }
185
186 return $res;
187 }
188
189 /**
190 * Fonction pour tester un envoi de mail ver sun destinataire
191 * renvoie une erreur eventuelle ou rien si tout est OK
192 * @param string $destinataire
193 * @param string $titre
194 * @return string
195 * message erreur ou vide si tout est OK
196 */
197 function facteur_envoyer_mail_test($destinataire, $titre) {
198
199 include_spip('classes/facteur');
200 $message_html = recuperer_fond('emails/test_email_html', array());
201 $message_texte = recuperer_fond('emails/test_email_texte', array());
202 $corps = array(
203 'html' => $message_html,
204 'texte' => $message_texte,
205 'exceptions' => true,
206 );
207
208 // passer par envoyer_mail pour bien passer par les pipeline et avoir tous les logs
209 $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
210 try {
211 $retour = $envoyer_mail($destinataire, $titre, $corps);
212 } catch (Exception $e) {
213 return $e->getMessage();
214 }
215
216 // si echec mais pas d'exception, on signale de regarder dans les logs
217 if (!$retour) {
218 return _T('facteur:erreur').' '._T('facteur:erreur_dans_log');
219 }
220
221 // tout est OK, pas d'erreur
222 return '';
223 }