File "safehtml.php"
Full path: /home/argothem/www/v4_old/plugins-dist/safehtml/inc/safehtml.php
File size: 1.88 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// Controle la presence de la lib safehtml et cree la fonction
// de transformation du texte qui l'exploite
function inc_safehtml_dist($t) {
static $process, $test;
if (!$test) {
$process = false;
if ($f = find_in_path('lib/safehtml/classes')) {
define('XML_HTMLSAX3', $f . '/');
require_once XML_HTMLSAX3 . 'safehtml.php';
$process = new safehtml();
$process->deleteTags[] = 'param'; // sinon bug Firefox
}
if ($process) {
$test = 1;
} # ok
else {
$test = -1;
} # se rabattre sur une fonction de securite basique
}
if ($test > 0) {
# reset ($process->clear() ne vide que _xhtml...),
# on doit pouvoir programmer ca plus propremement
$process->_counter = [];
$process->_stack = [];
$process->_dcCounter = [];
$process->_dcStack = [];
$process->_listScope = 0;
$process->_liStack = [];
# $process->parse(''); # cas particulier ?
$process->clear();
$t = $process->parse($t);
} else {
$t = entites_html($t);
} // tres laid, en cas d'erreur
// supprimer un <li></li> provenant d'un <li> ouvrant seul+safehtml
// cf https://core.spip.net/issues/2201
$t = str_replace('<li></li>', '', $t);
return $t;
}