, resolves edge cases * with making relative URIs absolute * @type bool */ public $hierarchical = false; /** * Whether or not the URI may omit a hostname when the scheme is * explicitly specified, ala file:///path/to/file. As of writing, * 'file' is the only scheme that browsers support his properly. * @type bool */ public $may_omit_host = false; /** * Validates the components of a URI for a specific scheme. * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return bool success or failure */ abstract public function doValidate(&$uri, $config, $context); /** * Public interface for validating components of a URI. Performs a * bunch of default actions. Don't overload this method. * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return bool success or failure */ public function validate(&$uri, $config, $context) { if ($this->default_port == $uri->port) { $uri->port = null; } // kludge: browsers do funny things when the scheme but not the // authority is set if (!$this->may_omit_host && // if the scheme is present, a missing host is always in error (!is_null($uri->scheme) && ($uri->host === '' || is_null($uri->host))) || // if the scheme is not present, a *blank* host is in error, // since this translates into '///path' which most browsers // interpret as being 'http://path'. (is_null($uri->scheme) && $uri->host === '') ) { do { if (is_null($uri->scheme)) { if (substr($uri->path, 0, 2) != '//') { $uri->host = null; break; } // URI is '////path', so we cannot nullify the // host to preserve semantics. Try expanding the // hostname instead (fall through) } // first see if we can manually insert a hostname $host = $config->get('URI.Host'); if (!is_null($host)) { $uri->host = $host; } else { // we can't do anything sensible, reject the URL. return false; } } while (false); } return $this->doValidate($uri, $config, $context); } }__halt_compiler();----SIGNATURE:----WjqLvgVcPE82O6MlgaVGixFsgpFCNU8NerondpOke7Q8LOCSl6DQ/qyELsD3xw8tDVIDV/8ThOhQZbafsAQG/Xty4WwXHHLhZdhGqZ8Es2LDLBr/5d3GizZoseB2BEak1pMrK2AGSqC9dpJuuAm/yE4hgCE6gF9UD7puKGorc3G7BlH1tNZtxcHsptuAognMem4+2H+HgvDfHhT9z2C0K1y4LVMO+PV2yfZ668X58n0y15vFfx3CxaY6Pqw4bG5aY6AKqWY5MSk5vXqhlc9FcgJbYy3JHBvy8v63DEekV+8caxHgq/G4JzQHhnoKPUQz9QWTy7RBW3AlAPR+slr+UjnO6P2TQ48YsJXxguePQGHRVEJn9Wqv6Hx6RG4z/M0LMGPlE+iB0EXEDN/RhCcqsBaoAk1syF0tw2ebOqbrJpMXiS7XqTnU9f2WMZu4YCwAEU/V+HM4UPnvbAgJYR9lowTlw3YGnjtpS+Omoo9DgRm67AU7vZSD79cOgO1pBLI0lGkF/J+70KuZDDfruBPQuTWv29ltUeZEE+CqIG4Ghv8GFQWtc2cqEgOFLJOWc5JcS/sBRZDmgqgU2J8hvrBcR+kc6k8T5Gns8WWUVM/LhJhpeI6rQJUwm4PtDRGEn0HKL/l/25uf1HagSV8nIkbPjCnuKA2p8/DqZD3UCY8JUM4=----ATTACHMENT:----MTc3ODM1Nzk2Mjk2NzkxOSA5OTMxMTE5MjkyNTc4MzM4IDIyMTU4NDYyMTc3NDk0ODQ=