ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
RemoveSpansWithoutAttributes.php
Go to the documentation of this file.
1 <?php
2 
7 {
8  public $name = 'RemoveSpansWithoutAttributes';
9  public $needed = array('span');
10 
11  private $attrValidator;
12 
16  private $config;
17  private $context;
18 
19  public function prepare($config, $context) {
20  $this->attrValidator = new HTMLPurifier_AttrValidator();
21  $this->config = $config;
22  $this->context = $context;
24  }
25 
26  public function handleElement(&$token) {
27  if ($token->name !== 'span' || !$token instanceof HTMLPurifier_Token_Start) {
28  return;
29  }
30 
31  // We need to validate the attributes now since this doesn't normally
32  // happen until after MakeWellFormed. If all the attributes are removed
33  // the span needs to be removed too.
34  $this->attrValidator->validateToken($token, $this->config, $this->context);
35  $token->armor['ValidateAttributes'] = true;
36 
37  if (!empty($token->attr)) {
38  return;
39  }
40 
41  $nesting = 0;
42  $spanContentTokens = array();
43  while ($this->forwardUntilEndToken($i, $current, $nesting)) {}
44 
45  if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') {
46  // Mark closing span tag for deletion
47  $current->markForDeletion = true;
48  // Delete open span tag
49  $token = false;
50  }
51  }
52 
53  public function handleEnd(&$token) {
54  if ($token->markForDeletion) {
55  $token = false;
56  }
57  }
58 }
59 
60 // vim: et sw=4 sts=4