12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?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
|