Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.
   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