source: spip-zone/_plugins_/facteur/branches/v1/formulaires/configurer_facteur.php @ 60042

Last change on this file since 60042 was 60042, checked in by yffic@…, 7 years ago
  • Si échec lors du test d'envoi, le message d'erreur n'est plus affiché : indiquer d'aller consulter le fichier log
  • Conversion des entités html et numériques dans les fichiers de langue
File size: 7.7 KB
Line 
1<?php
2/*
3 * Plugin Facteur
4 * (c) 2009-2010 Collectif SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11function 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_css' => $GLOBALS['meta']['facteur_filtre_css'],
26                'facteur_filtre_iso_8859' => $GLOBALS['meta']['facteur_filtre_iso_8859'],
27                '_enable_smtp_secure' => (intval(phpversion()) == 5)?' ':'',
28                'facteur_cc' => $GLOBALS['meta']['facteur_cc'],
29                'facteur_bcc' => $GLOBALS['meta']['facteur_bcc'],
30        'tester' => '',
31        );
32
33        return $valeurs;
34}
35
36function formulaires_configurer_facteur_verifier_dist(){
37        $erreurs = array();
38        if ($email = _request('facteur_adresse_envoi_email')
39          AND !email_valide($email)) {
40                $erreurs['facteur_adresse_envoi_email'] = _T('form_email_non_valide');
41                set_request('facteur_adresse_envoi','oui');
42        }
43        if (_request('facteur_smtp')=='oui'){
44                if (!($h=_request('facteur_smtp_host')))
45                        $erreurs['facteur_smtp_host'] = _T('info_obligatoire');
46                else {
47                        $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}:))$#'; 
48                        // Source : http://www.d-sites.com/2008/10/09/regex-ipv4-et-ipv6/
49                        if (!preg_match($regexp_ip_valide,$h)){ // ce n'est pas une IP
50                                if(!preg_match(';^([^.\s/?:]+[.]){0,2}[^.\s/?:]+$;',$h)
51                                  OR gethostbyname($h)==$h)
52                                        $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
53                        }
54                        else {
55                                if (gethostbyaddr($h)==$h)
56                                        $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');                             
57                        }
58                }
59                if (!($p=_request('facteur_smtp_port')))
60                        $erreurs['facteur_smtp_port'] = _T('info_obligatoire');
61                elseif(!preg_match(';^[0-9]+$;',$p) OR !intval($p))
62                        $erreurs['facteur_smtp_port'] = _T('facteur:erreur_invalid_port');
63
64                if (!_request('facteur_smtp_auth'))
65                        $erreurs['facteur_smtp_auth'] = _T('info_obligatoire');
66
67                if (_request('facteur_smtp_auth')=='oui'){
68                        if (!_request('facteur_smtp_username'))
69                                $erreurs['facteur_smtp_username'] = _T('info_obligatoire');
70                        if (!_request('facteur_smtp_password'))
71                                $erreurs['facteur_smtp_password'] = _T('info_obligatoire');
72                }
73        }
74        if ($emailcc = _request('facteur_cc')
75          AND !email_valide($emailcc)) {
76                $erreurs['facteur_cc'] = _T('form_email_non_valide');
77        }
78        if ($emailbcc = _request('facteur_bcc')
79          AND !email_valide($emailbcc)) {
80                $erreurs['facteur_bcc'] = _T('form_email_non_valide');
81        }
82       
83        if(count($erreurs)>0){
84                $erreurs['message_erreur'] = _T('facteur:erreur_generale');
85        }
86        return $erreurs;
87}
88
89function formulaires_configurer_facteur_traiter_dist(){
90        include_spip('inc/meta');
91
92        $facteur_adresse_envoi = _request('facteur_adresse_envoi');
93        ecrire_meta('facteur_adresse_envoi', ($facteur_adresse_envoi=='oui')?'oui':'non');
94
95        $facteur_adresse_envoi_nom = _request('facteur_adresse_envoi_nom');
96        ecrire_meta('facteur_adresse_envoi_nom', $facteur_adresse_envoi_nom?$facteur_adresse_envoi_nom:'');
97
98        $facteur_adresse_envoi_email = _request('facteur_adresse_envoi_email');
99        ecrire_meta('facteur_adresse_envoi_email', $facteur_adresse_envoi_email?$facteur_adresse_envoi_email:'');
100
101        $facteur_smtp = _request('facteur_smtp');
102        ecrire_meta('facteur_smtp', ($facteur_smtp=='oui')?'oui':'non');
103
104        $facteur_smtp_host = _request('facteur_smtp_host');
105        ecrire_meta('facteur_smtp_host', $facteur_smtp_host?$facteur_smtp_host:'');
106
107        $facteur_smtp_port = _request('facteur_smtp_port');
108        ecrire_meta('facteur_smtp_port', strlen($facteur_smtp_port)?intval($facteur_smtp_port):'');
109
110        $facteur_smtp_auth = _request('facteur_smtp_auth');
111        ecrire_meta('facteur_smtp_auth', ($facteur_smtp_auth=='oui')?'oui':'non');
112
113        $facteur_smtp_username = _request('facteur_smtp_username');
114        ecrire_meta('facteur_smtp_username', $facteur_smtp_username);
115
116        $facteur_smtp_password = _request('facteur_smtp_password');
117        ecrire_meta('facteur_smtp_password', $facteur_smtp_password);
118
119        if (intval(phpversion()) == 5) {
120                $facteur_smtp_secure = _request('facteur_smtp_secure');
121                ecrire_meta('facteur_smtp_secure', in_array($facteur_smtp_secure,array('non','ssl','tls'))?$facteur_smtp_secure:'non');
122        }
123
124        $facteur_smtp_sender = _request('facteur_smtp_sender');
125        ecrire_meta('facteur_smtp_sender', $facteur_smtp_sender);
126
127        ecrire_meta('facteur_filtre_images', intval(_request('facteur_filtre_images')));
128        ecrire_meta('facteur_filtre_css', intval(_request('facteur_filtre_css')));
129        ecrire_meta('facteur_filtre_iso_8859', intval(_request('facteur_filtre_iso_8859')));
130
131        $facteur_cc = _request('facteur_cc');
132        ecrire_meta('facteur_cc', $facteur_cc?$facteur_cc:'');
133
134        $facteur_bcc = _request('facteur_bcc');
135        ecrire_meta('facteur_bcc', $facteur_bcc?$facteur_bcc:'');
136       
137       
138        $res = array('message_ok'=>_T('facteur:config_info_enregistree'));
139
140        // faut-il envoyer un message de test ?
141        if (_request('tester')){
142
143                if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'
144                  AND $GLOBALS['meta']['facteur_adresse_envoi_email'])
145                        $destinataire = $GLOBALS['meta']['facteur_adresse_envoi_email'];
146                else
147                        $destinataire = $GLOBALS['meta']['email_webmaster'];
148
149                if ((facteur_envoyer_mail_test($destinataire,_T('facteur:corps_email_de_test')))===true){
150                        // OK
151                        $res = array('message_ok'=>_T('facteur:email_test_envoye'));
152                }
153                else {
154                        // erreur
155                        $res = array('message_erreur'=>_T('facteur:erreur')._T('facteur:erreur_dans_log'));
156                }
157        }
158       
159        return $res;
160}
161
162function facteur_envoyer_mail_test($destinataire,$titre){
163        include_spip('classes/facteur');
164        $message_html   = recuperer_fond('emails/test_email_html', array());
165        $message_texte  = recuperer_fond('emails/test_email_texte', array());
166
167        // passer par envoyer_mail pour bien passer par les pipeline et avoir tous les logs
168        $envoyer_mail = charger_fonction('envoyer_mail','inc');
169        $retour = $envoyer_mail($destinataire, $titre, array('html'=>$message_html,'texte'=>$message_texte));
170
171        return $retour?true:false;
172}
173?>
Note: See TracBrowser for help on using the repository browser.