Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/htmlpurifier/HTMLPurifier/URIDefinition.php
Go to the documentation of this file.
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
 All Data Structures Namespaces Files Functions Variables Enumerations