1: <?php
2:
3: /**
4: * Object that provides entity lookup table from entity name to character
5: */
6: class HTMLPurifier_EntityLookup
7: {
8: /**
9: * Assoc array of entity name to character represented.
10: * @type array
11: */
12: public $table;
13:
14: /**
15: * Sets up the entity lookup table from the serialized file contents.
16: * @param bool $file
17: * @note The serialized contents are versioned, but were generated
18: * using the maintenance script generate_entity_file.php
19: * @warning This is not in constructor to help enforce the Singleton
20: */
21: public function setup($file = false)
22: {
23: if (!$file) {
24: $file = HTMLPURIFIER_PREFIX . '/HTMLPurifier/EntityLookup/entities.ser';
25: }
26: $this->table = unserialize(file_get_contents($file));
27: }
28:
29: /**
30: * Retrieves sole instance of the object.
31: * @param bool|HTMLPurifier_EntityLookup $prototype Optional prototype of custom lookup table to overload with.
32: * @return HTMLPurifier_EntityLookup
33: */
34: public static function instance($prototype = false)
35: {
36: // no references, since PHP doesn't copy unless modified
37: static $instance = null;
38: if ($prototype) {
39: $instance = $prototype;
40: } elseif (!$instance) {
41: $instance = new HTMLPurifier_EntityLookup();
42: $instance->setup();
43: }
44: return $instance;
45: }
46: }
47:
48: // vim: et sw=4 sts=4
49: