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 rel="nofollow" to all outbound links.  This transform is
   7   * only attached if Attr.Nofollow is TRUE.
   8   */
   9  class HTMLPurifier_AttrTransform_Nofollow extends HTMLPurifier_AttrTransform
  10  {
  11      /**
  12       * @type HTMLPurifier_URIParser
  13       */
  14      private $parser;
  15  
  16      public function __construct()
  17      {
  18          $this->parser = new HTMLPurifier_URIParser();
  19      }
  20  
  21      /**
  22       * @param array $attr
  23       * @param HTMLPurifier_Config $config
  24       * @param HTMLPurifier_Context $context
  25       * @return array
  26       */
  27      public function transform($attr, $config, $context)
  28      {
  29          if (!isset($attr['href'])) {
  30              return $attr;
  31          }
  32  
  33          // XXX Kind of inefficient
  34          $url = $this->parser->parse($attr['href']);
  35          $scheme = $url->getSchemeObj($config, $context);
  36  
  37          if ($scheme->browsable && !$url->isLocal($config, $context)) {
  38              if (isset($attr['rel'])) {
  39                  $rels = explode(' ', $attr['rel']);
  40                  if (!in_array('nofollow', $rels)) {
  41                      $rels[] = 'nofollow';
  42                  }
  43                  $attr['rel'] = implode(' ', $rels);
  44              } else {
  45                  $attr['rel'] = 'nofollow';
  46              }
  47          }
  48          return $attr;
  49      }
  50  }
  51  
  52  // vim: et sw=4 sts=4