Flash feautures dosn't work when you use
redirect_to() because flash_sweep() isn't
called before redirecting. We need to exit properly application
before redirecting.
stop_and_exit() will be called but without exiting,
by patching it with an $exit optionnal parameter
/**
* Stop and exit limonade application
*
* @access private
* @param boolean exit or not
* @return void
*/
function stop_and_exit($exit = true)
{
call_if_exists('before_exit');
flash_sweep();
if(defined('SID')) session_write_close();
if($exit) exit;
}
Then we'll call it in the redirect_to:
/**
* Http redirection
*
* @param string $params,...
* @return void
*/
function redirect_to($params)
{
# [NOTE]: (from php.net) HTTP/1.1 requires an absolute URI as argument to » Location:
# including the scheme, hostname and absolute path, but some clients accept
# relative URIs. You can usually use $_SERVER['HTTP_HOST'],
# $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative
# one yourself.
# TODO make absolute uri
if(!headers_sent())
{
$uri = call_user_func_array('url_for', $params);
stop_and_exit(false);
header('Location: '.$uri);
exit;
}
}