1: <?php
2:
3: /**
4: * Validate all attributes in the tokens.
5: */
6:
7: class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
8: {
9:
10: /**
11: * @param HTMLPurifier_Token[] $tokens
12: * @param HTMLPurifier_Config $config
13: * @param HTMLPurifier_Context $context
14: * @return HTMLPurifier_Token[]
15: */
16: public function execute($tokens, $config, $context)
17: {
18: // setup validator
19: $validator = new HTMLPurifier_AttrValidator();
20:
21: $token = false;
22: $context->register('CurrentToken', $token);
23:
24: foreach ($tokens as $key => $token) {
25:
26: // only process tokens that have attributes,
27: // namely start and empty tags
28: if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) {
29: continue;
30: }
31:
32: // skip tokens that are armored
33: if (!empty($token->armor['ValidateAttributes'])) {
34: continue;
35: }
36:
37: // note that we have no facilities here for removing tokens
38: $validator->validateToken($token, $config, $context);
39: }
40: $context->destroy('CurrentToken');
41: return $tokens;
42: }
43: }
44:
45: // vim: et sw=4 sts=4
46: