Index: branches/5.2.x/core/kernel/managers/rewrite_url_processor.php =================================================================== diff -u -N -r15520 -r15544 --- branches/5.2.x/core/kernel/managers/rewrite_url_processor.php (.../rewrite_url_processor.php) (revision 15520) +++ branches/5.2.x/core/kernel/managers/rewrite_url_processor.php (.../rewrite_url_processor.php) (revision 15544) @@ -1,6 +1,6 @@ Array ('m')); + $vars = Array (); $url_components = parse_url($string); if ( isset($url_components['query']) ) { - parse_str($url_components['query'], $url_params); + parse_str(html_entity_decode($url_components['query']), $url_params); + + if ( isset($url_params[ENV_VAR_NAME]) ) { + $url_params = array_merge($url_params, $this->manager->plain->parse($url_params[ENV_VAR_NAME], $pass_name)); + unset($url_params[ENV_VAR_NAME]); + } + $vars = array_merge($vars, $url_params); } + $this->_fixPass($vars, $pass_name); + if ( isset($url_components['path']) ) { if ( BASE_PATH ) { $string = preg_replace('/^' . preg_quote(BASE_PATH, '/') . '/', '', $url_components['path'], 1); @@ -433,6 +441,24 @@ } /** + * Ensures, that "m" is always in "pass" variable + * + * @param Array $vars + * @param string $pass_name + * @return void + * @access protected + */ + protected function _fixPass(&$vars, $pass_name) + { + if ( isset($vars[$pass_name]) ) { + $vars[$pass_name] = array_unique(explode(',', 'm,' . $vars[$pass_name])); + } + else { + $vars[$pass_name] = Array ('m'); + } + } + + /** * Initializes theme & language based on parse results * * @return void