|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition 00004 { 00005 00006 public $type = 'URI'; 00007 protected $filters = array(); 00008 protected $postFilters = array(); 00009 protected $registeredFilters = array(); 00010 00014 public $base; 00015 00019 public $host; 00020 00024 public $defaultScheme; 00025 00026 public function __construct() { 00027 $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal()); 00028 $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources()); 00029 $this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist()); 00030 $this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute()); 00031 $this->registerFilter(new HTMLPurifier_URIFilter_Munge()); 00032 } 00033 00034 public function registerFilter($filter) { 00035 $this->registeredFilters[$filter->name] = $filter; 00036 } 00037 00038 public function addFilter($filter, $config) { 00039 $r = $filter->prepare($config); 00040 if ($r === false) return; // null is ok, for backwards compat 00041 if ($filter->post) { 00042 $this->postFilters[$filter->name] = $filter; 00043 } else { 00044 $this->filters[$filter->name] = $filter; 00045 } 00046 } 00047 00048 protected function doSetup($config) { 00049 $this->setupMemberVariables($config); 00050 $this->setupFilters($config); 00051 } 00052 00053 protected function setupFilters($config) { 00054 foreach ($this->registeredFilters as $name => $filter) { 00055 $conf = $config->get('URI.' . $name); 00056 if ($conf !== false && $conf !== null) { 00057 $this->addFilter($filter, $config); 00058 } 00059 } 00060 unset($this->registeredFilters); 00061 } 00062 00063 protected function setupMemberVariables($config) { 00064 $this->host = $config->get('URI.Host'); 00065 $base_uri = $config->get('URI.Base'); 00066 if (!is_null($base_uri)) { 00067 $parser = new HTMLPurifier_URIParser(); 00068 $this->base = $parser->parse($base_uri); 00069 $this->defaultScheme = $this->base->scheme; 00070 if (is_null($this->host)) $this->host = $this->base->host; 00071 } 00072 if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme'); 00073 } 00074 00075 public function filter(&$uri, $config, $context) { 00076 foreach ($this->filters as $name => $f) { 00077 $result = $f->filter($uri, $config, $context); 00078 if (!$result) return false; 00079 } 00080 return true; 00081 } 00082 00083 public function postFilter(&$uri, $config, $context) { 00084 foreach ($this->postFilters as $name => $f) { 00085 $result = $f->filter($uri, $config, $context); 00086 if (!$result) return false; 00087 } 00088 return true; 00089 } 00090 00091 } 00092 00093 // vim: et sw=4 sts=4