Changeset 76469 in spip-zone


Ignore:
Timestamp:
Sep 24, 2013, 5:12:39 PM (6 years ago)
Author:
kent1@…
Message:

Améliorations du parsing des emails, on gère correctement :
-* Nom de la personne <email@…>
-* email@… Nom de la personne
-* email@…

Un bouton retour dans le formulaire d'ajout de contacts si on est dans l'étape 2

Une explication dans la partie "liste d'emails"

Version 1.2.2

Location:
_plugins_/importateur_contacts
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/importateur_contacts/formulaires/importer_contacts_2.html

    r73038 r76469  
    1919                <p class="boutons">
    2020                        <span class="image_loading"></span>
     21                        <input type="submit" class="submit" name="_retour_etape_1" value="<:retour:>" />
    2122                        <input type="submit" class="submit" value="<:importateurcontacts:importer_bouton_recuperer_contacts:>" />
    2223                </p>
  • _plugins_/importateur_contacts/formulaires/importer_contacts_importateurcontacts.html

    r73038 r76469  
    22
    33[(#ENV{fournisseur}|=={email_liste}|oui)
    4 [(#SAISIE{textarea, email_liste, obligatoire=oui, label=#GET{titre_fournisseur}})]]
     4[(#SAISIE{
     5        textarea,
     6        email_liste,
     7        obligatoire=oui,
     8        label=#GET{titre_fournisseur},
     9        explication=<:importateurcontacts:explications_liste_email:>})]]
    510
    611[(#ENV{fournisseur}|=={email_simple}|oui)
  • _plugins_/importateur_contacts/importateur_contacts_options.php

    r73038 r76469  
    2323        else if($email_simple){
    2424                $email = importateurcontacts_parse_email($email_simple);
    25                 if (!$email) {
     25                if (!$email)
    2626                        $erreurs['email_simple'] = _T('info_email_invalide');
    27                 }
    28                 else{
     27                else
    2928                        $contacts[] = $email;
    30                 }
    3129        }
    3230        else if($email_liste){
     
    3432                $emails = array();
    3533                foreach($lines as $email){
    36                         if(strlen($email) > 0){
     34                        if(strlen(trim($email)) > 0){
    3735                                $email_valide = importateurcontacts_parse_email($email);
    3836                                if(!$email_valide){
    3937                                        $erreurs['email_liste'] = _T('info_email_invalide').' "'.$email.'"';
    4038                                        break;
    41                                 }else{
     39                                }else
    4240                                        $contacts[] = $email_valide;
    43                                 }
    4441                        }
    4542                }
    4643        }
    47         if(count($erreurs) == 0){
     44        if(count($erreurs) == 0)
    4845                set_request('contacts',$contacts);
    49                 spip_log($contacts,'test.'._LOG_ERREUR);
    50         }
    5146       
    5247        return $erreurs;
     
    5550/**
    5651 * Parser l'email
    57  * Gérer deux cas possibles :
     52 * Gérer trois cas possibles :
     53 * -* Nom de la personne <email@domaine.tld>
    5854 * -* email@domaine.tld Nom de la personne
    59  * -* Nom de la personne <email@domaine.tld>
     55 * -* email@domaine.tld
    6056 */
    6157function importateurcontacts_parse_email($email){
     
    6359                return false;
    6460       
    65         $email_explode = preg_split("/[\s]+/",$email,2);
    66         spip_log($email_explode,'test.'._LOG_ERREUR);
    67        
    68         if(email_valide($email_explode[0])){
     61        // cas email@domaine.tld
     62        if(email_valide($email)){
     63                $email_explode = preg_split("/[@]+/",$email,2);
     64                return array(
     65                                'email'=> $email,
     66                                'nom' => $email_explode[0]
     67                        );
     68        }
     69        // cas Nom de la personne <email@domaine.tld>
     70        else if(preg_match('/(.*) <(.*@.*)>/',$email,$matches) && isset($matches[2]) && email_valide($matches[2])){
     71                return array(
     72                                        'email'=> $matches[2],
     73                                        'nom' => $matches[1]
     74                        );
     75        }
     76        // Cas email@domaine.tld Nom de la personne
     77        else if($email_explode = preg_split("/[\s]+/",$email,2)){
     78                spip_log($email_explode,'test.'._LOG_ERREUR);
     79                if(isset($email_explode[0]) && email_valide($email_explode[0]))
    6980                return array(
    7081                                'email'=> $email_explode[0],
    71                                 'nom' => (isset($email_explode[1]) && strlen(trim($email_explode[1])) > 0) ? $email_explode[1] : $email_explode[0]
    72                         );
    73         }else{
    74                 $email_name = preg_match('/^(?:"?([^@"]+)"?\s)?<?([^>]+@[^>]+)>?$/',$email,$matches);
    75                 if(isset($matches[1]) && isset($matches[2]))
    76                 return array(
    77                                 'email'=> $matches[2],
    78                                 'nom' => $matches[1]
     82                                'nom' => $email_explode[1]
    7983                        );
    8084        }
  • _plugins_/importateur_contacts/lang/importateurcontacts_fr.php

    r76192 r76469  
    1616        'erreur_aucun_fournisseur' => 'Aucun service pouvant fournir des contacts n’a été trouvé. Veuillez installer au moins une librairie d’importation de contacts.',
    1717        'erreur_aucun_fournisseur_configure' => 'Aucun service d’import de contacts n’est activé.',
     18        'explications_liste_email' => 'Saisissez une liste d\'adresses en en indiquant une seule par ligne.
    1819
     20Plusieurs formats sont acceptés : "Nom de la personne &lt;email@domaine.tld&gt;", "couriel@domaine.tld Nom de la personne", "couriel@domaine.tld".
     21',
    1922        // I
    2023        'importer_bouton_recuperer_contacts' => 'Récupérer mes contacts',
  • _plugins_/importateur_contacts/paquet.xml

    r73112 r76469  
    22        prefix="importateur_contacts"
    33        categorie="outil"
    4         version="1.2.1"
     4        version="1.2.2"
    55        etat="stable"
    66        compatibilite="[2.1.10;3.0.99]"
  • _plugins_/importateur_contacts/plugin.xml

    r73112 r76469  
    33        <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur>
    44        <licence>GPL v3</licence>
    5         <version>1.2.1</version>
     5        <version>1.2.2</version>
    66        <version_base>1.0.0</version_base>
    77        <etat>stable</etat>
Note: See TracChangeset for help on using the changeset viewer.