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