1: | <?php |
2: | /** |
3: | * XOOPS Kernel Class |
4: | * |
5: | * You may not change or alter any portion of this comment or credits |
6: | * of supporting developers from this source code or any supporting source code |
7: | * which is considered copyrighted (c) material of the original comment or credit authors. |
8: | * This program is distributed in the hope that it will be useful, |
9: | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
10: | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
11: | * |
12: | * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org) |
13: | * @license GNU GPL 2 (https://www.gnu.org/licenses/gpl-2.0.html) |
14: | * @package kernel |
15: | * @since 2.0.0 |
16: | * @author Kazumi Ono (AKA onokazu) http://www.myweb.ne.jp/, http://jp.xoops.org/ |
17: | */ |
18: | defined('XOOPS_ROOT_PATH') || exit('Restricted access'); |
19: | |
20: | /** |
21: | * A registry for holding references to {@link XoopsObjectHandler} classes |
22: | * |
23: | * @package kernel |
24: | * |
25: | * @author Kazumi Ono <onokazu@xoops.org> |
26: | * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org) |
27: | */ |
28: | class XoopsHandlerRegistry |
29: | { |
30: | /** |
31: | * holds references to handler class objects |
32: | * |
33: | * @var array |
34: | * @access private |
35: | */ |
36: | public $_handlers = array(); |
37: | |
38: | /** |
39: | * get a reference to the only instance of this class |
40: | * |
41: | * if the class has not been instantiated yet, this will also take |
42: | * care of that |
43: | * |
44: | * @static |
45: | * @staticvar object The only instance of this class |
46: | * @return XoopsHandlerRegistry Reference to the only instance of this class |
47: | */ |
48: | public function instance() |
49: | { |
50: | static $instance; |
51: | if (!isset($instance)) { |
52: | $instance = new XoopsHandlerRegistry(); |
53: | } |
54: | |
55: | return $instance; |
56: | } |
57: | |
58: | /** |
59: | * Register a handler class object |
60: | * |
61: | * @param string $name Short name of a handler class |
62: | * @param XoopsObjectHandler &$handler {@link XoopsObjectHandler} class object |
63: | */ |
64: | public function setHandler($name, XoopsObjectHandler $handler) |
65: | { |
66: | $this->_handlers['kernel'][$name] =& $handler; |
67: | } |
68: | |
69: | /** |
70: | * Get a registered handler class object |
71: | * |
72: | * @param string $name Short name of a handler class |
73: | * |
74: | * @return XoopsObjectHandler|false {@link XoopsObjectHandler}, FALSE if not registered |
75: | */ |
76: | public function getHandler($name) |
77: | { |
78: | if (!isset($this->_handlers['kernel'][$name])) { |
79: | return false; |
80: | } |
81: | |
82: | return $this->_handlers['kernel'][$name]; |
83: | } |
84: | |
85: | /** |
86: | * Unregister a handler class object |
87: | * |
88: | * @param string $name Short name of a handler class |
89: | */ |
90: | public function unsetHandler($name) |
91: | { |
92: | unset($this->_handlers['kernel'][$name]); |
93: | } |
94: | |
95: | /** |
96: | * Register a handler class object for a module |
97: | * |
98: | * @param string $module Directory name of a module |
99: | * @param string $name Short name of a handler class |
100: | * @param XoopsObjectHandler &$handler {@link XoopsObjectHandler} class object |
101: | */ |
102: | public function setModuleHandler($module, $name, XoopsObjectHandler $handler) |
103: | { |
104: | $this->_handlers['module'][$module][$name] =& $handler; |
105: | } |
106: | |
107: | /** |
108: | * Get a registered handler class object for a module |
109: | * |
110: | * @param string $module Directory name of a module |
111: | * @param string $name Short name of a handler class |
112: | * |
113: | * @return XoopsObjectHandler|false {@link XoopsObjectHandler}, FALSE if not registered |
114: | */ |
115: | public function getModuleHandler($module, $name) |
116: | { |
117: | if (!isset($this->_handlers['module'][$module][$name])) { |
118: | return false; |
119: | } |
120: | |
121: | return $this->_handlers['module'][$module][$name]; |
122: | } |
123: | |
124: | /** |
125: | * Unregister a handler class object for a module |
126: | * |
127: | * @param string $module Directory name of a module |
128: | * @param string $name Short name of a handler class |
129: | */ |
130: | public function unsetModuleHandler($module, $name) |
131: | { |
132: | unset($this->_handlers['module'][$module][$name]); |
133: | } |
134: | } |
135: |