| 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: |