diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index e041f89b9..2bf76bda4 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -8,12 +8,6 @@ */ class Context { - /** - * Allow rewrite - * @var bool TRUE: using rewrite mod, FALSE: otherwise - */ - public $allow_rewrite = FALSE; - /** * Request method * @var string GET|POST|XMLRPC|JSON @@ -246,15 +240,15 @@ class Context self::$_instance = self::getInstance(); } + // Load system configuration. + self::loadDBInfo(); + // Set information about the current request. self::_checkGlobalVars(); self::setRequestMethod(); - self::setRequestArguments(Rhymix\Framework\Router::getRequestArguments()); + self::setRequestArguments(Rhymix\Framework\Router::getRequestArguments(Rhymix\Framework\Router::getRewriteLevel())); self::setUploadInfo(); - // Load system configuration. - self::loadDBInfo(); - // If Rhymix is installed, get virtual site information. if(self::isInstalled()) { @@ -266,8 +260,7 @@ class Context define('RX_BASEURL', parse_url($default_url, PHP_URL_PATH)); } } - $oModuleModel = ModuleModel::getInstance(); - $site_module_info = $oModuleModel->getDefaultMid() ?: new stdClass; + $site_module_info = ModuleModel::getDefaultMid() ?: new stdClass; self::set('site_module_info', $site_module_info); self::set('_default_timezone', ($site_module_info->settings && $site_module_info->settings->timezone) ? $site_module_info->settings->timezone : null); self::set('_default_url', self::$_instance->db_info->default_url = self::getDefaultUrl($site_module_info)); @@ -380,8 +373,6 @@ class Context // set authentication information in Context and session if (self::isInstalled()) { - $oModuleModel->loadModuleExtends(); - if (Rhymix\Framework\Session::getMemberSrl()) { MemberController::getInstance()->setSessionInfo(); @@ -507,7 +498,6 @@ class Context // Copy to old format for backward compatibility. self::$_instance->db_info = self::convertDBInfo($config); - self::$_instance->allow_rewrite = self::$_instance->db_info->use_rewrite === 'Y'; } /** @@ -1621,6 +1611,12 @@ class Context { static $current_domain = null; static $site_module_info = null; + static $rewrite_level = null; + if ($rewrite_level === null) + { + $rewrite_level = Rhymix\Framework\Router::getRewriteLevel(); + } + if ($site_module_info === null) { $site_module_info = self::get('site_module_info'); @@ -1730,7 +1726,7 @@ class Context if(count($get_vars) > 0) { // if using rewrite mod - if(self::$_instance->allow_rewrite) + if($rewrite_level) { $var_keys = array_keys($get_vars); sort($var_keys); @@ -2615,11 +2611,11 @@ class Context /** * Check whether it is allowed to use rewrite mod * - * @return bool True if it is allowed to use rewrite mod, otherwise FALSE + * @return int The currently configured rewrite level */ public static function isAllowRewrite() { - return self::$_instance->allow_rewrite; + return Rhymix\Framework\Router::getRewriteLevel(); } /** diff --git a/common/framework/router.php b/common/framework/router.php index 39138332e..afd9b208e 100644 --- a/common/framework/router.php +++ b/common/framework/router.php @@ -44,9 +44,10 @@ class Router /** * Extract request arguments from the current URL. * + * @param int $rewrite_level * @return array */ - public static function getRequestArguments(): array + public static function getRequestArguments(int $rewrite_level): array { // Get the local part of the current URL. $url = $_SERVER['REQUEST_URI']; @@ -71,6 +72,17 @@ class Router return array(); } + // Try to detect the prefix. This might be $mid. + if ($rewrite_level > 0 && preg_match('#^([a-zA-Z0-9_-]+)#', $url, $matches)) + { + $prefix = $matches[1]; + $module_info = \ModuleModel::getModuleInfoByMid($prefix); + if ($module_info && $module_info->module) + { + // TODO + } + } + // Try XE-compatible rules. foreach (self::$_xe_compatible_rules as $regexp => $additional_args) { diff --git a/modules/module/module.model.php b/modules/module/module.model.php index c7c249dd4..c114622d7 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -211,7 +211,7 @@ class moduleModel extends module */ public static function getModuleInfoByMid($mid, $site_srl = 0, $columnList = array()) { - if(!$mid || ($mid && !preg_match("/^[a-z][a-z0-9_]+$/i", $mid))) + if(!$mid || ($mid && !preg_match("/^[a-z][a-z0-9_-]+$/i", $mid))) { return; }