public
static
function
module(
$result
,
$config
,
$convert
= null) {
if
(
is_string
(
$result
)) {
$result
=
explode
('/',
$result
);
}
$request
= Request::instance();
if
(
$config
['app_multi_module']) {
$module
=
strip_tags
(
strtolower
(
$result
[0] ?:
$config
['default_module']));
$bind
= Route::getBind('module');
$available
= false;
if
(
$bind
) {
list(
$bindModule
) =
explode
('/',
$bind
);
if
(
empty
(
$result
[0])) {
$module
=
$bindModule
;
$available
= true;
}
elseif
(
$module
==
$bindModule
) {
$available
= true;
}
}
elseif
(!in_array(
$module
,
$config
['deny_module_list']) &&
is_dir
(APP_PATH .
$module
)) {
$available
= true;
}
if
(isset(
$config
['allow_module_ip']) && isset(
$config
['allow_module_ip'][
$module
])) {
$allowIps
=
$config
['allow_module_ip'][
$module
];
if
(!in_array(
$_SERVER
['REMOTE_ADDR'],
$allowIps
) &&
$allowIps
!= '*') {
$available
= false;
}
}
if
(
$module
&&
$available
) {
$request
->module(
$module
);
$config
= self::init(
$module
);
$request
->cache(
$config
['request_cache'],
$config
['request_cache_expire'],
$config
['request_cache_except']);
}
else
{
throw
new
HttpException(404, 'module not exists:' .
$module
);
}
}
else
{
$module
= '';
$request
->module(
$module
);
}
}