3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
14 if (!defined("_ECRIRE_INC_VERSION")) return;
16 // Controle la presence de la lib safehtml et cree la fonction
17 // de transformation du texte qui l'exploite
18 // http://doc.spip.org/@inc_safehtml_dist
19 function inc_safehtml_dist($t) {
20 static $process, $test;
24 if ($f = find_in_path('lib/safehtml/classes')) {
25 define('XML_HTMLSAX3', $f.'/');
26 require_once XML_HTMLSAX3
.'safehtml.php';
27 $process = new safehtml();
28 $process->deleteTags
[] = 'param'; // sinon bug Firefox
33 $test = -1; # se rabattre sur une fonction de securite basique
38 # ex: l'embed de youtube
40 false !== strpos($t, 'iframe')) {
41 foreach (extraire_balises($t, 'iframe') as $iframe) {
42 if (preg_match(',^http://(www\.)?(youtube\.com|(player\.)?vimeo\.com)/.*,', extraire_attribut($iframe, 'src'))) {
43 $re = '___IFRAME___'.md5($iframe);
45 $t = str_replace($iframe, $re, $t);
50 # reset ($process->clear() ne vide que _xhtml...),
51 # on doit pouvoir programmer ca plus propremement
52 $process->_counter
= array();
53 $process->_stack
= array();
54 $process->_dcCounter
= array();
55 $process->_dcStack
= array();
56 $process->_listScope
= 0;
57 $process->_liStack
= array();
58 # $process->parse(''); # cas particulier ?
60 $t = $process->parse($t);
62 # reinserer les trucs autorises
64 foreach ($ok as $re => $v)
65 $t = str_replace($re, $v, $t);
68 $t = entites_html($t); // tres laid, en cas d'erreur