[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Registry for retrieving specific URI scheme validator objects. 5 */ 6 class HTMLPurifier_URISchemeRegistry 7 { 8 9 /** 10 * Retrieve sole instance of the registry. 11 * @param $prototype Optional prototype to overload sole instance with, 12 * or bool true to reset to default registry. 13 * @note Pass a registry object $prototype with a compatible interface and 14 * the function will copy it and return it all further times. 15 */ 16 public static function instance($prototype = null) { 17 static $instance = null; 18 if ($prototype !== null) { 19 $instance = $prototype; 20 } elseif ($instance === null || $prototype == true) { 21 $instance = new HTMLPurifier_URISchemeRegistry(); 22 } 23 return $instance; 24 } 25 26 /** 27 * Cache of retrieved schemes. 28 */ 29 protected $schemes = array(); 30 31 /** 32 * Retrieves a scheme validator object 33 * @param $scheme String scheme name like http or mailto 34 * @param $config HTMLPurifier_Config object 35 * @param $config HTMLPurifier_Context object 36 */ 37 public function getScheme($scheme, $config, $context) { 38 if (!$config) $config = HTMLPurifier_Config::createDefault(); 39 $null = null; // for the sake of passing by reference 40 41 // important, otherwise attacker could include arbitrary file 42 $allowed_schemes = $config->get('URI', 'AllowedSchemes'); 43 if (!$config->get('URI', 'OverrideAllowedSchemes') && 44 !isset($allowed_schemes[$scheme]) 45 ) { 46 return $null; 47 } 48 49 if (isset($this->schemes[$scheme])) return $this->schemes[$scheme]; 50 if (!isset($allowed_schemes[$scheme])) return $null; 51 52 $class = 'HTMLPurifier_URIScheme_' . $scheme; 53 if (!class_exists($class)) return $null; 54 $this->schemes[$scheme] = new $class(); 55 return $this->schemes[$scheme]; 56 } 57 58 /** 59 * Registers a custom scheme to the cache, bypassing reflection. 60 * @param $scheme Scheme name 61 * @param $scheme_obj HTMLPurifier_URIScheme object 62 */ 63 public function register($scheme, $scheme_obj) { 64 $this->schemes[$scheme] = $scheme_obj; 65 } 66 67 } 68 69 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |