1<?php
2
3/**
4 * Defines allowed child nodes and validates nodes against it.
5 */
6abstract class HTMLPurifier_ChildDef
7{
8    /**
9     * Type of child definition, usually right-most part of class name lowercase.
10     * Used occasionally in terms of context.
11     * @type string
12     */
13    public $type;
14
15    /**
16     * Indicates whether or not an empty array of children is okay.
17     *
18     * This is necessary for redundant checking when changes affecting
19     * a child node may cause a parent node to now be disallowed.
20     * @type bool
21     */
22    public $allow_empty;
23
24    /**
25     * Lookup array of all elements that this definition could possibly allow.
26     * @type array
27     */
28    public $elements = array();
29
30    /**
31     * Get lookup of tag names that should not close this element automatically.
32     * All other elements will do so.
33     * @param HTMLPurifier_Config $config HTMLPurifier_Config object
34     * @return array
35     */
36    public function getAllowedElements($config)
37    {
38        return $this->elements;
39    }
40
41    /**
42     * Validates nodes according to definition and returns modification.
43     *
44     * @param HTMLPurifier_Node[] $children Array of HTMLPurifier_Node
45     * @param HTMLPurifier_Config $config HTMLPurifier_Config object
46     * @param HTMLPurifier_Context $context HTMLPurifier_Context object
47     * @return bool|array true to leave nodes as is, false to remove parent node, array of replacement children
48     */
49    abstract public function validateChildren($children, $config, $context);
50}
51
52// vim: et sw=4 sts=4
53