Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.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