1: <?php
2:
3: /**
4: * Definition that allows a set of elements, and allows no children.
5: * @note This is a hack to reuse code from HTMLPurifier_ChildDef_Required,
6: * really, one shouldn't inherit from the other. Only altered behavior
7: * is to overload a returned false with an array. Thus, it will never
8: * return false.
9: */
10: class HTMLPurifier_ChildDef_Optional extends HTMLPurifier_ChildDef_Required
11: {
12: /**
13: * @type bool
14: */
15: public $allow_empty = true;
16:
17: /**
18: * @type string
19: */
20: public $type = 'optional';
21:
22: /**
23: * @param array $children
24: * @param HTMLPurifier_Config $config
25: * @param HTMLPurifier_Context $context
26: * @return array
27: */
28: public function validateChildren($children, $config, $context)
29: {
30: $result = parent::validateChildren($children, $config, $context);
31: // we assume that $children is not modified
32: if ($result === false) {
33: if (empty($children)) {
34: return true;
35: } elseif ($this->whitespace) {
36: return $children;
37: } else {
38: return array();
39: }
40: }
41: return $result;
42: }
43: }
44:
45: // vim: et sw=4 sts=4
46: