ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
URISchemeRegistry.php
Go to the documentation of this file.
1 <?php
2 
7 {
8 
17  public static function instance($prototype = null)
18  {
19  static $instance = null;
20  if ($prototype !== null) {
21  $instance = $prototype;
22  } elseif ($instance === null || $prototype == true) {
23  $instance = new HTMLPurifier_URISchemeRegistry();
24  }
25  return $instance;
26  }
27 
32  protected $schemes = array();
33 
41  public function getScheme($scheme, $config, $context)
42  {
43  if (!$config) {
45  }
46 
47  // important, otherwise attacker could include arbitrary file
48  $allowed_schemes = $config->get('URI.AllowedSchemes');
49  if (!$config->get('URI.OverrideAllowedSchemes') &&
50  !isset($allowed_schemes[$scheme])
51  ) {
52  return;
53  }
54 
55  if (isset($this->schemes[$scheme])) {
56  return $this->schemes[$scheme];
57  }
58  if (!isset($allowed_schemes[$scheme])) {
59  return;
60  }
61 
62  $class = 'HTMLPurifier_URIScheme_' . $scheme;
63  if (!class_exists($class)) {
64  return;
65  }
66  $this->schemes[$scheme] = new $class();
67  return $this->schemes[$scheme];
68  }
69 
75  public function register($scheme, $scheme_obj)
76  {
77  $this->schemes[$scheme] = $scheme_obj;
78  }
79 }
80 
81 // vim: et sw=4 sts=4