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 );
}
}
|