X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FApp%2FBaseURL.php;h=9152d4bc2f5d3cfefc1c8a6b8e46b7234c38d31b;hb=3d5b81e4efda83c8b3621f15036dcfd960cf7e4e;hp=ea7d9ec74af351b0932025d77cd48073d6fc1c80;hpb=03038e7a3bb74bdab497d26b7f829a5c3036d1c2;p=friendica.git diff --git a/src/App/BaseURL.php b/src/App/BaseURL.php index ea7d9ec74a..9152d4bc2f 100644 --- a/src/App/BaseURL.php +++ b/src/App/BaseURL.php @@ -1,8 +1,27 @@ . + * + */ namespace Friendica\App; -use Friendica\Core\Config\IConfiguration; +use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\System; use Friendica\Util\Network; use Friendica\Util\Strings; @@ -37,7 +56,7 @@ class BaseURL /** * The Friendica Config * - * @var IConfiguration + * @var IManageConfigValues */ private $config; @@ -88,7 +107,7 @@ class BaseURL * * @return string */ - public function getHostname() + public function getHostname(): string { return $this->hostname; } @@ -98,7 +117,7 @@ class BaseURL * * @return string */ - public function getScheme() + public function getScheme(): string { return $this->scheme; } @@ -108,7 +127,7 @@ class BaseURL * * @return int */ - public function getSSLPolicy() + public function getSSLPolicy(): int { return $this->sslPolicy; } @@ -118,7 +137,7 @@ class BaseURL * * @return string */ - public function getUrlPath() + public function getUrlPath(): string { return $this->urlPath; } @@ -132,7 +151,7 @@ class BaseURL * * @return string */ - public function get($ssl = false) + public function get(bool $ssl = false): string { if ($this->sslPolicy === self::SSL_POLICY_SELFSIGN && $ssl) { return Network::switchScheme($this->url); @@ -149,8 +168,9 @@ class BaseURL * @param string? $urlPath * * @return bool true, if successful + * @TODO Find proper types */ - public function save($hostname = null, $sslPolicy = null, $urlPath = null) + public function save($hostname = null, $sslPolicy = null, $urlPath = null): bool { $currHostname = $this->hostname; $currSSLPolicy = $this->sslPolicy; @@ -205,15 +225,15 @@ class BaseURL /** * Save the current url as base URL * - * @param $url + * @param string $url * * @return bool true, if the save was successful */ - public function saveByURL($url) + public function saveByURL(string $url): bool { $parsed = @parse_url($url); - if (empty($parsed)) { + if (empty($parsed) || empty($parsed['host'])) { return false; } @@ -253,10 +273,10 @@ class BaseURL } /** - * @param IConfiguration $config The Friendica IConfiguration - * @param array $server The $_SERVER array + * @param IManageConfigValues $config The Friendica IConfiguration + * @param array $server The $_SERVER array */ - public function __construct(IConfiguration $config, array $server) + public function __construct(IManageConfigValues $config, array $server) { $this->config = $config; $this->server = $server; @@ -355,7 +375,7 @@ class BaseURL if (!empty($relative_script_path)) { // Module if (!empty($this->server['QUERY_STRING'])) { - $this->urlPath = trim(rdirname($relative_script_path, substr_count(trim($this->server['QUERY_STRING'], '/'), '/') + 1), '/'); + $this->urlPath = trim(dirname($relative_script_path, substr_count(trim($this->server['QUERY_STRING'], '/'), '/') + 1), '/'); } else { // Root page $this->urlPath = trim($relative_script_path, '/'); @@ -402,7 +422,7 @@ class BaseURL * * @return string The cleaned url */ - public function remove(string $origURL) + public function remove(string $origURL): string { // Remove the hostname from the url if it is an internal link $nurl = Strings::normaliseLink($origURL); @@ -424,9 +444,13 @@ class BaseURL * @param string $toUrl The destination URL (Default is empty, which is the default page of the Friendica node) * @param bool $ssl if true, base URL will try to get called with https:// (works just for relative paths) * + * @throws HTTPException\FoundException + * @throws HTTPException\MovedPermanentlyException + * @throws HTTPException\TemporaryRedirectException + * * @throws HTTPException\InternalServerErrorException In Case the given URL is not relative to the Friendica node */ - public function redirect($toUrl = '', $ssl = false) + public function redirect(string $toUrl = '', bool $ssl = false) { if (!empty(parse_url($toUrl, PHP_URL_SCHEME))) { throw new HTTPException\InternalServerErrorException("'$toUrl is not a relative path, please use System::externalRedirectTo"); @@ -435,4 +459,12 @@ class BaseURL $redirectTo = $this->get($ssl) . '/' . ltrim($toUrl, '/'); System::externalRedirect($redirectTo); } + + /** + * Returns the base url as string + */ + public function __toString(): string + { + return (string) $this->get(); + } }