Changeset 48905 in spip-zone


Ignore:
Timestamp:
Jun 18, 2011, 3:22:48 PM (10 years ago)
Author:
paladin@…
Message:

Correction du message de confirmation d'abonnement. La balise FORMULAIRE_SPIP_LISTES_INSCRIPTION utilise maintenant le patron messages_abo/standard poour répondre. Reste à revoir le charset, et peut-être le contenu du message (en plus clair, avec un lien cookie)

Location:
_plugins_/spip-listes/spip-listes_1_9_3
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-listes/spip-listes_1_9_3/balise/formulaire_abonnement.php

    r47554 r48905  
    449449       
    450450                                // format d'envoi par defaut pour le premier envoi de confirmation
    451                                 $abonne['format'] = spiplistes_formats_abo_default();
     451                                $abonne['format'] = spiplistes_format_abo_default();
    452452                               
    453453                                // creation du compte ...
     
    524524
    525525
    526 function spiplistes_preparer_message ($objet, $patron, $contexte) {
    527        
    528         // si pas encore abonne' ou desabonne', pas de format ! donc forcer a texte
    529         $format = ($contexte['format'] == 'html') ? $contexte['format'] : ($contexte['format'] = 'texte');
    530 
    531         $contexte['patron'] = $patron;
    532         $path_patron = _SPIPLISTES_PATRONS_MESSAGES_DIR . $patron;
    533        
    534         list($message_html, $message_texte) = spiplistes_assembler_patron($path_patron, $contexte);
    535 
    536         $charset = $GLOBALS['meta']['spiplistes_charset_envoi'];
    537        
    538         if($charset != $GLOBALS['meta']['charset'])
    539         {
    540                 include_spip('inc/charsets');
    541                 if($format == 'html') {
    542                         $message_html = unicode2charset(charset2unicode($message_html), $charset);
    543                 }
    544                 //$message_texte = unicode2charset(charset2unicode($message_texte), $charset);
    545                 $message_texte = spiplistes_translate_2_charset ($message_texte, $charset);
    546         }
    547         $email_a_envoyer = array();
    548         $email_a_envoyer['texte'] = new phpMail('', $objet, '', $message_texte, $charset);
    549         if($format == 'html') {
    550                 $email_a_envoyer['html'] = new phpMail('', $objet, $message_html, $message_texte, $charset);
    551                 $email_a_envoyer['html']->Body = "<html>\n\n<body>\n\n" . $message_html . "\n\n</body></html>";
    552                 $email_a_envoyer['html']->AltBody = $message_texte;
    553         }
    554         $email_a_envoyer['texte']->Body = $message_texte ."\n\n";
    555         $email_a_envoyer[$format]->SetAddress($contexte['email'], $contexte['nom']);
    556        
    557         return($email_a_envoyer);
    558 }
    559 
    560526
    561527function spiplistes_texte_inventaire_abos ($id_abonne, $type_abo, $nom_site_spip) {
     
    586552}
    587553
    588 /**
    589  * renvoie le nom du patron pour la composition des messages de gestion
    590  * (confirmation d'abonnement, modification, etc.)
    591  * @return string
    592  * */
    593 function spiplistes_patron_message () {
    594         return ('standard');
    595 }
  • _plugins_/spip-listes/spip-listes_1_9_3/exec/spiplistes_config.php

    r48255 r48905  
    307307        ($GLOBALS['meta']['abonnement_config'] == 'simple') ? $checked1 = $is_checked  : $checked2 = $is_checked;
    308308       
    309         $opt_format_courrier_defaut = spiplistes_formats_abo_default();
     309        $opt_format_courrier_defaut = spiplistes_format_abo_default();
    310310
    311311        $page_result .= ''
  • _plugins_/spip-listes/spip-listes_1_9_3/formulaires/spip_listes_inscription.php

    r47530 r48905  
    1717include_spip('inc/spiplistes_api');
    1818
     19
     20/**
     21 * @return array
     22 */
    1923function formulaires_spip_listes_inscription_charger_dist ($id_liste='')
    2024{
     
    2731}
    2832
     33/**
     34 * @return array
     35 */
    2936function formulaires_spip_listes_inscription_verifier_dist ($id_liste='')
    3037{
     
    8087}
    8188
    82 
    83 function formulaires_spip_listes_inscription_traiter_dist ($id_liste='') {
    84        
    85         // enregistre dans spip_auteurs, spip_auteurs_elargis, spip_auteurs_listes                     
    86                        
     89/**
     90 * Traite les donnees du formulaire de saisie
     91 * - valide l'adresse mail
     92 * - l'enregistre si manquant
     93 * - l'abonne aux listes souhaitees
     94 * - envoie un mail de confirmation
     95 * @return array
     96 */
     97function formulaires_spip_listes_inscription_traiter_dist ($id_liste = '') {
     98       
     99        /**
     100         * Un abonné doit etre enregistre
     101         * dans spip_auteurs,
     102         * spip_auteurs_elargis, (historique, pour le format de réception)
     103         * spip_auteurs_listes (table des abonnements)
     104         */
     105       
     106        include_spip('inc/spiplistes_api_courrier');
     107       
    87108        $val['email'] = _request('email');
    88         $val['nom'] = _request('email');
    89         $alea_actuel = creer_uniqid();
    90         $alea_futur = creer_uniqid();
    91         $val['alea_actuel'] = $alea_actuel;
    92         $val['alea_futur'] = $alea_futur;
    93         $val['low_sec'] = '';
    94         $val['statut'] = 'aconfirmer';
    95        
    96         $format = _request('format_abo');
    97         $listes = _request('listes');
    98 
    99         // si l'auteur existe deja,
    100         $auteur = spiplistes_auteurs_auteur_select('id_auteur,statut,lang'
    101                                                                                            , 'email='.sql_quote($val['email']));
     109        $val['email'] = email_valide ($val['email']);
     110       
     111        if ($val['email'])
     112        {
     113                $val['nom'] = _request('email');
     114                $val['lang'] = _request('lang');
     115                if (!$val['lang']) {
     116                        $val['lang'] = $GLOBALS['meta']['langue_site'];
     117                }
     118                $val['alea_actuel'] = creer_uniqid();
     119                $val['alea_futur'] = creer_uniqid();
     120                $val['low_sec'] = '';
     121                $val['statut'] = 'aconfirmer';
     122               
     123                $format = _request('format_abo');
     124                if (!$format) {
     125                        $format = spiplistes_format_abo_default ();
     126                }
     127                $listes = _request('listes');
     128                spiplistes_debug_log ('format '.$format);
     129        }
     130       
     131        /**
     132         * Verifier si l'auteur existe deja,
     133         */
     134        if ($val['email'])
     135        {
     136                $auteur = spiplistes_auteurs_auteur_select('id_auteur,nom,statut,lang'
     137                                                                                           , 'email='.sql_quote($val['email'])
     138                                        );
     139        }
     140       
    102141        if ($auteur)
    103142        {
    104                 $id_auteur = $auteur['id_auteur'];
    105                 // reactiver le compte si necessaire
     143                /**
     144                 * Si le compte existe, le reactivier
     145                 */
     146                $contexte['id_auteur'] = $id_auteur = $auteur['id_auteur'];
    106147                if ($auteur['statut'] == '5poubelle')
    107148                {
    108                         spiplistes_auteurs_auteur_statut_modifier ($id_auteur, 'aconfirmer');
    109                 }
     149                        $new_statut = 'aconfirmer';
     150                        spiplistes_auteurs_auteur_statut_modifier ($id_auteur, $new_statut);
     151                        $auteur['statut'] = $new_statut;
     152                }
     153                $contexte['nouvel_inscription'] = 'non';
     154                $contexte['nom'] = $auteur['nom'];
     155                $contexte['statut'] = $auteur['statut'];
     156                $contexte['lang'] = ($auteur['lang'])
     157                                                        ? $auteur['lang']
     158                                                        : $GLOBALS['meta']['langue_site']
     159                                                        ;
    110160                spiplistes_debug_log ('inscription auteur #'.$id_auteur.' email:'.$val['email']);
    111161        }
    112162        else
    113163        {
    114                 // creer le compte abonne'
     164                /**
     165                 * Si le compte n'existe pas, le créer
     166                 */
    115167                if ($id_auteur = spiplistes_auteurs_auteur_insertq ($val))
    116168                {
    117                         sql_insertq(
    118                                         'spip_auteurs_elargis'
    119                                   , array('id_auteur'=>$id_auteur
    120                                                  ,'spip_listes_format'=>$format
    121                                                  )
    122                                   );
    123                 }
     169                        spiplistes_format_abo_modifier ($id_auteur, $format);
     170                }
     171                $contexte['nouvel_inscription'] = 'oui';
     172                $contexte['id_auteur'] = $id_auteur;
     173                $contexte['nom'] = $val['nom'];
     174                $contexte['statut'] = $val['statut'];
     175                $contexte['lang'] = $GLOBALS['meta']['langue_site'];
     176
    124177                spiplistes_debug_log ('NEW inscription email:'.$val['email']);
    125                 $lang = $GLOBALS['meta']['langue_site'];
    126178        }
    127179       
    128180        if ($listes) {
     181                /**
     182                 * @todo a optimiser (une seule req)
     183                 */
    129184                foreach($listes as $liste) {
    130185                        sql_insertq ('spip_auteurs_listes'
    131                                         , array('id_auteur'=>$id_auteur
    132                                                         ,'id_liste'=>$liste
     186                                        , array('id_auteur' => $id_auteur
     187                                                        ,'id_liste' => $liste
    133188                                                        )
    134189                                        );
     
    136191        }
    137192       
    138         // envoyer mail de confirmation
    139         if (
    140                 spiplistes_envoyer_mail (
     193        /**
     194         * Construit le message à partir du patron
     195         */
     196        if ($id_auteur > 0)
     197        {
     198                $cur_format = spiplistes_format_abo_demande ($id_auteur);
     199                if (!$cur_format)
     200                {
     201                        $cur_format = $format;
     202                        spiplistes_format_abo_modifier ($id_auteur, $format);
     203                }
     204                $contexte['format'] = $cur_format;
     205                $nom_site_spip = spiplistes_nom_site_texte ($lang);
     206                $email_objet = '['.$nom_site_spip.'] '._T('spiplistes:confirmation_inscription');
     207                //$email_contenu = spiplistes_preparer_message (
     208                //                                              $email_objet
     209                //                                              , spiplistes_patron_message()
     210                //                                              , $contexte
     211                //                                      );
     212                /**
     213                * Assemble le patron
     214                * Obtient en retour le contenu en version html et texte
     215                */
     216                $path_patron = _SPIPLISTES_PATRONS_MESSAGES_DIR . spiplistes_patron_message();
     217                spiplistes_debug_log ('Patron: '.$path_patron);
     218                list($courrier_html, $courrier_texte) = spiplistes_courriers_assembler_patron (
     219                        $path_patron
     220                        , $contexte);
     221                spiplistes_debug_log ('Messages size: html: '.strlen($courrier_html));
     222                spiplistes_debug_log ('Messages size: text: '.strlen($courrier_texte));
     223               
     224                $email_contenu = array(
     225                                /**
     226                                 * La version HTML du message
     227                                 */
     228                                'html' => '<html>' . PHP_EOL
     229                                        . '<body>' . PHP_EOL
     230                                        . $courrier_html
     231                                        . '</body>' . PHP_EOL
     232                                        . '</html>' . PHP_EOL
     233                                /**
     234                                 * Et la version texte
     235                                 */
     236                                , 'texte' => $courrier_texte
     237                                );
     238        }
     239       
     240        /**
     241         * envoyer mail de confirmation
     242         */
     243        if ($id_auteur
     244                && spiplistes_envoyer_mail (
    141245                        $val['email']
    142                         , _T('spiplistes:confirmation_inscription')
    143                         , _T('spiplistes:inscription_reponses_s'
    144                                  , array('s' => spiplistes_nom_site_texte ($lang))
    145                                  )
     246                        , $email_objet
     247                        , $email_contenu
     248                        , false
     249                        , ''
     250                        , $format
    146251           )
    147252        ) {
  • _plugins_/spip-listes/spip-listes_1_9_3/inc/spiplistes_api.php

    r48255 r48905  
    896896 * @return string
    897897 */
    898 function spiplistes_formats_abo_default () {
     898function spiplistes_format_abo_default () {
    899899        $defaut = spiplistes_pref_lire('opt_format_courrier_defaut');
    900900        if (
     
    11511151
    11521152/**
     1153 * Renvoie le nom du patron pour la composition des messages de gestion
     1154 * (confirmation d'abonnement, modification, etc.)
     1155 * @todo boite de sélection dans une page de configuration ?
     1156 * @return string
     1157 * */
     1158function spiplistes_patron_message () {
     1159        return ('standard');
     1160}
     1161
     1162/**
    11531163 * Incruster les styles inline
    11541164 *
     
    11891199        }
    11901200       
     1201        spiplistes_debug_log('Chemin patrons : '.$path_patron);
     1202       
    11911203        $patron_html = spiplistes_patron_find_in_path($path_patron, $contexte['lang'], false);
    11921204        $contexte['patron_html'] = $patron_html;
     1205        spiplistes_debug_log('CREATE html version USING '.$patron_html);
    11931206       
    11941207        $result_html =
     
    14951508
    14961509/**
    1497  * utiliser l'api pour pouvoir envoyer par smtp si besoin
    1498  * @version CP-20090111
    1499  */
    1500 function spiplistes_envoyer_mail ($to, $subject, $message, $from = false, $headers = '', $format = 'texte') {
     1510 * Compose le contenu du message via un patron
     1511 * Les patrons de messages sont dans ~/patrons/messages_abos
     1512 * @param string $objet
     1513 * @param string $patron
     1514 * @param array $contexte
     1515 * @return string
     1516 */
     1517function spiplistes_preparer_message ($objet, $patron, $contexte) {
     1518       
     1519        include_once (_DIR_PLUGIN_SPIPLISTES.'inc/spiplistes_mail.inc.php');
     1520       
     1521        // si pas encore abonne' ou desabonne', pas de format ! donc forcer a texte
     1522        $format = ($contexte['format'] == 'html') ? $contexte['format'] : ($contexte['format'] = 'texte');
     1523
     1524        $contexte['patron'] = $patron;
     1525        $path_patron = _SPIPLISTES_PATRONS_MESSAGES_DIR . $patron;
     1526       
     1527        list($message_html, $message_texte) = spiplistes_assembler_patron($path_patron, $contexte);
     1528
     1529        $charset = $GLOBALS['meta']['spiplistes_charset_envoi'];
     1530       
     1531        if($charset != $GLOBALS['meta']['charset'])
     1532        {
     1533                include_spip('inc/charsets');
     1534                if($format == 'html') {
     1535                        $message_html = unicode2charset(charset2unicode($message_html), $charset);
     1536                }
     1537                //$message_texte = unicode2charset(charset2unicode($message_texte), $charset);
     1538                $message_texte = spiplistes_translate_2_charset ($message_texte, $charset);
     1539        }
     1540        $email_a_envoyer = array();
     1541        $email_a_envoyer['texte'] = new phpMail('', $objet, '', $message_texte, $charset);
     1542        if($format == 'html') {
     1543                $email_a_envoyer['html'] = new phpMail('', $objet, $message_html, $message_texte, $charset);
     1544                $email_a_envoyer['html']->Body = "<html>\n\n<body>\n\n" . $message_html . "\n\n</body></html>";
     1545                $email_a_envoyer['html']->AltBody = $message_texte;
     1546        }
     1547        $email_a_envoyer['texte']->Body = $message_texte ."\n\n";
     1548        $email_a_envoyer[$format]->SetAddress($contexte['email'], $contexte['nom']);
     1549       
     1550        return($email_a_envoyer);
     1551}
     1552
     1553/**
     1554 * Envoyer un message en tenant compte des prefs SPIP-Listes
     1555 * (SMTP ou mail(), simuler l'envoi,....)
     1556 *
     1557 * Le message ($message) peut être
     1558 * - soit un string (au format texte)
     1559 * - soit un array ('html' => $contenu_html, 'texte' => $contenu_texte)
     1560 *
     1561 * @param string $to
     1562 * @param string $subject
     1563 * @param string|array $message
     1564 * @param string|bool $from
     1565 * @param string $headers
     1566 * @param string $format
     1567 * @staticvar string|bool $opt_simuler_envoi
     1568 * @version CP-20110618
     1569 */
     1570function spiplistes_envoyer_mail ($to
     1571                                                                  , $subject
     1572                                                                  , $message
     1573                                                                  , $from = false
     1574                                                                  , $headers = ''
     1575                                                                  , $format = 'texte') {
    15011576       
    15021577        static $opt_simuler_envoi;
     
    15091584                $opt_simuler_envoi = spiplistes_pref_lire('opt_simuler_envoi');
    15101585        }
     1586       
    15111587        if (!$from)
    15121588        {
     
    15211597                }
    15221598        }
    1523         // @TODO: voir email_reply_to ?
     1599        /**
     1600         * @TODO: voir email_reply_to ?
     1601         */
    15241602        $reply_to = 'no-reply'.preg_replace("|.*(@[a-z.]+)|i", "$1", email_valide($from));
    15251603       
    15261604        if($opt_simuler_envoi == 'oui') {
    1527                 spiplistes_log("!!! MAIL SIMULATION MODE !!!");
     1605                spiplistes_log('!!! MAIL SIMULATION MODE !!!');
    15281606                $result = true;
    15291607        }
     
    15331611                $email_a_envoyer = array();
    15341612               
    1535                 $return_path = spiplistes_return_path($from);
     1613                $return_path = spiplistes_return_path ($from);
    15361614               
    1537                 if(is_array($message))
     1615                if(is_array($message) && ($format == 'html'))
    15381616                {
     1617                spiplistes_debug_log ('Messages HTML: '.strlen($message['html']));
    15391618                        if($format=='html' && isset($message[$format])) {
    15401619                                $email_a_envoyer['html'] = new phpMail($to, $subject, $message['html'], $message['texte'], $charset);
     
    15451624                                $email_a_envoyer['html']->AddCustomHeader("Return-Path: ".$return_path);       
    15461625                                $email_a_envoyer['html']->SMTPKeepAlive = true;
    1547                                 $email_a_envoyer['html']->Body = $message['html']->Body;
    1548                                 $email_a_envoyer['html']->AltBody = $message['html']->AltBody;
     1626                                $email_a_envoyer['html']->Body = $message['html'];
     1627                                $email_a_envoyer['html']->AltBody = $message['texte'];
    15491628                        }
    1550                         $message = $message['texte']->Body;
    15511629                }
    15521630                //$message = spiplistes_html_entity_decode ($message, $charset);
     
    15541632               
    15551633                //$email_a_envoyer['texte'] = new phpMail($to, $subject, '', html_entity_decode($message), $charset);
    1556                 $email_a_envoyer['texte'] = new phpMail($to, $subject, '', $message, $charset);
     1634                $email_a_envoyer['texte'] = new phpMail($to, $subject, '', $message['texte'], $charset);
    15571635                $email_a_envoyer['texte']->From = $from ;
    15581636                if($fromname) $email_a_envoyer['html']->FromName = $fromname ;
     
    15611639                $email_a_envoyer['texte']->AddCustomHeader('Return-Path: '.$return_path);
    15621640                $email_a_envoyer['texte']->SMTPKeepAlive = true;
     1641                $email_a_envoyer['texte']->Body = $message['texte'];
    15631642               
    1564                 $result = $email_a_envoyer[$format]->send();
    1565                
     1643                if ($result = $email_a_envoyer[$format]->send())
     1644                {
     1645                        $email_a_envoyer['html']->SmtpClose();
     1646                        $email_a_envoyer['texte']->SmtpClose();
     1647                }
     1648                                                       
    15661649                $msg = "email from $from to $to";
    1567                 spiplistes_log(!$result ? "error: $msg not sent" : "$msg sent");
     1650                spiplistes_log(!$result ? 'error: '.$msg.' not sent' : "$msg sent");
    15681651        }
    15691652        return($result);
     
    16861769        return($result);
    16871770}
     1771
    16881772
    16891773/******************************************************************************************/
  • _plugins_/spip-listes/spip-listes_1_9_3/inc/spiplistes_api_courrier.php

    r48446 r48905  
    488488        }
    489489        else {
    490                 $result = spiplistes_assembler_patron($path_patron, $contexte);
     490                $result = spiplistes_assembler_patron ($path_patron, $contexte);
    491491        }
    492492       
  • _plugins_/spip-listes/spip-listes_1_9_3/lang/spiplistes_en.php

    r48231 r48905  
    601601
    602602// English translation: Pierre ROUSSET : p.rousset@gmail.com from the transalation by Simon simon@okko.org
    603 
    604 
  • _plugins_/spip-listes/spip-listes_1_9_3/plugin.xml

    r48819 r48905  
    88        <nom><multi>[fr]SPIP-Listes[en]SPIP-Lists[ar]&#1604;&#1608;&#1575;&#1574;&#1581; SPIP[es]SPIP-Listes</multi></nom>
    99        <auteur>BoOz@rezo.net</auteur>
    10         <version>2.0201</version>
     10        <version>2.0202</version>
    1111        <version_base>1.98</version_base>
    1212        <etat>test</etat>
Note: See TracChangeset for help on using the changeset viewer.