source: spip-zone/_plugins_/facteur/branches/v1/facteur_fonctions.php @ 99869

Last change on this file since 99869 was 99869, checked in by real3t@…, 3 years ago

Éviter cette erreur : Strict standards: Non-static method Facteur::html2text() should not be called statically

  • Property svn:executable set to *
File size: 4.8 KB
Line 
1<?php
2/*
3 * Plugin Facteur
4 * (c) 2009-2010 Collectif SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11include_spip('inc/texte');
12include_spip('classes/facteur');
13
14
15/**
16 * facteur_addstyle
17 *
18 * @author Eric Dols
19 **/
20function facteur_addstyle($matches) {
21
22        // $matches[1]=tag, $matches[2]=tag attributes (if any), $matches[3]=xhtml closing (if any)
23
24        // variables values set in calling function
25        global $styledefinition, $styletag, $styleclass;
26
27        // convert the style definition to a one-liner
28        $styledefinition = preg_replace ("!\s+!mi", " ", $styledefinition );
29        // convert all double-quotes to single-quotes
30        $styledefinition = preg_replace ('/"/','\'', $styledefinition );
31
32        if (preg_match ("/style\=/i", $matches[2])) {
33                        // add styles to existing style attribute if any already in the tag
34                        $pattern = "!(.* style\=)[\"]([^\"]*)[\"](.*)!mi";
35                        $replacement = "\$1".'"'."\$2 ".$styledefinition.'"'."\$3";
36                        $attributes = preg_replace ($pattern, $replacement , $matches[2]);
37        } else {
38                        // otherwise add new style attribute to tag (none was present)
39                        $attributes = $matches[2].' style="'.$styledefinition.'"';
40        }
41
42        if ($styleclass!="") {
43                // if we were injecting a class style, remove the now useless class attribute from the html tag
44
45                // Single class in tag case (class="classname"): remove class attribute altogether
46                $pattern = "!(.*) class\=['\"]".$styleclass."['\"](.*)!mi";
47                $replacement = "\$1\$2";
48                $attributes = preg_replace ( $pattern, $replacement, $attributes);
49
50                // Multiple classes in tag case (class="classname anotherclass..."): remove class name from class attribute.
51                // classes are injected inline and removed by order of appearance in <head> stylesheet
52                // exact same behavior as where last declared class attributes in <style> take over (IE6 tested only)
53                $pattern = "!(.* class\=['\"][^\"]*)(".$styleclass." | ".$styleclass.")([^\"]*['\"].*)!mi";
54                $replacement = "\$1\$3";
55                $attributes = preg_replace ( $pattern, $replacement, $attributes);
56
57        }
58
59        return "<".$matches[1].$attributes.$matches[3].">";
60}
61
62function facteur_mail_html2text($html){
63        // On remplace tous les sauts de lignes par un espace
64        $html = str_replace("\n", ' ', $html);
65
66        // Supprimer tous les liens internes
67        $texte = preg_replace("/\<a href=['\"]#(.*?)['\"][^>]*>(.*?)<\/a>/ims", "\\2", $html);
68
69        // Supprime feuille style
70        $texte = preg_replace(";<style[^>]*>[^<]*</style>;i", "", $texte);
71
72        // Remplace tous les liens     
73        $texte = preg_replace("/\<a[^>]*href=['\"](.*?)['\"][^>]*>(.*?)<\/a>/ims", "\\2 (\\1)", $texte);
74
75        // Les titres
76        $texte = preg_replace(";<h1[^>]*>;i", "\n= ", $texte);
77        $texte = str_replace("</h1>", " =\n\n", $texte);
78        $texte = preg_replace(";<h2[^>]*>;i", "\n== ", $texte);
79        $texte = str_replace("</h2>", " ==\n\n", $texte);
80        $texte = preg_replace(";<h3[^>]*>;i", "\n=== ", $texte);
81        $texte = str_replace("</h3>", " ===\n\n", $texte);
82
83        // Une fin de liste
84        $texte = preg_replace(";</(u|o)l>;i", "\n\n", $texte);
85
86        // Une saut de ligne *après* le paragraphe
87        $texte = preg_replace(";<p[^>]*>;i", "\n", $texte);
88        $texte = preg_replace(";</p>;i", "\n\n", $texte);
89        // Les sauts de ligne interne
90        $texte = preg_replace(";<br[^>]*>;i", "\n", $texte);
91
92        //$texte = str_replace('<br /><img class=\'spip_puce\' src=\'puce.gif\' alt=\'-\' border=\'0\'>', "\n".'-', $texte);
93        $texte = preg_replace (';<li[^>]*>;i', "\n".'- ', $texte);
94
95
96        // accentuation du gras
97        // <b>texte</b> -> **texte**
98        $texte = preg_replace (';<b[^>]*>;i','**' ,$texte);
99        $texte = str_replace ('</b>','**' ,$texte);
100
101        // accentuation du gras
102        // <strong>texte</strong> -> **texte**
103        $texte = preg_replace (';<strong[^>]*>;i','**' ,$texte);
104        $texte = str_replace ('</strong>','**' ,$texte);
105
106
107        // accentuation de l'italique
108        // <em>texte</em> -> *texte*
109        $texte = preg_replace (';<em[^>]*>;i','/' ,$texte);
110        $texte = str_replace ('</em>','*' ,$texte);
111
112        // accentuation de l'italique
113        // <i>texte</i> -> *texte*
114        $texte = preg_replace (';<i[^>]*>;i','/' ,$texte);
115        $texte = str_replace ('</i>','*' ,$texte);
116
117        $texte = str_replace('&oelig;', 'oe', $texte);
118        $texte = str_replace("&nbsp;", " ", $texte);
119        $texte = filtrer_entites($texte);
120
121        // On supprime toutes les balises restantes
122        $texte = supprimer_tags($texte);
123
124        $texte = str_replace("\x0B", "", $texte); 
125        $texte = str_replace("\t", "", $texte) ;
126        $texte = preg_replace(";[ ]{3,};", "", $texte);
127
128        // espace en debut de ligne
129        $texte = preg_replace("/(\r\n|\n|\r)[ ]+/", "\n", $texte);
130
131        //marche po
132        // Bring down number of empty lines to 4 max
133        $texte = preg_replace("/(\r\n|\n|\r){3,}/m", "\n\n", $texte);
134
135        //saut de lignes en debut de texte
136        $texte = preg_replace("/^(\r\n|\n|\r)*/", "\n\n", $texte);
137        //saut de lignes en debut ou fin de texte
138        $texte = preg_replace("/(\r\n|\n|\r)*$/", "\n\n", $texte);
139
140        // Faire des lignes de 75 caracteres maximum
141        //$texte = wordwrap($texte);
142
143        return $texte;
144}
Note: See TracBrowser for help on using the repository browser.