Source of file RemoveSpansWithoutAttributes.php
Size: 1,714 Bytes - Last Modified: 2021-12-23T10:48:37+00:00
/var/www/docs.ssmods.com/process/src/thirdparty/htmlpurifier/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | <?php /** * Injector that removes spans with no attributes */ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_Injector { public $name = 'RemoveSpansWithoutAttributes'; public $needed = array('span'); private $attrValidator; /** * Used by AttrValidator */ private $config; private $context; public function prepare($config, $context) { $this->attrValidator = new HTMLPurifier_AttrValidator(); $this->config = $config; $this->context = $context; return parent::prepare($config, $context); } public function handleElement(&$token) { if ($token->name !== 'span' || !$token instanceof HTMLPurifier_Token_Start) { return; } // We need to validate the attributes now since this doesn't normally // happen until after MakeWellFormed. If all the attributes are removed // the span needs to be removed too. $this->attrValidator->validateToken($token, $this->config, $this->context); $token->armor['ValidateAttributes'] = true; if (!empty($token->attr)) { return; } $nesting = 0; $spanContentTokens = array(); while ($this->forwardUntilEndToken($i, $current, $nesting)) {} if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') { // Mark closing span tag for deletion $current->markForDeletion = true; // Delete open span tag $token = false; } } public function handleEnd(&$token) { if ($token->markForDeletion) { $token = false; } } } // vim: et sw=4 sts=4 |