[PLUGINS] +set de base
[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 $valeurs = array(
13 'facteur_adresse_envoi' => $GLOBALS['meta']['facteur_adresse_envoi'],
14 'facteur_adresse_envoi_nom' => $GLOBALS['meta']['facteur_adresse_envoi_nom'],
15 'facteur_adresse_envoi_email' => $GLOBALS['meta']['facteur_adresse_envoi_email'],
16 'facteur_smtp' => $GLOBALS['meta']['facteur_smtp'],
17 'facteur_smtp_host' => $GLOBALS['meta']['facteur_smtp_host'],
18 'facteur_smtp_port' => $GLOBALS['meta']['facteur_smtp_port']?$GLOBALS['meta']['facteur_smtp_port']:'25',
19 'facteur_smtp_auth' => $GLOBALS['meta']['facteur_smtp_auth'],
20 'facteur_smtp_username' => $GLOBALS['meta']['facteur_smtp_username'],
21 'facteur_smtp_password' => $GLOBALS['meta']['facteur_smtp_password'],
22 'facteur_smtp_secure' => $GLOBALS['meta']['facteur_smtp_secure'],
23 'facteur_smtp_sender' => $GLOBALS['meta']['facteur_smtp_sender'],
24 'facteur_filtre_images' => $GLOBALS['meta']['facteur_filtre_images'],
25 'facteur_filtre_iso_8859' => $GLOBALS['meta']['facteur_filtre_iso_8859'],
26 '_enable_smtp_secure' => (intval(phpversion()) == 5)?' ':'',
27 'facteur_cc' => $GLOBALS['meta']['facteur_cc'],
28 'facteur_bcc' => $GLOBALS['meta']['facteur_bcc'],
29 'tester' => '',
30 );
31
32 return $valeurs;
33 }
34
35 function formulaires_configurer_facteur_verifier_dist(){
36 $erreurs = array();
37 if ($email = _request('facteur_adresse_envoi_email')
38 AND !email_valide($email)) {
39 $erreurs['facteur_adresse_envoi_email'] = _T('form_email_non_valide');
40 set_request('facteur_adresse_envoi','oui');
41 }
42 if (_request('facteur_smtp')=='oui'){
43 if (!($h=_request('facteur_smtp_host')))
44 $erreurs['facteur_smtp_host'] = _T('info_obligatoire');
45 else {
46 $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}:))$#';
47 // Source : http://www.d-sites.com/2008/10/09/regex-ipv4-et-ipv6/
48 if (!preg_match($regexp_ip_valide,$h)){ // ce n'est pas une IP
49 if(!preg_match(';^([^.\s/?:]+[.]){0,2}[^.\s/?:]+$;',$h)
50 OR gethostbyname($h)==$h)
51 $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
52 }
53 else {
54 if (gethostbyaddr($h)==$h)
55 $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
56 }
57 }
58 if (!($p=_request('facteur_smtp_port')))
59 $erreurs['facteur_smtp_port'] = _T('info_obligatoire');
60 elseif(!preg_match(';^[0-9]+$;',$p) OR !intval($p))
61 $erreurs['facteur_smtp_port'] = _T('facteur:erreur_invalid_port');
62
63 if (!_request('facteur_smtp_auth'))
64 $erreurs['facteur_smtp_auth'] = _T('info_obligatoire');
65
66 if (_request('facteur_smtp_auth')=='oui'){
67 if (!_request('facteur_smtp_username'))
68 $erreurs['facteur_smtp_username'] = _T('info_obligatoire');
69 if (!_request('facteur_smtp_password'))
70 $erreurs['facteur_smtp_password'] = _T('info_obligatoire');
71 }
72 }
73 if ($emailcc = _request('facteur_cc')
74 AND !email_valide($emailcc)) {
75 $erreurs['facteur_cc'] = _T('form_email_non_valide');
76 }
77 if ($emailbcc = _request('facteur_bcc')
78 AND !email_valide($emailbcc)) {
79 $erreurs['facteur_bcc'] = _T('form_email_non_valide');
80 }
81
82 if(count($erreurs)>0){
83 $erreurs['message_erreur'] = _T('facteur:erreur_generale');
84 }
85 return $erreurs;
86 }
87
88 function formulaires_configurer_facteur_traiter_dist(){
89 include_spip('inc/meta');
90
91 $facteur_adresse_envoi = _request('facteur_adresse_envoi');
92 ecrire_meta('facteur_adresse_envoi', ($facteur_adresse_envoi=='oui')?'oui':'non');
93
94 $facteur_adresse_envoi_nom = _request('facteur_adresse_envoi_nom');
95 ecrire_meta('facteur_adresse_envoi_nom', $facteur_adresse_envoi_nom?$facteur_adresse_envoi_nom:'');
96
97 $facteur_adresse_envoi_email = _request('facteur_adresse_envoi_email');
98 ecrire_meta('facteur_adresse_envoi_email', $facteur_adresse_envoi_email?$facteur_adresse_envoi_email:'');
99
100 $facteur_smtp = _request('facteur_smtp');
101 ecrire_meta('facteur_smtp', ($facteur_smtp=='oui')?'oui':'non');
102
103 $facteur_smtp_host = _request('facteur_smtp_host');
104 ecrire_meta('facteur_smtp_host', $facteur_smtp_host?$facteur_smtp_host:'');
105
106 $facteur_smtp_port = _request('facteur_smtp_port');
107 ecrire_meta('facteur_smtp_port', strlen($facteur_smtp_port)?intval($facteur_smtp_port):'');
108
109 $facteur_smtp_auth = _request('facteur_smtp_auth');
110 ecrire_meta('facteur_smtp_auth', ($facteur_smtp_auth=='oui')?'oui':'non');
111
112 $facteur_smtp_username = _request('facteur_smtp_username');
113 ecrire_meta('facteur_smtp_username', $facteur_smtp_username);
114
115 $facteur_smtp_password = _request('facteur_smtp_password');
116 ecrire_meta('facteur_smtp_password', $facteur_smtp_password);
117
118 if (intval(phpversion()) == 5) {
119 $facteur_smtp_secure = _request('facteur_smtp_secure');
120 ecrire_meta('facteur_smtp_secure', in_array($facteur_smtp_secure,array('non','ssl','tls'))?$facteur_smtp_secure:'non');
121 }
122
123 $facteur_smtp_sender = _request('facteur_smtp_sender');
124 ecrire_meta('facteur_smtp_sender', $facteur_smtp_sender);
125
126 ecrire_meta('facteur_filtre_images', intval(_request('facteur_filtre_images')));
127 ecrire_meta('facteur_filtre_iso_8859', intval(_request('facteur_filtre_iso_8859')));
128
129 $facteur_cc = _request('facteur_cc');
130 ecrire_meta('facteur_cc', $facteur_cc?$facteur_cc:'');
131
132 $facteur_bcc = _request('facteur_bcc');
133 ecrire_meta('facteur_bcc', $facteur_bcc?$facteur_bcc:'');
134
135
136 $res = array('message_ok'=>_T('facteur:config_info_enregistree'));
137
138 // faut-il envoyer un message de test ?
139 if (_request('tester')){
140
141 if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'
142 AND $GLOBALS['meta']['facteur_adresse_envoi_email'])
143 $destinataire = $GLOBALS['meta']['facteur_adresse_envoi_email'];
144 else
145 $destinataire = $GLOBALS['meta']['email_webmaster'];
146
147 if ((facteur_envoyer_mail_test($destinataire,_T('facteur:corps_email_de_test')))===true){
148 // OK
149 $res = array('message_ok'=>_T('facteur:email_test_envoye'));
150 }
151 else {
152 // erreur
153 $res = array('message_erreur'=>_T('facteur:erreur')._T('facteur:erreur_dans_log'));
154 }
155 }
156
157 return $res;
158 }
159
160 function facteur_envoyer_mail_test($destinataire,$titre){
161 include_spip('classes/facteur');
162 $message_html = recuperer_fond('emails/test_email_html', array());
163 $message_texte = recuperer_fond('emails/test_email_texte', array());
164
165 // passer par envoyer_mail pour bien passer par les pipeline et avoir tous les logs
166 $envoyer_mail = charger_fonction('envoyer_mail','inc');
167 $retour = $envoyer_mail($destinataire, $titre, array('html'=>$message_html,'texte'=>$message_texte));
168
169 return $retour?true:false;
170 }
171 ?>