2006-08-05 01:50:13 +00:00
|
|
|
<?php
|
|
|
|
|
2006-08-17 20:29:34 +00:00
|
|
|
/**
|
|
|
|
* Processes an entire attribute array for corrections needing multiple values.
|
|
|
|
*
|
|
|
|
* Occasionally, a certain attribute will need to be removed and popped onto
|
|
|
|
* another value. Instead of creating a complex return syntax for
|
|
|
|
* HTMLPurifier_AttrDef, we just pass the whole attribute array to a
|
|
|
|
* specialized object and have that do the special work. That is the
|
|
|
|
* family of HTMLPurifier_AttrTransform.
|
|
|
|
*
|
|
|
|
* An attribute transformation can be assigned to run before or after
|
|
|
|
* HTMLPurifier_AttrDef validation. See HTMLPurifier_HTMLDefinition for
|
|
|
|
* more details.
|
|
|
|
*/
|
|
|
|
|
2006-08-05 01:50:13 +00:00
|
|
|
class HTMLPurifier_AttrTransform
|
|
|
|
{
|
|
|
|
|
2006-08-17 20:29:34 +00:00
|
|
|
/**
|
|
|
|
* Abstract: makes changes to the attributes dependent on multiple values.
|
|
|
|
*
|
|
|
|
* @param $attr Assoc array of attributes, usually from
|
2006-12-06 22:29:08 +00:00
|
|
|
* HTMLPurifier_Token_Tag::$attr
|
2006-08-17 20:29:34 +00:00
|
|
|
* @param $config Mandatory HTMLPurifier_Config object.
|
2006-10-21 17:27:51 +00:00
|
|
|
* @param $context Mandatory HTMLPurifier_Context object
|
2006-08-17 20:29:34 +00:00
|
|
|
* @returns Processed attribute array.
|
|
|
|
*/
|
2006-10-22 16:09:36 +00:00
|
|
|
function transform($attr, $config, &$context) {
|
2006-08-05 01:50:13 +00:00
|
|
|
trigger_error('Cannot call abstract function', E_USER_ERROR);
|
|
|
|
}
|
2007-05-05 02:25:55 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Prepends CSS properties to the style attribute, creating the
|
|
|
|
* attribute if it doesn't exist.
|
|
|
|
* @param $attr Attribute array to process (passed by reference)
|
|
|
|
* @param $css CSS to prepend
|
|
|
|
*/
|
|
|
|
function prependCSS(&$attr, $css) {
|
|
|
|
$attr['style'] = isset($attr['style']) ? $attr['style'] : '';
|
|
|
|
$attr['style'] = $css . $attr['style'];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves and removes an attribute
|
|
|
|
* @param $attr Attribute array to process (passed by reference)
|
|
|
|
* @param $key Key of attribute to confiscate
|
|
|
|
*/
|
|
|
|
function confiscateAttr(&$attr, $key) {
|
|
|
|
if (!isset($attr[$key])) return null;
|
|
|
|
$value = $attr[$key];
|
|
|
|
unset($attr[$key]);
|
|
|
|
return $value;
|
|
|
|
}
|
|
|
|
|
2006-08-05 01:50:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
?>
|