101 lines
2.5 KiB
PHP
101 lines
2.5 KiB
PHP
<?php
|
|
/*!
|
|
* Hybridauth
|
|
* https://hybridauth.github.io | https://github.com/hybridauth/hybridauth
|
|
* (c) 2017 Hybridauth authors | https://hybridauth.github.io/license.html
|
|
*/
|
|
|
|
namespace Hybridauth\HttpClient;
|
|
|
|
use Hybridauth\Data;
|
|
|
|
/**
|
|
* HttpClient\Util home to a number of utility functions.
|
|
*/
|
|
class Util
|
|
{
|
|
/**
|
|
* Redirect handler.
|
|
*
|
|
* @var callable|null
|
|
*/
|
|
protected static $redirectHandler;
|
|
|
|
/**
|
|
* Exit handler.
|
|
*
|
|
* @var callable|null
|
|
*/
|
|
protected static $exitHandler;
|
|
|
|
/**
|
|
* Redirect to a given URL.
|
|
*
|
|
* In case your application need to perform certain required actions before Hybridauth redirect users
|
|
* to IDPs websites, the default behaviour can be altered in one of two ways:
|
|
* If callable $redirectHandler is defined, it will be called instead.
|
|
* If callable $exitHandler is defined, it will be called instead of exit().
|
|
*
|
|
* @param string $url
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function redirect($url)
|
|
{
|
|
if (static::$redirectHandler) {
|
|
return call_user_func(static::$redirectHandler, $url);
|
|
}
|
|
|
|
header(sprintf('Location: %s', $url));
|
|
|
|
if (static::$exitHandler) {
|
|
return call_user_func(static::$exitHandler);
|
|
}
|
|
|
|
exit(1);
|
|
}
|
|
|
|
/**
|
|
* Redirect handler to which the regular redirect() will yield the action of redirecting users.
|
|
*
|
|
* @param callable $callback
|
|
*/
|
|
public static function setRedirectHandler($callback)
|
|
{
|
|
self::$redirectHandler = $callback;
|
|
}
|
|
|
|
/**
|
|
* Exit handler will be called instead of regular exit() when calling Util::redirect() method.
|
|
*
|
|
* @param callable $callback
|
|
*/
|
|
public static function setExitHandler($callback)
|
|
{
|
|
self::$exitHandler = $callback;
|
|
}
|
|
|
|
/**
|
|
* Returns the Current URL.
|
|
*
|
|
* @param bool $requestUri TRUE to use $_SERVER['REQUEST_URI'], FALSE for $_SERVER['PHP_SELF']
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function getCurrentUrl($requestUri = false)
|
|
{
|
|
$collection = new Data\Collection($_SERVER);
|
|
|
|
$protocol = 'http://';
|
|
|
|
if (($collection->get('HTTPS') && $collection->get('HTTPS') !== 'off') ||
|
|
$collection->get('HTTP_X_FORWARDED_PROTO') === 'https') {
|
|
$protocol = 'https://';
|
|
}
|
|
|
|
return $protocol .
|
|
$collection->get('HTTP_HOST') .
|
|
$collection->get($requestUri ? 'REQUEST_URI' : 'PHP_SELF');
|
|
}
|
|
}
|