26 public static function checkSystemModules()
28 $root=&XCube_Root::getSingleton();
29 $systemModules = array_map(
'trim', explode(
',', $root->getSiteConfig(
'Cube',
'SystemModules')));
30 $recommendedModules = array_map(
'trim', explode(
',', $root->getSiteConfig(
'Cube',
'RecommendedModules')));
31 $moduleHandler =& xoops_gethandler(
'module');
32 $uninstalledModules = [];
33 $disabledModules = [];
34 foreach ($systemModules as $systemModule) {
35 if (!empty($systemModule)) {
36 if (!($moduleObject =& $moduleHandler->getByDirname($systemModule))) {
37 $uninstalledModules[] = $systemModule;
38 } elseif (!$moduleObject->get(
'isactive')) {
39 $disabledModules[] = $systemModule;
43 if (0 == count($uninstalledModules) && 0 == count($disabledModules)) {
46 return [
'uninstalled' =>$uninstalledModules,
'disabled' =>$disabledModules,
'recommended' =>$recommendedModules];
57 public static function &createModule(
XoopsModule $module,
bool $loadConfig=
true)
64 XCube_DelegateUtils::call(
'Legacy_Utils.CreateModule',
new XCube_Ref($instance), $module, $loadConfig);
70 $dirname = $module->get(
'dirname');
75 $className = ucfirst($dirname) .
'_Module';
76 if (!XC_CLASS_EXISTS($className)) {
77 $filePath = XOOPS_ROOT_PATH .
"/modules/{$dirname}/class/Module.class.php";
78 if (file_exists($filePath)) {
79 require_once $filePath;
83 if (XC_CLASS_EXISTS($className)) {
84 $instance =
new $className($module, $loadConfig);
99 public static function &createBlockProcedure(&$block)
109 XCube_DelegateUtils::call(
'Legacy_Utils.CreateBlockProcedure',
new XCube_Ref($retBlock), $block);
115 $func = $block->get(
'show_func');
116 if (
'cl::' == substr($func, 0, 4)) {
117 $className = ucfirst($block->get(
'dirname')) .
'_' . substr($func, 4);
118 if (!XC_CLASS_EXISTS($className)) {
119 $filePath = XOOPS_ROOT_PATH .
'/modules/' . $block->get(
'dirname') .
'/blocks/' . $block->get(
'func_file');
120 if (!file_exists($filePath)) {
125 require_once $filePath;
127 if (!XC_CLASS_EXISTS($className)) {
133 $retBlock =
new $className($block);
144 public static function raiseUserControlEvent()
146 $root =& XCube_Root::getSingleton();
147 foreach (array_keys($_REQUEST) as $key) {
148 if (0 === strpos($key,
'Legacy_Event_User_')) {
149 $eventName = substr($key, 18);
150 XCube_DelegateUtils::call(
'Legacy.Event.User.' . $eventName);
151 $root->mContext->mAttributes[
'userEvent'][$eventName] =
true;
162 public static function convertVersionFromModinfoToInt($version)
164 return round(100 * (
float)$version);
172 public static function convertVersionIntToFloat($version)
174 return round((
float)( (
int) $version / 100), 2);
186 $root = XCube_Root::getSingleton();
187 return ($root->mContext->mUser->isInRole(
'Site.RegisteredUser')) ? $root->mContext->mXoopsUser->get(
'uid') : 0;
200 XCube_DelegateUtils::call(
'Legacy_User.GetUserName',
new XCube_Ref($name), $uid);
202 $handler =& xoops_gethandler(
'member');
203 $user =& $handler->getUser((
int)$uid);
205 $name = $user->getShow(
'uname');
222 $cri->add(
new Criteria(
'isactive', 0,
'>'));
223 $cri->add(
new Criteria(
'trust_dirname', $trustDirname));
224 $cri->addSort(
'weight',
'ASC');
225 $cri->addSort(
'mid',
'ASC');
226 foreach (xoops_gethandler(
'module')->getObjects($cri) as $module) {
227 $list[] = $module->get(
'dirname');
241 $handler =& xoops_gethandler(
'module');
242 $module =& $handler->getByDirname($dirname);
244 return $module->get(
'trust_dirname') ?:
null;
259 $handler = xoops_gethandler(
'config');
260 $configArr = $handler->getConfigsByDirname(
'legacyRender');
262 $replace = [$modulename, $pagetitle, $action];
263 $search = [
'{modulename}',
'{pagetitle}',
'{action}'];
264 $ret = str_replace($search, $replace, $configArr[
'pagetitle']);
266 $ret = (! $modulename) ? preg_replace(
"/\[modulename\](.*)\[\/modulename\]/U",
'', $ret) : preg_replace(
"/\[modulename\](.*)\[\/modulename\]/U",
'$1', $ret);
267 $ret = (! $pagetitle) ? preg_replace(
"/\[pagetitle\](.*)\[\/pagetitle\]/U",
'', $ret) : preg_replace(
"/\[pagetitle\](.*)\[\/pagetitle\]/U",
'$1', $ret);
268 $ret = (! $action) ? preg_replace(
"/\[action\](.*)\[\/action\]/U",
'', $ret) : preg_replace(
"/\[action\](.*)\[\/action\]/U",
'$1', $ret);
284 if (isset($trustDirname)) {
285 $path = XOOPS_TRUST_PATH.
'/modules/'. $trustDirname .
'/class/handler/' . ucfirst($name) .
'.class.php';
286 $className = ucfirst($trustDirname) .
'_' . ucfirst($name) .
'Handler';
287 self::_loadClassFile($path, $className);
289 $root =& XCube_Root::getSingleton();
290 $instance =
new $className($root->mController->getDB(), $dirname);
293 return xoops_getmodulehandler($name, $dirname);
308 public static function renderUri( $dirname, $dataname=
null, $data_id=0, $action=
null, $query=
null)
311 if (
true == XCube_Root::getSingleton()->mContext->getXoopsConfig(
'cool_uri')) {
312 if (isset($dataname)) {
314 if (isset($action)) {
315 $uri = sprintf(
'/%s/%s/%d/%s', $dirname, $dataname, $data_id, $action);
317 $uri = sprintf(
'/%s/%s/%d', $dirname, $dataname, $data_id);
320 if (isset($action)) {
321 $uri = sprintf(
'/%s/%s/%s', $dirname, $dataname, $action);
323 $uri = sprintf(
'/%s/%s', $dirname, $dataname);
328 if (isset($action)) {
331 $uri = sprintf(
'/%s/%d', $dirname, $data_id);
334 if (isset($action)) {
341 $uri = (isset($query)) ? XOOPS_URL.$uri.
'?'.$query : XOOPS_URL. $uri;
343 XCube_DelegateUtils::call(
'Module.'.$dirname.
'.Global.Event.GetNormalUri',
new XCube_Ref($uri), $dirname, $dataname, $data_id, $action, $query);
345 $uri = XOOPS_MODULE_URL. $uri;
362 $cri->add(
new Criteria(
'isactive', 0,
'>'));
363 $cri->add(
new Criteria(
'role', $role));
364 $cri->addSort(
'weight',
'ASC');
365 $cri->addSort(
'mid',
'ASC');
366 foreach (xoops_gethandler(
'module')->getObjects($cri) as $module) {
367 $list[] = $module->get(
'dirname');
380 private static function _loadClassFile( $path, $class)
382 if (!file_exists($path)) {
387 return class_exists($class);