Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
   1  <?php
   2  
   3  /**

   4   * Abstract class of a tag token (start, end or empty), and its behavior.

   5   */
   6  abstract class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
   7  {
   8      /**

   9       * Static bool marker that indicates the class is a tag.

  10       *

  11       * This allows us to check objects with <tt>!empty($obj->is_tag)</tt>

  12       * without having to use a function call <tt>is_a()</tt>.

  13       * @type bool

  14       */
  15      public $is_tag = true;
  16  
  17      /**

  18       * The lower-case name of the tag, like 'a', 'b' or 'blockquote'.

  19       *

  20       * @note Strictly speaking, XML tags are case sensitive, so we shouldn't

  21       * be lower-casing them, but these tokens cater to HTML tags, which are

  22       * insensitive.

  23       * @type string

  24       */
  25      public $name;
  26  
  27      /**

  28       * Associative array of the tag's attributes.

  29       * @type array

  30       */
  31      public $attr = array();
  32  
  33      /**

  34       * Non-overloaded constructor, which lower-cases passed tag name.

  35       *

  36       * @param string $name String name.

  37       * @param array $attr Associative array of attributes.

  38       * @param int $line

  39       * @param int $col

  40       * @param array $armor

  41       */
  42      public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array())
  43      {
  44          $this->name = ctype_lower($name) ? $name : strtolower($name);
  45          foreach ($attr as $key => $value) {
  46              // normalization only necessary when key is not lowercase

  47              if (!ctype_lower($key)) {
  48                  $new_key = strtolower($key);
  49                  if (!isset($attr[$new_key])) {
  50                      $attr[$new_key] = $attr[$key];
  51                  }
  52                  if ($new_key !== $key) {
  53                      unset($attr[$key]);
  54                  }
  55              }
  56          }
  57          $this->attr = $attr;
  58          $this->line = $line;
  59          $this->col = $col;
  60          $this->armor = $armor;
  61      }
  62  
  63      public function toNode() {
  64          return new HTMLPurifier_Node_Element($this->name, $this->attr, $this->line, $this->col, $this->armor);
  65      }
  66  }
  67  
  68  // vim: et sw=4 sts=4