1: <?php
2:
3: class HTMLPurifier_URIFilter_DisableExternal extends HTMLPurifier_URIFilter
4: {
5: /**
6: * @type string
7: */
8: public $name = 'DisableExternal';
9:
10: /**
11: * @type array
12: */
13: protected $ourHostParts = false;
14:
15: /**
16: * @param HTMLPurifier_Config $config
17: * @return void
18: */
19: public function prepare($config)
20: {
21: $our_host = $config->getDefinition('URI')->host;
22: if ($our_host !== null) {
23: $this->ourHostParts = array_reverse(explode('.', $our_host));
24: }
25: }
26:
27: /**
28: * @param HTMLPurifier_URI $uri Reference
29: * @param HTMLPurifier_Config $config
30: * @param HTMLPurifier_Context $context
31: * @return bool
32: */
33: public function filter(&$uri, $config, $context)
34: {
35: if (is_null($uri->host)) {
36: return true;
37: }
38: if ($this->ourHostParts === false) {
39: return false;
40: }
41: $host_parts = array_reverse(explode('.', $uri->host));
42: foreach ($this->ourHostParts as $i => $x) {
43: if (!isset($host_parts[$i])) {
44: return false;
45: }
46: if ($host_parts[$i] != $this->ourHostParts[$i]) {
47: return false;
48: }
49: }
50: return true;
51: }
52: }
53:
54: // vim: et sw=4 sts=4
55: