WP File Manager
Current Path:
/
home
/
argothem
/
www
/
organecyberpresse
/
plugins
/
auto
/
facteur
/
v5.2.1
/
inc
/
Name
Action
..
Facteur
envoyer_mail.php
Edit
facteur.php
Edit
facteur_convertir_styles_inline.php
Edit
facteur_envoyer_alerte_fail.php
Edit
facteur_mail_html2text.php
Edit
facteur_mail_wrap_to_html.php
Edit
Editing: facteur_mail_html2text.php
<?php /** * Plugin Facteur 4 * (c) 2009-2019 Collectif SPIP * Distribue sous licence GPL * * @package SPIP\Facteur\Inc\Facteur_mail_html2text */ /** * Transformer un mail HTML en mail Texte proprement : * - les tableaux de mise en page sont utilis�s pour structurer le mail texte * - le reste du HTML est markdownifie car c'est un format texte lisible et conventionnel * * @param string $html * @return string */ function inc_facteur_mail_html2text_dist($html) { // nettoyer les balises de mise en page html $html = preg_replace(',</(td|th)>,Uims', '<br/>', $html); $html = preg_replace(',</(table)>,Uims', '@@@hr@@@', $html); $html = preg_replace(',</?(html|body|table|td|th|tbody|thead|center|article|section|span)[^>]*>,Uims', "\n\n", $html); // commentaires html et conditionnels $html = preg_replace(',<!--.*-->,Uims', "\n", $html); $html = preg_replace(',<!\[.*\]>,Uims', "\n", $html); $html = preg_replace(',<(/?)(div|tr|caption)([^>]*>),Uims', "<\\1p>", $html); $html = preg_replace(',(<p>\s*)+,ims', '<p>', $html); $html = preg_replace(',<br/?>\s*</p>,ims', '</p>', $html); $html = preg_replace(',</p>\s*<br/?>,ims', '</p>', $html); $html = preg_replace(',(</p>\s*(@@@hr@@@)?\s*)+,ims', "</p>\\2", $html); $html = preg_replace(',(<p>\s*</p>),ims', '', $html); // succession @@@hr@@@<hr> et <hr>@@@hr@@@ $html = preg_replace(',@@@hr@@@\s*(<[^>]*>\s*)?<hr[^>]*>,ims', "@@@hr@@@\n", $html); $html = preg_replace(',<hr[^>]*>\s*(<[^>]*>\s*)?@@@hr@@@,ims', "\n@@@hr@@@", $html); $html = preg_replace(',<textarea[^>]*spip_cadre[^>]*>(.*)</textarea>,Uims', "<code>\n\\1\n</code>", $html); // vider le contenu de qqunes : $html = preg_replace(',<head[^>]*>.*</head>,Uims', "\n", $html); // Liens : // Nettoyage des liens des notes de bas de page $html = preg_replace('@<a href="#n(b|h)[0-9]+-[0-9]+" name="n(b|h)[0-9]+-[0-9]+" class="spip_note">([0-9]+)</a>@', "\\3", $html); // Supprimer tous les liens internes $html = preg_replace("/\<a href=['\"]#(.*?)['\"][^>]*>(.*?)<\/a>/ims", "\\2", $html); // Remplace tous les liens preg_match_all("/\<a href=['\"](.*?)['\"][^>]*>(.*?)<\/a>/ims", $html, $matches, PREG_SET_ORDER); $prelinks = $postlinks = []; if (!function_exists('url_absolue')) { include_spip('inc/filtres'); } foreach ($matches as $k => $match) { $link = "@@@link$k@@@"; $url = str_replace('&', '&', $match[1]); if ($match[2] == $match[1] or $match[2] == $url) { // si le texte est l'url : $prelinks[$match[0]] = "$link"; } else { // texte + url $prelinks[$match[0]] = $match[2] . " ($link)"; } // passer l'url en absolu dans le texte sinon elle n'est pas clicable ni utilisable $postlinks[$link] = url_absolue($url); } $html = str_replace(array_keys($prelinks), array_values($prelinks), $html); // les images par leur alt ? // au moins les puces $html = preg_replace(',<img\s[^>]*alt="-"[^>]*>,Uims', '-', $html); // les autres $html = preg_replace(',<img\s[^>]*alt=[\'"]([^\'"]*)[\'"][^>]*>,Uims', "\\1", $html); // on vire celles sans alt $html = preg_replace(',</?(img)[^>]*>,Uims', "\n", $html); // espaces $html = str_replace(' ', ' ', $html); $html = preg_replace(',<p>\s+,ims', '<p>', $html); #return $html; include_spip('lib/markdownify/markdownify'); $parser = new Markdownify('inline', false, false); $texte = $parser->parseString($html); $texte = str_replace(array_keys($postlinks), array_values($postlinks), $texte); // trim et sauts de ligne en trop ou pas assez $texte = trim($texte); $texte = str_replace("<br />\n", "\n", $texte); $texte = preg_replace(',(@@@hr@@@\s*)+\Z,ims', '', $texte); $texte = preg_replace(",(@@@hr@@@\s*\n)+,ims", "\n\n\n" . str_pad('-', 75, '-') . "\n\n\n", $texte); $texte = preg_replace(",(\n#+\s),ims", "\n\n\\1", $texte); $texte = preg_replace(",(\n\s*)(\n\s*)+(\n)+,ims", "\n\n\n", $texte); // <p> et </p> restants $texte = str_replace(['<p>','</p>'], ['',''], $texte); // entites restantes ? (dans du code...) include_spip('inc/charsets'); $texte = unicode2charset($texte); $texte = str_replace([''', '"'], ["'",'"'], $texte); // Faire des lignes de 75 caracteres maximum return trim(wordwrap($texte)); }