Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
/**
4
 * Processes an entire attribute array for corrections needing multiple values.
5
 *
6
 * Occasionally, a certain attribute will need to be removed and popped onto
7
 * another value.  Instead of creating a complex return syntax for
8
 * HTMLPurifier_AttrDef, we just pass the whole attribute array to a
9
 * specialized object and have that do the special work.  That is the
10
 * family of HTMLPurifier_AttrTransform.
11
 *
12
 * An attribute transformation can be assigned to run before or after
13
 * HTMLPurifier_AttrDef validation.  See HTMLPurifier_HTMLDefinition for
14
 * more details.
15
 */
16
 
17
abstract class HTMLPurifier_AttrTransform
18
{
19
 
20
    /**
21
     * Abstract: makes changes to the attributes dependent on multiple values.
22
     *
23
     * @param array $attr Assoc array of attributes, usually from
24
     *              HTMLPurifier_Token_Tag::$attr
25
     * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
26
     * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
27
     * @return array Processed attribute array.
28
     */
29
    abstract public function transform($attr, $config, $context);
30
 
31
    /**
32
     * Prepends CSS properties to the style attribute, creating the
33
     * attribute if it doesn't exist.
34
     * @param array &$attr Attribute array to process (passed by reference)
35
     * @param string $css CSS to prepend
36
     */
37
    public function prependCSS(&$attr, $css)
38
    {
39
        $attr['style'] = isset($attr['style']) ? $attr['style'] : '';
40
        $attr['style'] = $css . $attr['style'];
41
    }
42
 
43
    /**
44
     * Retrieves and removes an attribute
45
     * @param array &$attr Attribute array to process (passed by reference)
46
     * @param mixed $key Key of attribute to confiscate
47
     * @return mixed
48
     */
49
    public function confiscateAttr(&$attr, $key)
50
    {
51
        if (!isset($attr[$key])) {
52
            return null;
53
        }
54
        $value = $attr[$key];
55
        unset($attr[$key]);
56
        return $value;
57
    }
58
}
59
 
60
// vim: et sw=4 sts=4