| 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: |