mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 08:21:52 +00:00
1db36fb09d
* Define HTMLPurifier_Lexer::$_entity_parser property This fixes a PHP 8.2 deprecation. * Define HTMLPurifier_URIFilterHarness::$filter property This fixes a PHP 8.2 deprecation. * Define HTMLPurifier_AttrTransform_NameSync::$idDef property This fixes a PHP 8.2 deprecation. * Define HTMLPurifier_AttrTransform_NameSyncTest::$accumulator property This fixes a PHP 8.2 deprecation. * Define HTMLPurifier_AttrValidator_ErrorsTest::$language property This fixes a PHP 8.2 deprecation. * Define HTMLPurifier_ChildDef_List::$whitespace property This fixes a PHP 8.2 deprecation. * Do not modify incoming tokens in RemoveSpansWithoutAttributes Previously the undefined property `->markForDeletion` was added to the incoming tokens. This causes a deprecation in PHP 8.2. Fix this by storing to-be-deleted tokens inside SplObjectStorage. In PHP 8 a WeakMap would be preferable, as that prevents leaks if `handleEnd` is never called for the token.
47 lines
1.1 KiB
PHP
47 lines
1.1 KiB
PHP
<?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
|
|
{
|
|
|
|
/**
|
|
* @type HTMLPurifier_AttrDef_HTML_ID
|
|
*/
|
|
public $idDef;
|
|
|
|
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
|