registerFilter ( new HTMLPurifier_URIFilter_DisableExternal () );
$this->registerFilter ( new HTMLPurifier_URIFilter_DisableExternalResources () );
$this->registerFilter ( new HTMLPurifier_URIFilter_DisableResources () );
$this->registerFilter ( new HTMLPurifier_URIFilter_HostBlacklist () );
$this->registerFilter ( new HTMLPurifier_URIFilter_SafeIframe () );
$this->registerFilter ( new HTMLPurifier_URIFilter_MakeAbsolute () );
$this->registerFilter ( new HTMLPurifier_URIFilter_Munge () );
}
public function registerFilter($filter) {
$this->registeredFilters [$filter->name] = $filter;
}
public function addFilter($filter, $config) {
$r = $filter->prepare ( $config );
if ($r === false)
return; // null is ok, for backwards compat
if ($filter->post) {
$this->postFilters [$filter->name] = $filter;
} else {
$this->filters [$filter->name] = $filter;
}
}
protected function doSetup($config) {
$this->setupMemberVariables ( $config );
$this->setupFilters ( $config );
}
protected function setupFilters($config) {
foreach ( $this->registeredFilters as $name => $filter ) {
if ($filter->always_load) {
$this->addFilter ( $filter, $config );
} else {
$conf = $config->get ( 'URI.' . $name );
if ($conf !== false && $conf !== null) {
$this->addFilter ( $filter, $config );
}
}
}
unset ( $this->registeredFilters );
}
protected function setupMemberVariables($config) {
$this->host = $config->get ( 'URI.Host' );
$base_uri = $config->get ( 'URI.Base' );
if (! is_null ( $base_uri )) {
$parser = new HTMLPurifier_URIParser ();
$this->base = $parser->parse ( $base_uri );
$this->defaultScheme = $this->base->scheme;
if (is_null ( $this->host ))
$this->host = $this->base->host;
}
if (is_null ( $this->defaultScheme ))
$this->defaultScheme = $config->get ( 'URI.DefaultScheme' );
}
public function getDefaultScheme($config, $context) {
return HTMLPurifier_URISchemeRegistry::instance ()->getScheme ( $this->defaultScheme, $config, $context );
}
public function filter(&$uri, $config, $context) {
foreach ( $this->filters as $name => $f ) {
$result = $f->filter ( $uri, $config, $context );
if (! $result)
return false;
}
return true;
}
public function postFilter(&$uri, $config, $context) {
foreach ( $this->postFilters as $name => $f ) {
$result = $f->filter ( $uri, $config, $context );
if (! $result)
return false;
}
return true;
}
}
// vim: et sw=4 sts=4