ced1b137636c0703d8022fda5993793dc2f052a5
[yaffs-website] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / URIFilter / DisableExternal.php
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