From 6151886860e9073e7d2240b1ecd90334e80228a8 Mon Sep 17 00:00:00 2001 From: Phill Sparks Date: Wed, 30 May 2012 13:14:16 +0100 Subject: [PATCH] Generated URLs default to use the current protocol (http or https) Signed-off-by: Phill Sparks --- laravel/form.php | 4 ++-- laravel/helpers.php | 4 ++-- laravel/html.php | 2 +- laravel/redirect.php | 4 ++-- laravel/routing/router.php | 2 +- laravel/url.php | 17 ++++++++--------- 6 files changed, 16 insertions(+), 17 deletions(-) diff --git a/laravel/form.php b/laravel/form.php index 619043ef..94d80326 100644 --- a/laravel/form.php +++ b/laravel/form.php @@ -51,7 +51,7 @@ public static function macro($name, $macro) * @param bool $https * @return string */ - public static function open($action = null, $method = 'POST', $attributes = array(), $https = false) + public static function open($action = null, $method = 'POST', $attributes = array(), $https = null) { $method = strtoupper($method); @@ -129,7 +129,7 @@ public static function open_secure($action = null, $method = 'POST', $attributes * @param bool $https * @return string */ - public static function open_for_files($action = null, $method = 'POST', $attributes = array(), $https = false) + public static function open_for_files($action = null, $method = 'POST', $attributes = array(), $https = null) { $attributes['enctype'] = 'multipart/form-data'; diff --git a/laravel/helpers.php b/laravel/helpers.php index db5ff436..07f9940a 100644 --- a/laravel/helpers.php +++ b/laravel/helpers.php @@ -323,7 +323,7 @@ function head($array) * @param bool $https * @return string */ -function url($url = '', $https = false) +function url($url = '', $https = null) { return Laravel\URL::to($url, $https); } @@ -335,7 +335,7 @@ function url($url = '', $https = false) * @param bool $https * @return string */ -function asset($url, $https = false) +function asset($url, $https = null) { return Laravel\URL::to_asset($url, $https); } diff --git a/laravel/html.php b/laravel/html.php index b6cd3eeb..be8ad391 100644 --- a/laravel/html.php +++ b/laravel/html.php @@ -124,7 +124,7 @@ public static function span($value, $attributes = array()) * @param bool $https * @return string */ - public static function link($url, $title, $attributes = array(), $https = false) + public static function link($url, $title, $attributes = array(), $https = null) { $url = URL::to($url, $https); diff --git a/laravel/redirect.php b/laravel/redirect.php index 2678f445..2f75db53 100644 --- a/laravel/redirect.php +++ b/laravel/redirect.php @@ -9,7 +9,7 @@ class Redirect extends Response { * @param bool $secure * @return Redirect */ - public static function home($status = 302, $https = false) + public static function home($status = 302, $https = null) { return static::to(URL::home($https), $status); } @@ -41,7 +41,7 @@ public static function back($status = 302) * @param bool $https * @return Redirect */ - public static function to($url, $status = 302, $https = false) + public static function to($url, $status = 302, $https = null) { return static::make('', $status)->header('Location', URL::to($url, $https)); } diff --git a/laravel/routing/router.php b/laravel/routing/router.php index 9fc946b0..7c4888a2 100644 --- a/laravel/routing/router.php +++ b/laravel/routing/router.php @@ -297,7 +297,7 @@ public static function secure_controller($controllers, $defaults = 'index') * @param bool $https * @return void */ - public static function controller($controllers, $defaults = 'index', $https = false) + public static function controller($controllers, $defaults = 'index', $https = null) { foreach ((array) $controllers as $identifier) { diff --git a/laravel/url.php b/laravel/url.php index 59c4f9c5..44b89428 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -35,7 +35,7 @@ public static function current() * @param bool $https * @return string */ - public static function home($https = false) + public static function home($https = null) { $route = Router::find('home'); @@ -91,7 +91,7 @@ public static function base() * @param bool $https * @return string */ - public static function to($url = '', $https = false) + public static function to($url = '', $https = null) { // If the given URL is already valid or begins with a hash, we'll just return // the URL unchanged since it is already well formed. Otherwise we will add @@ -101,6 +101,10 @@ public static function to($url = '', $https = false) return $url; } + // Unless $https is specified (true or false) then maintain the current request + // security for any new links generated. So https for all secure links. + if (is_null($https)) $https = Request::secure(); + $root = static::base().'/'.Config::get('application.index'); // Since SSL is not often used while developing the application, we allow the @@ -174,7 +178,7 @@ public static function to_action($action, $parameters = array()) */ protected static function explicit($route, $action, $parameters) { - $https = array_get(current($route), 'https', false); + $https = array_get(current($route), 'https', null); return static::to(static::transpose(key($route), $parameters), $https); } @@ -197,8 +201,6 @@ protected static function convention($action, $parameters) // URIs that begin with that string and no others. $root = $bundle['handles'] ?: ''; - $https = false; - $parameters = implode('/', $parameters); // We'll replace both dots and @ signs in the URI since both are used @@ -230,8 +232,6 @@ public static function to_asset($url, $https = null) return rtrim($root, '/').'/'.ltrim($url, '/'); } - if (is_null($https)) $https = Request::secure(); - $url = static::to($url, $https); // Since assets are not served by Laravel, we do not need to come through @@ -258,7 +258,6 @@ public static function to_asset($url, $https = null) * * @param string $name * @param array $parameters - * @param bool $https * @return string */ public static function to_route($name, $parameters = array()) @@ -271,7 +270,7 @@ public static function to_route($name, $parameters = array()) // To determine whether the URL should be HTTPS or not, we look for the "https" // value on the route action array. The route has control over whether the URL // should be generated with an HTTPS protocol string or just HTTP. - $https = array_get(current($route), 'https', false); + $https = array_get(current($route), 'https', null); $uri = trim(static::transpose(key($route), $parameters), '/');