1: <?php
2:
3: /**
4: * Definition cache decorator class that saves all cache retrievals
5: * to PHP's memory; good for unit tests or circumstances where
6: * there are lots of configuration objects floating around.
7: */
8: class HTMLPurifier_DefinitionCache_Decorator_Memory extends HTMLPurifier_DefinitionCache_Decorator
9: {
10: /**
11: * @type array
12: */
13: protected $definitions;
14:
15: /**
16: * @type string
17: */
18: public $name = 'Memory';
19:
20: /**
21: * @return HTMLPurifier_DefinitionCache_Decorator_Memory
22: */
23: public function copy()
24: {
25: return new HTMLPurifier_DefinitionCache_Decorator_Memory();
26: }
27:
28: /**
29: * @param HTMLPurifier_Definition $def
30: * @param HTMLPurifier_Config $config
31: * @return mixed
32: */
33: public function add($def, $config)
34: {
35: $status = parent::add($def, $config);
36: if ($status) {
37: $this->definitions[$this->generateKey($config)] = $def;
38: }
39: return $status;
40: }
41:
42: /**
43: * @param HTMLPurifier_Definition $def
44: * @param HTMLPurifier_Config $config
45: * @return mixed
46: */
47: public function set($def, $config)
48: {
49: $status = parent::set($def, $config);
50: if ($status) {
51: $this->definitions[$this->generateKey($config)] = $def;
52: }
53: return $status;
54: }
55:
56: /**
57: * @param HTMLPurifier_Definition $def
58: * @param HTMLPurifier_Config $config
59: * @return mixed
60: */
61: public function replace($def, $config)
62: {
63: $status = parent::replace($def, $config);
64: if ($status) {
65: $this->definitions[$this->generateKey($config)] = $def;
66: }
67: return $status;
68: }
69:
70: /**
71: * @param HTMLPurifier_Config $config
72: * @return mixed
73: */
74: public function get($config)
75: {
76: $key = $this->generateKey($config);
77: if (isset($this->definitions[$key])) {
78: return $this->definitions[$key];
79: }
80: $this->definitions[$key] = parent::get($config);
81: return $this->definitions[$key];
82: }
83: }
84:
85: // vim: et sw=4 sts=4
86: