| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- <?php
 
- class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
 
- {
 
-     public $type = 'URI';
 
-     protected $filters = array();
 
-     protected $postFilters = array();
 
-     protected $registeredFilters = array();
 
-     /**
 
-      * HTMLPurifier_URI object of the base specified at %URI.Base
 
-      */
 
-     public $base;
 
-     /**
 
-      * String host to consider "home" base, derived off of $base
 
-      */
 
-     public $host;
 
-     /**
 
-      * Name of default scheme based on %URI.DefaultScheme and %URI.Base
 
-      */
 
-     public $defaultScheme;
 
-     public function __construct()
 
-     {
 
-         $this->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
 
 
  |