$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
class HTMLPurifier_URIFilter_DisableExternal extends HTMLPurifier_URIFilter
{
/**
* @type string
*/
public $name = 'DisableExternal';
/**
* @type array
*/
protected $ourHostParts = false;
/**
* @param HTMLPurifier_Config $config
* @return void
*/
public function prepare($config)
{
$our_host = $config->getDefinition('URI')->host;
if ($our_host !== null) {
$this->ourHostParts = array_reverse(explode('.', $our_host));
}
}
/**
* @param HTMLPurifier_URI $uri Reference
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool
*/
public function filter(&$uri, $config, $context)
{
if (is_null($uri->host)) {
return true;
}
if ($this->ourHostParts === false) {
return false;
}
$host_parts = array_reverse(explode('.', $uri->host));
foreach ($this->ourHostParts as $i => $x) {
if (!isset($host_parts[$i])) {
return false;
}
if ($host_parts[$i] != $this->ourHostParts[$i]) {
return false;
}
}
return true;
}
}
// vim: et sw=4 sts=4