[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / facteur / formulaires / configurer_facteur.php
index 0aa321b..aa46e78 100644 (file)
@@ -9,31 +9,44 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;\r
 \r
 function formulaires_configurer_facteur_charger_dist(){\r
+       include_spip('inc/config');\r
        $valeurs = array(\r
-               'facteur_adresse_envoi' => $GLOBALS['meta']['facteur_adresse_envoi'],\r
-               'facteur_adresse_envoi_nom' => $GLOBALS['meta']['facteur_adresse_envoi_nom'],\r
-               'facteur_adresse_envoi_email' => $GLOBALS['meta']['facteur_adresse_envoi_email'],\r
-               'facteur_smtp' => $GLOBALS['meta']['facteur_smtp'],\r
-               'facteur_smtp_host' => $GLOBALS['meta']['facteur_smtp_host'],\r
-               'facteur_smtp_port' => $GLOBALS['meta']['facteur_smtp_port']?$GLOBALS['meta']['facteur_smtp_port']:'25',\r
-               'facteur_smtp_auth' => $GLOBALS['meta']['facteur_smtp_auth'],\r
-               'facteur_smtp_username' => $GLOBALS['meta']['facteur_smtp_username'],\r
-               'facteur_smtp_password' => $GLOBALS['meta']['facteur_smtp_password'],\r
-               'facteur_smtp_secure' => $GLOBALS['meta']['facteur_smtp_secure'],\r
-               'facteur_smtp_sender' => $GLOBALS['meta']['facteur_smtp_sender'],\r
-               'facteur_filtre_images' => $GLOBALS['meta']['facteur_filtre_images'],\r
-               'facteur_filtre_iso_8859' => $GLOBALS['meta']['facteur_filtre_iso_8859'],\r
-               '_enable_smtp_secure' => (intval(phpversion()) == 5)?' ':'',\r
-               'facteur_cc' => $GLOBALS['meta']['facteur_cc'],\r
-               'facteur_bcc' => $GLOBALS['meta']['facteur_bcc'],\r
-       'tester' => '',\r
+               'facteur_adresse_envoi'       => lire_config('facteur_adresse_envoi'),\r
+               'facteur_adresse_envoi_nom'   => lire_config('facteur_adresse_envoi_nom'),\r
+               'facteur_adresse_envoi_email' => lire_config('facteur_adresse_envoi_email'),\r
+               'facteur_forcer_from'         => lire_config('facteur_forcer_from'),\r
+               'facteur_smtp'                => lire_config('facteur_smtp'),\r
+               'facteur_smtp_host'           => lire_config('facteur_smtp_host'),\r
+               'facteur_smtp_port'           => lire_config('facteur_smtp_port', 25),\r
+               'facteur_smtp_auth'           => lire_config('facteur_smtp_auth'),\r
+               'facteur_smtp_username'       => lire_config('facteur_smtp_username'),\r
+               'facteur_smtp_password'       => '',\r
+               '_facteur_smtp_password'       => lire_config('facteur_smtp_password'),\r
+               'facteur_smtp_secure'         => lire_config('facteur_smtp_secure'),\r
+               'facteur_smtp_sender'         => lire_config('facteur_smtp_sender'),\r
+               'facteur_filtre_images'       => lire_config('facteur_filtre_images'),\r
+               'facteur_filtre_iso_8859'     => lire_config('facteur_filtre_iso_8859'),\r
+               'facteur_cc'                  => lire_config('facteur_cc'),\r
+               'facteur_bcc'                 => lire_config('facteur_bcc'),\r
+               '_enable_smtp_secure'         => (intval(phpversion()) == 5)?' ':'',\r
+               'email_test'                  => lire_config('facteur_adresse_envoi')=='oui'?lire_config('facteur_adresse_envoi_email'):$GLOBALS['meta']['email_webmaster'],\r
+               'tester'                      => '',\r
        );\r
 \r
+       // recuperer le from par defaut actuel pour l'indiquer dans le formulaire\r
+       include_spip('classes/facteur');\r
+       $facteur = new Facteur('test@example.org','Test','','',array('adresse_envoi'=>'non'));\r
+       $valeurs['_from_defaut'] = $facteur->From;\r
+       if ($facteur->FromName){\r
+               $valeurs['_from_defaut'] = $facteur->FromName . ' <'.$valeurs['_from_defaut'].'>';\r
+       }\r
+\r
        return $valeurs;\r
 }\r
 \r
 function formulaires_configurer_facteur_verifier_dist(){\r
        $erreurs = array();\r
+       include_spip('inc/config');\r
        if ($email = _request('facteur_adresse_envoi_email')\r
          AND !email_valide($email)) {\r
                $erreurs['facteur_adresse_envoi_email'] = _T('form_email_non_valide');\r
@@ -43,17 +56,19 @@ function formulaires_configurer_facteur_verifier_dist(){
                if (!($h=_request('facteur_smtp_host')))\r
                        $erreurs['facteur_smtp_host'] = _T('info_obligatoire');\r
                else {\r
+                       $h = trim($h);\r
                        $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}:))$#'; \r
                        // Source : http://www.d-sites.com/2008/10/09/regex-ipv4-et-ipv6/\r
                        if (!preg_match($regexp_ip_valide,$h)){ // ce n'est pas une IP\r
-                               if(!preg_match(';^([^.\s/?:]+[.]){0,2}[^.\s/?:]+$;',$h)\r
+                               if(!preg_match(';^([^.\s/?:]+[.])*[^.\s/?:]+$;',$h)\r
                                  OR gethostbyname($h)==$h)\r
                                        $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');\r
                        }\r
                        else {\r
                                if (gethostbyaddr($h)==$h)\r
-                                       $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');                              \r
+                                       $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');\r
                        }\r
+                       set_request('facteur_smtp_host',$h);\r
                }\r
                if (!($p=_request('facteur_smtp_port')))\r
                        $erreurs['facteur_smtp_port'] = _T('info_obligatoire');\r
@@ -66,7 +81,7 @@ function formulaires_configurer_facteur_verifier_dist(){
                if (_request('facteur_smtp_auth')=='oui'){\r
                        if (!_request('facteur_smtp_username'))\r
                                $erreurs['facteur_smtp_username'] = _T('info_obligatoire');\r
-                       if (!_request('facteur_smtp_password'))\r
+                       if (!_request('facteur_smtp_password') AND !lire_config('facteur_smtp_password'))\r
                                $erreurs['facteur_smtp_password'] = _T('info_obligatoire');\r
                }\r
        }\r
@@ -78,6 +93,16 @@ function formulaires_configurer_facteur_verifier_dist(){
          AND !email_valide($emailbcc)) {\r
                $erreurs['facteur_bcc'] = _T('form_email_non_valide');\r
        }\r
+\r
+       if (_request('tester')){\r
+               if (!$email = _request('email_test')){\r
+                       $erreurs['email_test'] = _T('info_obligatoire');\r
+               }\r
+               elseif (!email_valide($email)) {\r
+                       $erreurs['email_test'] = _T('form_email_non_valide');\r
+               }\r
+       }\r
+\r
        \r
        if(count($erreurs)>0){\r
                $erreurs['message_erreur'] = _T('facteur:erreur_generale');\r
@@ -97,6 +122,9 @@ function formulaires_configurer_facteur_traiter_dist(){
        $facteur_adresse_envoi_email = _request('facteur_adresse_envoi_email');\r
        ecrire_meta('facteur_adresse_envoi_email', $facteur_adresse_envoi_email?$facteur_adresse_envoi_email:'');\r
 \r
+       $facteur_forcer_from = _request('facteur_forcer_from');\r
+       ecrire_meta('facteur_forcer_from', ($facteur_forcer_from=='oui')?'oui':'non');\r
+\r
        $facteur_smtp = _request('facteur_smtp');\r
        ecrire_meta('facteur_smtp', ($facteur_smtp=='oui')?'oui':'non');\r
 \r
@@ -112,8 +140,9 @@ function formulaires_configurer_facteur_traiter_dist(){
        $facteur_smtp_username = _request('facteur_smtp_username');\r
        ecrire_meta('facteur_smtp_username', $facteur_smtp_username);\r
 \r
-       $facteur_smtp_password = _request('facteur_smtp_password');\r
-       ecrire_meta('facteur_smtp_password', $facteur_smtp_password);\r
+       if ($facteur_smtp_password = _request('facteur_smtp_password')) {\r
+               ecrire_meta('facteur_smtp_password', $facteur_smtp_password);\r
+       }\r
 \r
        if (intval(phpversion()) == 5) {\r
                $facteur_smtp_secure = _request('facteur_smtp_secure');\r
@@ -137,35 +166,54 @@ function formulaires_configurer_facteur_traiter_dist(){
 \r
        // faut-il envoyer un message de test ?\r
        if (_request('tester')){\r
-\r
-               if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'\r
-                 AND $GLOBALS['meta']['facteur_adresse_envoi_email'])\r
-                       $destinataire = $GLOBALS['meta']['facteur_adresse_envoi_email'];\r
-               else\r
-                       $destinataire = $GLOBALS['meta']['email_webmaster'];\r
-\r
-               if ((facteur_envoyer_mail_test($destinataire,_T('facteur:corps_email_de_test')))===true){\r
-                       // OK\r
-                       $res = array('message_ok'=>_T('facteur:email_test_envoye'));\r
+               $res = array();\r
+               $destinataire = _request('email_test');\r
+               $err = facteur_envoyer_mail_test($destinataire,_T('facteur:corps_email_de_test'));\r
+               if ($err) {\r
+                       $res['message_erreur'] = $err;\r
                }\r
                else {\r
-                       // erreur\r
-                       $res = array('message_erreur'=>_T('facteur:erreur')._T('facteur:erreur_dans_log'));\r
+                       $res['message_ok'] = _T('facteur:email_test_envoye');\r
                }\r
        }\r
        \r
        return $res;\r
 }\r
 \r
+/**\r
+ * Fonction pour tester un envoi de mail ver sun destinataire\r
+ * renvoie une erreur eventuelle ou rien si tout est OK\r
+ * @param string $destinataire\r
+ * @param string $titre\r
+ * @return string\r
+ *   message erreur ou vide si tout est OK\r
+ */\r
 function facteur_envoyer_mail_test($destinataire,$titre){\r
+\r
        include_spip('classes/facteur');\r
        $message_html   = recuperer_fond('emails/test_email_html', array());\r
        $message_texte  = recuperer_fond('emails/test_email_texte', array());\r
+       $corps = array(\r
+               'html' => $message_html,\r
+               'texte' => $message_texte,\r
+               'exceptions' => true,\r
+       );\r
 \r
        // passer par envoyer_mail pour bien passer par les pipeline et avoir tous les logs\r
        $envoyer_mail = charger_fonction('envoyer_mail','inc');\r
-       $retour = $envoyer_mail($destinataire, $titre, array('html'=>$message_html,'texte'=>$message_texte));\r
+       try {\r
+               $retour = $envoyer_mail($destinataire, $titre, $corps);\r
+       }\r
+       catch (Exception $e) {\r
+               return $e->getMessage();\r
+       }\r
+\r
+       // si echec mais pas d'exception, on signale de regarder dans les logs\r
+       if (!$retour) {\r
+               return _T('facteur:erreur').' '._T('facteur:erreur_dans_log');\r
+       }\r
 \r
-       return $retour?true:false;\r
+       // tout est OK, pas d'erreur\r
+       return "";\r
 }\r
 ?>\r