$name
$name
Unique identifier of filter.
Chainable filters for custom URI processing.
These filters can perform custom actions on a URI filter object, including transformation or blacklisting. A filter named Foo must have a corresponding configuration directive %URI.Foo, unless always_load is specified to be true.
The following contexts may be available while URIFilters are being processed:
- EmbeddedURI: true if URI is an embedded resource that will
be loaded automatically on page load
- CurrentToken: a reference to the token that is currently
being processed
- CurrentAttr: the name of the attribute that is currently being
processed
- CurrentCSSProperty: the name of the CSS property that is
currently being processed (if applicable)
<?php
// It's not clear to me whether or not Punycode means that hostnames
// do not have canonical forms anymore. As far as I can tell, it's
// not a problem (punycoding should be identity when no Unicode
// points are involved), but I'm not 100% sure
class HTMLPurifier_URIFilter_HostBlacklist extends HTMLPurifier_URIFilter
{
/**
* @type string
*/
public $name = 'HostBlacklist';
/**
* @type array
*/
protected $blacklist = array();
/**
* @param HTMLPurifier_Config $config
* @return bool
*/
public function prepare($config)
{
$this->blacklist = $config->get('URI.HostBlacklist');
return true;
}
/**
* @param HTMLPurifier_URI $uri
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool
*/
public function filter(&$uri, $config, $context)
{
foreach ($this->blacklist as $blacklisted_host_fragment) {
if (strpos($uri->host, $blacklisted_host_fragment) !== false) {
return false;
}
}
return true;
}
}
// vim: et sw=4 sts=4