[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/htmlpurifier/library/HTMLPurifier/ -> URISchemeRegistry.php (source)

   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


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1