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;
}