8 if(!defined('XOOPS_ROOT_PATH'))
16 class Sd2nd_AssetManager
19 const HANDLER_ABILITY = 'Ability';
20 const HANDLER_ACTIVE_ABILITY = 'ActiveAbility';
21 const HANDLER_CHAR = 'Char';
22 const HANDLER_COSTUME = 'Costume';
23 const HANDLER_ENO_PNO_LINK = 'EnoPnoLink';
24 const HANDLER_ICON = 'Icon';
25 const HANDLER_IMAGE = 'Image';
26 const HANDLER_KIND = 'Kind';
27 const HANDLER_LEARNED_ABILITY = 'LearnedAbility';
28 const HANDLER_LEARNED_COSTUME = 'LearnedCostume';
29 const HANDLER_LEARNED_SKILL = 'LearnedSkill';
30 const HANDLER_MAP = 'Map';
31 const HANDLER_MAP_CACHE = 'MapCache';
32 const HANDLER_MAP_NAME = 'MapName';
33 const HANDLER_MAP_SPOT = 'MapSpot';
34 const HANDLER_RACE = 'Race';
35 const HANDLER_SKILL = 'Skill';
36 const HANDLER_SKILL_ELEMENT_LINK = 'SkillElementLink';
37 const HANDLER_STATUS = 'Status';
38 const HANDLER_TARGET = 'Target';
39 const HANDLER_UPDATE = 'Update';
42 public /*** string ***/ $mDirname = '';
43 public /*** string ***/ $mTrustDirname = 'sd2nd';
44 public /*** string[][][] ***/ $mAssetList = array();
45 private /*** object[][] ***/ $_mCache = array();
50 * @param string $dirname
54 public function __construct(/*** string ***/ $dirname)
56 $this->mDirname = $dirname;
62 * @param string $dirname
64 * @return Sd2nd_AssetManager
66 public function &getInstance(/*** string ***/ $dirname)
69 * @var Sd2nd_AssetManager[]
71 static $instance = array();
73 if(!isset($instance[$dirname]))
75 $instance[$dirname] = new Sd2nd_AssetManager($dirname);
78 return $instance[$dirname];
86 * @param bool $isAdmin
89 * @return &object<XCube_ActionFilter,XCube_ActionForm,XoopsObjectGenericHandler>
91 public function &getObject(/*** string ***/ $type,/*** string ***/ $name,/*** bool ***/ $isAdmin = false,/*** string ***/ $mode = null)
93 if(isset($this->_mCache[$type][$name]))
95 return $this->_mCache[$type][$name];
100 $methodName = 'create' . ucfirst($name) . ucfirst($mode) . ucfirst($type);
101 if(method_exists($this,$methodName))
103 $instance =& $this->$methodName();
106 if($instance === null)
108 $instance =& $this->_fallbackCreate($type,$name,$isAdmin,$mode);
111 $this->_mCache[$type][$name] =& $instance;
119 * @param string $role
123 public function getRoleName(/*** string ***/ $role)
125 return 'Module.' . $this->mDirname . '.' . $role;
131 * @param string $type
132 * @param string $name
133 * @param bool $isAdmin
134 * @param string $mode
136 * @return &object<XCube_ActionFilter,XCube_ActionForm,XoopsObjectGenericHandler>
138 private function &_fallbackCreate(/*** string ***/ $type,/*** string ***/ $name,/*** bool ***/ $isAdmin = false,/*** string ***/ $mode = null)
143 if(isset($this->mAssetList[$type][$name]['class']))
145 $asset = $this->mAssetList[$type][$name];
146 if(isset($asset['absPath']) && $this->_loadClassFile($asset['absPath'],$asset['class']))
148 $className = $asset['class'];
151 if($className == null && isset($asset['path']))
153 if($this->_loadClassFile($this->_getPublicPath() . $asset['path'],$asset['class']))
155 $className = $asset['class'];
158 if($className == null && $this->_loadClassFile($this->_getTrustPath() . $asset['path'],$asset['class']))
160 $className = $asset['class'];
165 if($className == null)
170 $className = $this->_getFilterName($name,$isAdmin);
173 $className = $this->_getActionFormName($name,$isAdmin,$mode);
176 $className = $this->_getHandlerName($name);
183 if($type == 'handler')
185 $root =& XCube_Root::getSingleton();
186 $instance =& new $className($root->mController->getDB(),$this->mDirname);
190 $instance =& new $className();
198 * @param string $name
199 * @param bool $isAdmin
203 private function _getFilterName(/*** string ***/ $name,/*** bool ***/ $isAdmin = false)
205 $name = ucfirst($name) . 'FilterForm';
206 $path = 'forms/' . $name . '.class.php';
207 $className = ucfirst($this->mTrustDirname) . ($isAdmin ? '_Admin_' : '_') . $name;
209 $this->_loadClassFile($this->_getPublicPath($isAdmin) . $path,$className) ||
210 $this->_loadClassFile($this->_getTrustPath($isAdmin) . $path,$className)
211 ) ? $className : null;
217 * @param string $name
218 * @param bool $isAdmin
219 * @param string $mode
223 private function _getActionFormName(/*** string ***/ $name,/*** bool ***/ $isAdmin = false,/*** string ***/ $mode = null)
225 $name = ucfirst($name) . ucfirst($mode) . 'Form';
226 $path = 'forms/' . $name . '.class.php';
227 $className = ucfirst($this->mTrustDirname) . ($isAdmin ? '_Admin_' : '_') . $name;
229 $this->_loadClassFile($this->_getPublicPath($isAdmin) . $path,$className) ||
230 $this->_loadClassFile($this->_getTrustPath($isAdmin) . $path,$className)
231 ) ? $className : null;
237 * @param string $name
241 private function _getHandlerName(/*** string ***/ $name)
243 $path = 'class/handler/' . ucfirst($name) . '.class.php';
244 $className = ucfirst($this->mTrustDirname) . '_' . ucfirst($name) . 'Handler';
246 $this->_loadClassFile($this->_getPublicPath() . $path,$className) ||
247 $this->_loadClassFile($this->_getTrustPath() . $path,$className)
248 ) ? $className : null;
254 * @param string $path
255 * @param string $class
259 private function _loadClassFile(/*** string ***/ $path,/*** string ***/ $class)
261 if(!file_exists($path))
267 return class_exists($class);
273 * @param bool $isAdmin
277 private function _getPublicPath(/*** bool ***/ $isAdmin = false)
279 return XOOPS_MODULE_PATH . '/' . $this->mDirname . ($isAdmin ? '/admin/' : '/');
285 * @param bool $isAdmin
289 private function _getTrustPath(/*** bool ***/ $isAdmin = false)
291 return SD2ND_TRUST_PATH . ($isAdmin ? '/admin/' : '/');