source: spip-zone/_plugins_/facteur/trunk/formulaires/configurer_facteur.php @ 96828

Last change on this file since 96828 was 96828, checked in by cedric@…, 5 years ago

eviter un warning lors de la configuration

File size: 9.0 KB
Line 
1<?php
2/*
3 * Plugin Facteur 2
4 * (c) 2009-2011 Collectif SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11function 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
47function 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
113function 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 */
191function 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?>
Note: See TracBrowser for help on using the repository browser.