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  // must be called POST validation
   4  
   5  /**
   6   * Adds target="blank" to all outbound links.  This transform is
   7   * only attached if Attr.TargetBlank is TRUE.  This works regardless
   8   * of whether or not Attr.AllowedFrameTargets
   9   */
  10  class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform
  11  {
  12      /**
  13       * @type HTMLPurifier_URIParser
  14       */
  15      private $parser;
  16  
  17      public function __construct()
  18      {
  19          $this->parser = new HTMLPurifier_URIParser();
  20      }
  21  
  22      /**
  23       * @param array $attr
  24       * @param HTMLPurifier_Config $config
  25       * @param HTMLPurifier_Context $context
  26       * @return array
  27       */
  28      public function transform($attr, $config, $context)
  29      {
  30          if (!isset($attr['href'])) {
  31              return $attr;
  32          }
  33  
  34          // XXX Kind of inefficient
  35          $url = $this->parser->parse($attr['href']);
  36          $scheme = $url->getSchemeObj($config, $context);
  37  
  38          if ($scheme->browsable && !$url->isBenign($config, $context)) {
  39              $attr['target'] = '_blank';
  40          }
  41          return $attr;
  42      }
  43  }
  44  
  45  // vim: et sw=4 sts=4