From 9ea57e6329da9abcd3df482e8904ac790fb9086e Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 21 Aug 2020 18:21:33 +0200 Subject: [PATCH] Use Config class for data from config.php --- src/Foundation/Application.php | 16 +++++----------- src/Foundation/InstalledApp.php | 13 ++++--------- src/Foundation/InstalledSite.php | 7 ++++--- src/Foundation/Site.php | 16 ++++++++-------- src/Foundation/UninstalledSite.php | 13 ++++++++++--- tests/integration/TestCase.php | 3 ++- 6 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/Foundation/Application.php b/src/Foundation/Application.php index 7463b2f50..ffc350256 100644 --- a/src/Foundation/Application.php +++ b/src/Foundation/Application.php @@ -95,7 +95,9 @@ class Application */ public function config($key, $default = null) { - return Arr::get($this->container->make('flarum.config'), $key, $default); + $config = $this->container->make('flarum.config'); + + return $config[$key] ?? $default; } /** @@ -117,18 +119,10 @@ class Application public function url($path = null) { $config = $this->container->make('flarum.config'); - $url = Arr::get($config, 'url', Arr::get($_SERVER, 'REQUEST_URI')); - - if (is_array($url)) { - if (isset($url[$path])) { - return $url[$path]; - } - - $url = $url['base']; - } + $url = (string) $config->url(); if ($path) { - $url .= '/'.Arr::get($config, "paths.$path", $path); + $url .= '/'.($config["paths.$path"] ?? $path); } return $url; diff --git a/src/Foundation/InstalledApp.php b/src/Foundation/InstalledApp.php index f2a024235..705156292 100644 --- a/src/Foundation/InstalledApp.php +++ b/src/Foundation/InstalledApp.php @@ -27,11 +27,11 @@ class InstalledApp implements AppInterface protected $container; /** - * @var array + * @var Config */ protected $config; - public function __construct(Container $container, array $config) + public function __construct(Container $container, Config $config) { $this->container = $container; $this->config = $config; @@ -47,7 +47,7 @@ class InstalledApp implements AppInterface */ public function getRequestHandler() { - if ($this->inMaintenanceMode()) { + if ($this->config->inMaintenanceMode()) { return new MaintenanceModeHandler(); } elseif ($this->needsUpdate()) { return $this->getUpdaterHandler(); @@ -69,11 +69,6 @@ class InstalledApp implements AppInterface return $pipe; } - protected function inMaintenanceMode(): bool - { - return $this->config['offline'] ?? false; - } - protected function needsUpdate(): bool { $settings = $this->container->make(SettingsRepositoryInterface::class); @@ -98,7 +93,7 @@ class InstalledApp implements AppInterface protected function basePath(): string { - return parse_url($this->config['url'], PHP_URL_PATH) ?: '/'; + return $this->config->url()->getPath() ?: '/'; } protected function subPath($pathName): string diff --git a/src/Foundation/InstalledSite.php b/src/Foundation/InstalledSite.php index 4f9fbb265..8e944e827 100644 --- a/src/Foundation/InstalledSite.php +++ b/src/Foundation/InstalledSite.php @@ -55,7 +55,7 @@ class InstalledSite implements SiteInterface protected $paths; /** - * @var array + * @var Config */ protected $config; @@ -64,7 +64,7 @@ class InstalledSite implements SiteInterface */ protected $extenders = []; - public function __construct(Paths $paths, array $config) + public function __construct(Paths $paths, Config $config) { $this->paths = $paths; $this->config = $config; @@ -101,7 +101,8 @@ class InstalledSite implements SiteInterface $container->instance('env', 'production'); $container->instance('flarum.config', $this->config); - $container->instance('flarum.debug', $laravel->inDebugMode()); + $container->alias('flarum.config', Config::class); + $container->instance('flarum.debug', $this->config->inDebugMode()); $container->instance('config', $config = $this->getIlluminateConfig($laravel)); $this->registerLogger($container); diff --git a/src/Foundation/Site.php b/src/Foundation/Site.php index 8c118196d..c77868467 100644 --- a/src/Foundation/Site.php +++ b/src/Foundation/Site.php @@ -24,13 +24,13 @@ class Site date_default_timezone_set('UTC'); - if (static::hasConfigFile($paths->base)) { - return ( - new InstalledSite($paths, static::loadConfig($paths->base)) - )->extendWith(static::loadExtenders($paths->base)); - } else { - return new UninstalledSite($paths); + if (! static::hasConfigFile($paths->base)) { + return new UninstalledSite($paths, $_SERVER['REQUEST_URI']); } + + return ( + new InstalledSite($paths, static::loadConfig($paths->base)) + )->extendWith(static::loadExtenders($paths->base)); } protected static function hasConfigFile($basePath) @@ -38,7 +38,7 @@ class Site return file_exists("$basePath/config.php"); } - protected static function loadConfig($basePath): array + protected static function loadConfig($basePath): Config { $config = include "$basePath/config.php"; @@ -46,7 +46,7 @@ class Site throw new RuntimeException('config.php should return an array'); } - return $config; + return new Config($config); } protected static function loadExtenders($basePath): array diff --git a/src/Foundation/UninstalledSite.php b/src/Foundation/UninstalledSite.php index ac1ed279b..17ed2be1e 100644 --- a/src/Foundation/UninstalledSite.php +++ b/src/Foundation/UninstalledSite.php @@ -35,9 +35,15 @@ class UninstalledSite implements SiteInterface */ protected $paths; - public function __construct(Paths $paths) + /** + * @var string + */ + private $baseUrl; + + public function __construct(Paths $paths, string $baseUrl) { $this->paths = $paths; + $this->baseUrl = $baseUrl; } /** @@ -58,8 +64,9 @@ class UninstalledSite implements SiteInterface $laravel = new Application($container, $this->paths); $container->instance('env', 'production'); - $container->instance('flarum.config', []); - $container->instance('flarum.debug', $laravel->inDebugMode()); + $container->instance('flarum.config', new Config(['url' => $this->baseUrl])); + $container->alias('flarum.config', Config::class); + $container->instance('flarum.debug', true); $container->instance('config', $config = $this->getIlluminateConfig()); $this->registerLogger($container); diff --git a/tests/integration/TestCase.php b/tests/integration/TestCase.php index d7253f45c..16a65f07e 100644 --- a/tests/integration/TestCase.php +++ b/tests/integration/TestCase.php @@ -10,6 +10,7 @@ namespace Flarum\Tests\integration; use Flarum\Extend\ExtenderInterface; +use Flarum\Foundation\Config; use Flarum\Foundation\InstalledSite; use Flarum\Foundation\Paths; use Illuminate\Database\ConnectionInterface; @@ -40,7 +41,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase 'public' => __DIR__.'/tmp/public', 'storage' => __DIR__.'/tmp/storage', ]), - include __DIR__.'/tmp/config.php' + new Config(include __DIR__.'/tmp/config.php') ); $site->extendWith($this->extenders);