1: <?php
2:
3: /**
4: * Super-class for definition datatype objects, implements serialization
5: * functions for the class.
6: */
7: abstract class HTMLPurifier_Definition
8: {
9:
10: /**
11: * Has setup() been called yet?
12: * @type bool
13: */
14: public $setup = false;
15:
16: /**
17: * If true, write out the final definition object to the cache after
18: * setup. This will be true only if all invocations to get a raw
19: * definition object are also optimized. This does not cause file
20: * system thrashing because on subsequent calls the cached object
21: * is used and any writes to the raw definition object are short
22: * circuited. See enduser-customize.html for the high-level
23: * picture.
24: * @type bool
25: */
26: public $optimized = null;
27:
28: /**
29: * What type of definition is it?
30: * @type string
31: */
32: public $type;
33:
34: /**
35: * Sets up the definition object into the final form, something
36: * not done by the constructor
37: * @param HTMLPurifier_Config $config
38: */
39: abstract protected function doSetup($config);
40:
41: /**
42: * Setup function that aborts if already setup
43: * @param HTMLPurifier_Config $config
44: */
45: public function setup($config)
46: {
47: if ($this->setup) {
48: return;
49: }
50: $this->setup = true;
51: $this->doSetup($config);
52: }
53: }
54:
55: // vim: et sw=4 sts=4
56: