Merge pull request #2717 from Nicofuma/ticket/12836

[ticket/12836] Add event core.functions.redirect

* Nicofuma/ticket/12836:
  [ticket/12836] Add event core.functions.redirect
This commit is contained in:
Joas Schilling 2014-08-07 11:47:37 +02:00
commit a8cb525f77

View file

@ -2210,7 +2210,7 @@ function generate_board_url($without_script_path = false)
*/ */
function redirect($url, $return = false, $disable_cd_check = false) function redirect($url, $return = false, $disable_cd_check = false)
{ {
global $db, $cache, $config, $user, $phpbb_root_path, $phpbb_filesystem, $phpbb_path_helper, $phpEx; global $db, $cache, $config, $user, $phpbb_root_path, $phpbb_filesystem, $phpbb_path_helper, $phpEx, $phpbb_dispatcher;
$failover_flag = false; $failover_flag = false;
@ -2219,11 +2219,6 @@ function redirect($url, $return = false, $disable_cd_check = false)
$user->add_lang('common'); $user->add_lang('common');
} }
if (!$return)
{
garbage_collection();
}
// Make sure no &'s are in, this will break the redirect // Make sure no &'s are in, this will break the redirect
$url = str_replace('&', '&', $url); $url = str_replace('&', '&', $url);
@ -2298,10 +2293,26 @@ function redirect($url, $return = false, $disable_cd_check = false)
trigger_error('INSECURE_REDIRECT', E_USER_ERROR); trigger_error('INSECURE_REDIRECT', E_USER_ERROR);
} }
/**
* Execute code and/or overwrite redirect()
*
* @event core.functions.redirect
* @var string url The url
* @var bool return If true, do not redirect but return the sanitized URL.
* @var bool disable_cd_check If true, redirect() will redirect to an external domain. If false, the redirect point to the boards url if it does not match the current domain.
* @since 3.1.0-RC3
*/
$vars = array('url', 'return', 'disable_cd_check');
extract($phpbb_dispatcher->trigger_event('core.functions.redirect', compact($vars)));
if ($return) if ($return)
{ {
return $url; return $url;
} }
else
{
garbage_collection();
}
// Redirect via an HTML form for PITA webservers // Redirect via an HTML form for PITA webservers
if (@preg_match('#Microsoft|WebSTAR|Xitami#', getenv('SERVER_SOFTWARE'))) if (@preg_match('#Microsoft|WebSTAR|Xitami#', getenv('SERVER_SOFTWARE')))