<?php
class RCCWP_HTML_Purifier
{
	function ApplyHTMLPurifier($data)
	{
		include_once('RCCWP_Options.php');
		if (0 == RCCWP_Options::Get('enable-HTMLPurifier')) return $data;
		
		// We need to handle <!-- manually because HTMLPurifier removes it
		$MORE_TAG = "<!--more-->";

		$purifier = RCCWP_HTML_Purifier::get_purifier ();
		
		$pos = strpos($data, $MORE_TAG);
		if ($pos === false){
			$data =  addslashes ($purifier->purify (stripslashes ($data)));
		}
		else{
			$before_more = addslashes ($purifier->purify (stripslashes (substr($data,0,$pos))));
			$after_more = addslashes ($purifier->purify (stripslashes (substr($data,$pos+strlen($MORE_TAG)))));
			$data = $before_more.$MORE_TAG.$after_more;
		}

		return $data;
	}

	/**
	 * Get an HTML Purifier object with all settings already configured
	 *
	 * @return HTMLPurifier
	 **/
	
	function get_purifier ()
	{
		require_once('purifier_lib/HTMLPurifier.auto.php');
		include_once('RCCWP_Options.php');

	 	$config = HTMLPurifier_Config::createDefault();

		// Set base options
		$config->set ('HTML',   'Doctype', "HTML 4.01 Transitional");
		$config->set ('Core',   'Encoding', get_option ('blog_charset'));
		$config->set ('HTML',   'TidyLevel', RCCWP_Options::Get('tidy-level'));
		$config->set ('Output', 'TidyFormat', true);
		
		
		// If we can write to the cache directory then set it (directory is same as used by WP-Cache and WP object cache)
		if (is_writeable (dirname (RCCWP_HTML_Purifier::cache_directory ())))
		{
			if (!file_exists (RCCWP_HTML_Purifier::cache_directory ()))
				@mkdir (RCCWP_HTML_Purifier::cache_directory ());
				die('here');
			$config->set ('Cache', 'SerializerPath', RCCWP_HTML_Purifier::cache_directory ());	
		}
		else{
			$config->set ('Cache', 'DefinitionImpl', null);
			$config->set ('Cache', 'SerializerPath', null);	
		}
		
		
		return new HTMLPurifier ($config);
	}


	/**
	 * Return the cache directory
	 *
	 * @return string
	 **/
	
	function cache_directory ()
	{
		return realpath (dirname (__FILE__).'/../../cache/html-purified');
	}

}
?>
