Ignore:
Timestamp:
Mar 8, 2013, 4:53:28 PM (7 years ago)
Author:
cedric@…
Message:

Branche 3 de facteur, en dev :

  • on ajoute l'auto-detection des mails HTML dans envoyer_mail : si aucun Content-Type n'est fourni, et que le mail commence par un < finit par un > et contient bien un </html> on considère que c'est un mail HTML. Cette feature etait fournie pour les notifications uniquement (par inc/notifications) jusqu'ici
  • on recupere la fonction de conversion HTML->Texte du plugin Newsletter, qui s'appuie sur MarkDownify?
  • si aucune alternative texte n'est fournie à un mail HTML, on génère automatiquement une alternative texte dans envoyer_mail()

A tester et stabiliser.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/facteur/trunk/classes/facteur.php

    r68228 r70528  
    142142       
    143143        /*
    144          * Transforme du HTML en texte brut, mais proprement, c'est-à-dire en essayant
    145          * de garder les titrages, les listes, etc
     144         * Transforme du HTML en texte brut, mais proprement
     145         * utilise le filtre facteur_mail_html2text
     146         * @uses facteur_mail_html2text()
    146147         *
    147148         * @param string $html Le HTML à transformer
     
    149150         */
    150151        function html2text($html){
    151                 // On remplace tous les sauts de lignes par un espace
    152                 $html = str_replace("\n", ' ', $html);
    153                
    154                 // Supprimer tous les liens internes
    155                 $texte = preg_replace("/\<a href=['\"]#(.*?)['\"][^>]*>(.*?)<\/a>/ims", "\\2", $html);
    156        
    157                 // Supprime feuille style
    158                 $texte = preg_replace(";<style[^>]*>[^<]*</style>;i", "", $texte);
    159        
    160                 // Remplace tous les liens     
    161                 $texte = preg_replace("/\<a[^>]*href=['\"](.*?)['\"][^>]*>(.*?)<\/a>/ims", "\\2 (\\1)", $texte);
    162        
    163                 // Les titres
    164                 $texte = preg_replace(";<h1[^>]*>;i", "\n= ", $texte);
    165                 $texte = str_replace("</h1>", " =\n\n", $texte);
    166                 $texte = preg_replace(";<h2[^>]*>;i", "\n== ", $texte);
    167                 $texte = str_replace("</h2>", " ==\n\n", $texte);
    168                 $texte = preg_replace(";<h3[^>]*>;i", "\n=== ", $texte);
    169                 $texte = str_replace("</h3>", " ===\n\n", $texte);
    170                
    171                 // Une fin de liste
    172                 $texte = preg_replace(";</(u|o)l>;i", "\n\n", $texte);
    173                
    174                 // Une saut de ligne *après* le paragraphe
    175                 $texte = preg_replace(";<p[^>]*>;i", "\n", $texte);
    176                 $texte = preg_replace(";</p>;i", "\n\n", $texte);
    177                 // Les sauts de ligne interne
    178                 $texte = preg_replace(";<br[^>]*>;i", "\n", $texte);
    179        
    180                 //$texte = str_replace('<br /><img class=\'spip_puce\' src=\'puce.gif\' alt=\'-\' border=\'0\'>', "\n".'-', $texte);
    181                 $texte = preg_replace (';<li[^>]*>;i', "\n".'- ', $texte);
    182        
    183        
    184                 // accentuation du gras
    185                 // <b>texte</b> -> **texte**
    186                 $texte = preg_replace (';<b[^>]*>;i','**' ,$texte);
    187                 $texte = str_replace ('</b>','**' ,$texte);
    188        
    189                 // accentuation du gras
    190                 // <strong>texte</strong> -> **texte**
    191                 $texte = preg_replace (';<strong[^>]*>;i','**' ,$texte);
    192                 $texte = str_replace ('</strong>','**' ,$texte);
    193        
    194        
    195                 // accentuation de l'italique
    196                 // <em>texte</em> -> *texte*
    197                 $texte = preg_replace (';<em[^>]*>;i','/' ,$texte);
    198                 $texte = str_replace ('</em>','*' ,$texte);
    199                
    200                 // accentuation de l'italique
    201                 // <i>texte</i> -> *texte*
    202                 $texte = preg_replace (';<i[^>]*>;i','/' ,$texte);
    203                 $texte = str_replace ('</i>','*' ,$texte);
    204        
    205                 $texte = str_replace('&oelig;', 'oe', $texte);
    206                 $texte = str_replace("&nbsp;", " ", $texte);
    207                 $texte = filtrer_entites($texte);
    208        
    209                 // On supprime toutes les balises restantes
    210                 $texte = supprimer_tags($texte);
    211        
    212                 $texte = str_replace("\x0B", "", $texte);
    213                 $texte = str_replace("\t", "", $texte) ;
    214                 $texte = preg_replace(";[ ]{3,};", "", $texte);
    215        
    216                 // espace en debut de ligne
    217                 $texte = preg_replace("/(\r\n|\n|\r)[ ]+/", "\n", $texte);
    218        
    219                 //marche po
    220                 // Bring down number of empty lines to 4 max
    221                 $texte = preg_replace("/(\r\n|\n|\r){3,}/m", "\n\n", $texte);
    222        
    223                 //saut de lignes en debut de texte
    224                 $texte = preg_replace("/^(\r\n|\n|\r)*/", "\n\n", $texte);
    225                 //saut de lignes en debut ou fin de texte
    226                 $texte = preg_replace("/(\r\n|\n|\r)*$/", "\n\n", $texte);
    227        
    228                 // Faire des lignes de 75 caracteres maximum
    229                 //$texte = wordwrap($texte);
    230        
    231                 return $texte;
     152                return facteur_mail_html2text($html);
    232153        }
    233154       
Note: See TracChangeset for help on using the changeset viewer.