[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/library/HTMLPurifier/AttrTransform/ -> Nofollow.php (source)

   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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1