Update HTMLPurifier to v4.7.0
This commit is contained in:
		
					parent
					
						
							
								3c97a6703c
							
						
					
				
			
			
				commit
				
					
						c28109ca94
					
				
			
		
					 465 changed files with 22433 additions and 10865 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,91 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Decorator/extender XSLT processor specifically for HTML documents.
 | 
			
		||||
 */
 | 
			
		||||
class ConfigDoc_HTMLXSLTProcessor
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Instance of XSLTProcessor
 | 
			
		||||
     */
 | 
			
		||||
    protected $xsltProcessor;
 | 
			
		||||
 | 
			
		||||
    public function __construct($proc = false)
 | 
			
		||||
    {
 | 
			
		||||
        if ($proc === false) $proc = new XSLTProcessor();
 | 
			
		||||
        $this->xsltProcessor = $proc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @note Allows a string $xsl filename to be passed
 | 
			
		||||
     */
 | 
			
		||||
    public function importStylesheet($xsl)
 | 
			
		||||
    {
 | 
			
		||||
        if (is_string($xsl)) {
 | 
			
		||||
            $xsl_file = $xsl;
 | 
			
		||||
            $xsl = new DOMDocument();
 | 
			
		||||
            $xsl->load($xsl_file);
 | 
			
		||||
        }
 | 
			
		||||
        return $this->xsltProcessor->importStylesheet($xsl);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Transforms an XML file into compatible XHTML based on the stylesheet
 | 
			
		||||
     * @param $xml XML DOM tree, or string filename
 | 
			
		||||
     * @return string HTML output
 | 
			
		||||
     * @todo Rename to transformToXHTML, as transformToHTML is misleading
 | 
			
		||||
     */
 | 
			
		||||
    public function transformToHTML($xml)
 | 
			
		||||
    {
 | 
			
		||||
        if (is_string($xml)) {
 | 
			
		||||
            $dom = new DOMDocument();
 | 
			
		||||
            $dom->load($xml);
 | 
			
		||||
        } else {
 | 
			
		||||
            $dom = $xml;
 | 
			
		||||
        }
 | 
			
		||||
        $out = $this->xsltProcessor->transformToXML($dom);
 | 
			
		||||
 | 
			
		||||
        // fudges for HTML backwards compatibility
 | 
			
		||||
        // assumes that document is XHTML
 | 
			
		||||
        $out = str_replace('/>', ' />', $out); // <br /> not <br/>
 | 
			
		||||
        $out = str_replace(' xmlns=""', '', $out); // rm unnecessary xmlns
 | 
			
		||||
 | 
			
		||||
        if (class_exists('Tidy')) {
 | 
			
		||||
            // cleanup output
 | 
			
		||||
            $config = array(
 | 
			
		||||
                'indent'        => true,
 | 
			
		||||
                'output-xhtml'  => true,
 | 
			
		||||
                'wrap'          => 80
 | 
			
		||||
            );
 | 
			
		||||
            $tidy = new Tidy;
 | 
			
		||||
            $tidy->parseString($out, $config, 'utf8');
 | 
			
		||||
            $tidy->cleanRepair();
 | 
			
		||||
            $out = (string) $tidy;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Bulk sets parameters for the XSL stylesheet
 | 
			
		||||
     * @param array $options Associative array of options to set
 | 
			
		||||
     */
 | 
			
		||||
    public function setParameters($options)
 | 
			
		||||
    {
 | 
			
		||||
        foreach ($options as $name => $value) {
 | 
			
		||||
            $this->xsltProcessor->setParameter('', $name, $value);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Forward any other calls to the XSLT processor
 | 
			
		||||
     */
 | 
			
		||||
    public function __call($name, $arguments)
 | 
			
		||||
    {
 | 
			
		||||
        call_user_func_array(array($this->xsltProcessor, $name), $arguments);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// vim: et sw=4 sts=4
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue