1: | <?php |
2: | |
3: | /** |
4: | * Decorator that, depending on a token, switches between two definitions. |
5: | */ |
6: | class HTMLPurifier_AttrDef_Switch |
7: | { |
8: | |
9: | /** |
10: | * @type string |
11: | */ |
12: | protected $tag; |
13: | |
14: | /** |
15: | * @type HTMLPurifier_AttrDef |
16: | */ |
17: | protected $withTag; |
18: | |
19: | /** |
20: | * @type HTMLPurifier_AttrDef |
21: | */ |
22: | protected $withoutTag; |
23: | |
24: | /** |
25: | * @param string $tag Tag name to switch upon |
26: | * @param HTMLPurifier_AttrDef $with_tag Call if token matches tag |
27: | * @param HTMLPurifier_AttrDef $without_tag Call if token doesn't match, or there is no token |
28: | */ |
29: | public function __construct($tag, $with_tag, $without_tag) |
30: | { |
31: | $this->tag = $tag; |
32: | $this->withTag = $with_tag; |
33: | $this->withoutTag = $without_tag; |
34: | } |
35: | |
36: | /** |
37: | * @param string $string |
38: | * @param HTMLPurifier_Config $config |
39: | * @param HTMLPurifier_Context $context |
40: | * @return bool|string |
41: | */ |
42: | public function validate($string, $config, $context) |
43: | { |
44: | $token = $context->get('CurrentToken', true); |
45: | if (!$token || $token->name !== $this->tag) { |
46: | return $this->withoutTag->validate($string, $config, $context); |
47: | } else { |
48: | return $this->withTag->validate($string, $config, $context); |
49: | } |
50: | } |
51: | } |
52: | |
53: | // vim: et sw=4 sts=4 |
54: |