Blame view

vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php 1.02 KB
70f4f18b   Administrator   first_commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  <?php
  
  /**
   * Post-transform that performs validation to the name attribute; if
   * it is present with an equivalent id attribute, it is passed through;
   * otherwise validation is performed.
   */
  class HTMLPurifier_AttrTransform_NameSync extends HTMLPurifier_AttrTransform
  {
  
      public function __construct()
      {
          $this->idDef = new HTMLPurifier_AttrDef_HTML_ID();
      }
  
      /**
       * @param array $attr
       * @param HTMLPurifier_Config $config
       * @param HTMLPurifier_Context $context
       * @return array
       */
      public function transform($attr, $config, $context)
      {
          if (!isset($attr['name'])) {
              return $attr;
          }
          $name = $attr['name'];
          if (isset($attr['id']) && $attr['id'] === $name) {
              return $attr;
          }
          $result = $this->idDef->validate($name, $config, $context);
          if ($result === false) {
              unset($attr['name']);
          } else {
              $attr['name'] = $result;
          }
          return $attr;
      }
  }
  
  // vim: et sw=4 sts=4