Changeset 118887 in spip-zone


Ignore:
Timestamp:
Dec 3, 2019, 2:41:23 PM (6 days ago)
Author:
Cerdic
Message:

deplacer l'extraction auto du sujet dans une fonction adhoc, ce qui permet de tester son existence et de savoir si le facteur le fait automatiquement ou pas

Location:
_plugins_/facteur/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/facteur/trunk

    • Property subgit:lock:fa1734cbdbff7a61b5a555e126f54133d927bcd5 deleted
    • Property subgit:lock:12f4dfc537157d31285bde37bf6b1c51c80dd41c set to 2019-12-03T15:51:12.555
  • _plugins_/facteur/trunk/inc/envoyer_mail.php

    r118885 r118887  
    1717// inclure le fichier natif de SPIP, pour les fonctions annexes
    1818include_once _DIR_RESTREINT."inc/envoyer_mail.php";
     19
     20/**
     21 * Extraire automatiquement le sujet d'un message si besoin
     22 * @param $message_html
     23 * @param string $message_texte
     24 * @return string
     25 */
     26function facteur_extraire_sujet($message_html, $message_texte = '') {
     27        if (strlen($message_html = trim($message_html))) {
     28                // dans ce cas on ruse un peu : extraire le sujet du title
     29                if (preg_match(",<title>(.*)</title>,Uims",$message_html,$m))
     30                        return ($sujet = $m[1]);
     31                else {
     32                        // fallback, on prend le body si on le trouve
     33                        if (preg_match(",<body[^>]*>(.*)</body>,Uims", $message_html, $m)){
     34                                $message_html = $m[1];
     35                        }
     36                        // et on le nettoie/decoupe comme du texte
     37                        $message_texte = $message_html;
     38                }
     39        }
     40
     41        // et on extrait la premiere ligne de vrai texte...
     42        // nettoyer le html et les retours chariots
     43        $message_texte = textebrut($message_texte);
     44        $message_texte = str_replace("\r\n", "\r", $message_texte);
     45        $message_texte = str_replace("\r", "\n", $message_texte);
     46        $message_texte = trim($message_texte);
     47        // decouper
     48        $message_texte = explode("\n", $message_texte);
     49
     50        // extraire la premiere ligne de texte brut
     51        return ($sujet = array_shift($message_texte));
     52}
     53
    1954
    2055/**
     
    4782 * @param string $headers (deprecie, utiliser l'entree headers de $message)
    4883 * @return bool
     84 * @throws Exception
    4985 */
    5086function inc_envoyer_mail($destinataire, $sujet, $message, $from = "", $headers = "") {
     
    101137
    102138        if(!strlen($sujet)){
    103                 if ($message_html) {
    104                         // dans ce cas on ruse un peu : extraire le sujet du title
    105                         if (preg_match(",<title>(.*)</title>,Uims",$message_html,$m))
    106                                 $sujet = $m[1];
    107                         else {
    108                                 $ttrim = $message_html;
    109                                 // fallback, on prend le body si on le trouve
    110                                 if (preg_match(",<body[^>]*>(.*)</body>,Uims",$message_html,$m))
    111                                         $ttrim = $m[1];
    112 
    113                                 // et on extrait la premiere ligne de vrai texte...
    114                                 // nettoyer le html et les retours chariots
    115                                 $ttrim = textebrut($ttrim);
    116                                 $ttrim = str_replace("\r\n", "\r", $ttrim);
    117                                 $ttrim = str_replace("\r", "\n", $ttrim);
    118                                 // decouper
    119                                 $ttrim = explode("\n",trim($ttrim));
    120                                 // extraire la premiere ligne de texte brut
    121                                 $sujet = array_shift($ttrim);
    122                         }
    123                 }
    124                 else {
    125                         // et on extrait la premiere ligne de vrai texte...
    126                         // nettoyer le html et les retours chariots
    127                         $ttrim = textebrut($message_texte);
    128                         $ttrim = str_replace("\r\n", "\r", $ttrim);
    129                         $ttrim = str_replace("\r", "\n", $ttrim);
    130                         // decouper
    131                         $ttrim = explode("\n",trim($ttrim));
    132                         // extraire la premiere ligne de texte brut
    133                         $sujet = array_shift($ttrim);
    134                 }
     139                $sujet = facteur_extraire_sujet($message_html, $message_texte);
    135140        }
    136141
Note: See TracChangeset for help on using the changeset viewer.