[SPIP] ~maj 3.0.10 --> 3.0.14
[lhc/web/www.git] / www / ecrire / inc / filtres_mime.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14 include_spip('inc/filtres');
15
16 // Fichier des filtres d'incrustation d'un document selon son type MIME
17 // Les 7 familles de base ne font rien sauf celle des textes
18
19 function filtre_image_dist($t) {return '';}
20 function filtre_audio_dist($t) {return '';}
21 function filtre_video_dist($t) {return '';}
22 function filtre_application_dist($t) {return '';}
23 function filtre_message_dist($t) {return '';}
24 function filtre_multipart_dist($t) {return '';}
25
26 // http://doc.spip.org/@filtre_text_txt_dist
27 function filtre_text_dist($t) {
28 static $t1 = array('&', '<', '>');
29 static $t2 = array('&amp;', '&lt;', '&gt;');
30 return '<pre>' . str_replace($t1, $t2, $t) . '</pre>';
31 }
32
33 // http://doc.spip.org/@filtre_text_csv_dist
34 function filtre_text_csv_dist($t) {
35 include_spip('inc/csv');
36 list($entete, $lignes) = analyse_csv($t);
37 foreach ($lignes as &$l)
38 $l = join('|', $l);
39 $corps = join("\n", $lignes) . "\n";
40 $corps = $caption .
41 "\n|{{" .
42 join('}}|{{',$entete) .
43 "}}|" .
44 "\n|" .
45 str_replace("\n", "|\n|",$corps);
46 $corps = str_replace('&#34#','&#34;',$corps);
47 include_spip('inc/texte');
48 return propre($corps);
49 }
50
51 // Incrustation de HTML, si on est capable de le securiser
52 // sinon, afficher le source
53 // http://doc.spip.org/@filtre_text_html_dist
54 function filtre_text_html_dist($t)
55 {
56 if (!preg_match(',^(.*?)<body[^>]*>(.*)</body>,is', $t, $r))
57 return appliquer_filtre($t,'text/plain');
58
59 list(,$h,$t) = $r;
60
61 $style = '';
62 // recuperer les styles internes
63 if (preg_match_all(',<style>(.*?)</style>,is', $h, $r, PREG_PATTERN_ORDER))
64 $style = join("\n",$r[1]);
65 // ... et externes
66
67 include_spip('inc/distant');
68 if (preg_match_all(',<link[^>]+type=.text/css[^>]*>,is', $h, $r, PREG_PATTERN_ORDER))
69 foreach($r[0] as $l) {
70 preg_match("/href='([^']*)'/", str_replace('"',"'",$l), $m);
71 $style .= "\n/* $l */\n"
72 . str_replace('<','',recuperer_page($m[1]));
73 }
74 // Pourquoi SafeHtml transforme-t-il en texte les scripts dans Body ?
75 $t = safehtml(preg_replace(',<script'.'.*?</script>,is','',$t));
76 return (!$style ? '' : "\n<style>".$style."</style>") . $t;
77 }
78
79 // http://doc.spip.org/@filtre_audio_x_pn_realaudio
80 function filtre_audio_x_pn_realaudio($id)
81 {
82 return "
83 <param name='controls' value='PositionSlider' />
84 <param name='controls' value='ImageWindow' />
85 <param name='controls' value='PlayButton' />
86 <param name='console' value='Console$id' />
87 <param name='nojava' value='true' />";
88 }
89 ?>