Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
   1  <?php
   2  
   3  class HTMLPurifier_URIFilter_DisableExternal extends HTMLPurifier_URIFilter
   4  {
   5      /**

   6       * @type string

   7       */
   8      public $name = 'DisableExternal';
   9  
  10      /**

  11       * @type array

  12       */
  13      protected $ourHostParts = false;
  14  
  15      /**

  16       * @param HTMLPurifier_Config $config

  17       * @return void

  18       */
  19      public function prepare($config)
  20      {
  21          $our_host = $config->getDefinition('URI')->host;
  22          if ($our_host !== null) {
  23              $this->ourHostParts = array_reverse(explode('.', $our_host));
  24          }
  25      }
  26  
  27      /**

  28       * @param HTMLPurifier_URI $uri Reference

  29       * @param HTMLPurifier_Config $config

  30       * @param HTMLPurifier_Context $context

  31       * @return bool

  32       */
  33      public function filter(&$uri, $config, $context)
  34      {
  35          if (is_null($uri->host)) {
  36              return true;
  37          }
  38          if ($this->ourHostParts === false) {
  39              return false;
  40          }
  41          $host_parts = array_reverse(explode('.', $uri->host));
  42          foreach ($this->ourHostParts as $i => $x) {
  43              if (!isset($host_parts[$i])) {
  44                  return false;
  45              }
  46              if ($host_parts[$i] != $this->ourHostParts[$i]) {
  47                  return false;
  48              }
  49          }
  50          return true;
  51      }
  52  }
  53  
  54  // vim: et sw=4 sts=4