mirror of
https://github.com/flarum/framework.git
synced 2024-12-04 00:03:37 +08:00
commit
e3a3ab9cfd
|
@ -14,5 +14,8 @@ use Flarum\Http\AbstractUrlGenerator;
|
|||
|
||||
class UrlGenerator extends AbstractUrlGenerator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $prefix = 'api';
|
||||
}
|
||||
|
|
|
@ -30,6 +30,11 @@ class AbstractUrlGenerator
|
|||
*/
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $prefix = '';
|
||||
|
||||
/**
|
||||
* @param Application $app
|
||||
* @param RouteCollection $routes
|
||||
|
@ -67,12 +72,18 @@ class AbstractUrlGenerator
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the base URL.
|
||||
* Generate a URL to base with UrlGenerator's prefix.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function toBase()
|
||||
{
|
||||
return $this->app->url($this->path);
|
||||
$base = $this->app->url($this->path);
|
||||
|
||||
if (empty($this->prefix)) {
|
||||
return $base;
|
||||
} else {
|
||||
return $base . '/' . $this->prefix;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
67
framework/core/src/Install/Console/FileDataProvider.php
Normal file
67
framework/core/src/Install/Console/FileDataProvider.php
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Install\Console;
|
||||
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Yaml\Yaml;
|
||||
use Exception;
|
||||
|
||||
class FileDataProvider implements DataProviderInterface
|
||||
{
|
||||
protected $default;
|
||||
protected $baseUrl = null;
|
||||
protected $databaseConfiguration = [];
|
||||
protected $adminUser = [];
|
||||
protected $settings = [];
|
||||
|
||||
public function __construct(InputInterface $input)
|
||||
{
|
||||
// Get default configuration
|
||||
$this->default = new DefaultsDataProvider();
|
||||
|
||||
// Get configuration file path
|
||||
$configurationFile = $input->getOption('file');
|
||||
|
||||
// Check if file exists before parsing content
|
||||
if (file_exists($configurationFile)) {
|
||||
// Parse YAML
|
||||
$configuration = Yaml::parse(file_get_contents($configurationFile));
|
||||
|
||||
// Define configuration variables
|
||||
$this->baseUrl = isset($configuration['baseUrl']) ? rtrim($configuration['baseUrl'], '/') : null;
|
||||
$this->databaseConfiguration = isset($configuration['databaseConfiguration']) ? $configuration['databaseConfiguration'] : [];
|
||||
$this->adminUser = isset($configuration['adminUser']) ? $configuration['adminUser'] : [];
|
||||
$this->settings = isset($configuration['settings']) ? $configuration['settings']: [];
|
||||
} else {
|
||||
throw new Exception('Configuration file does not exist.');
|
||||
}
|
||||
}
|
||||
|
||||
public function getDatabaseConfiguration()
|
||||
{
|
||||
return $this->databaseConfiguration + $this->default->getDatabaseConfiguration();
|
||||
}
|
||||
|
||||
public function getBaseUrl()
|
||||
{
|
||||
return (!is_null($this->baseUrl)) ? $this->baseUrl : $this->default->getBaseUrl();
|
||||
}
|
||||
|
||||
public function getAdminUser()
|
||||
{
|
||||
return $this->adminUser + $this->default->getAdminUser();
|
||||
}
|
||||
|
||||
public function getSettings()
|
||||
{
|
||||
return $this->settings + $this->default->getSettings();
|
||||
}
|
||||
}
|
|
@ -66,6 +66,12 @@ class InstallCommand extends AbstractCommand
|
|||
'd',
|
||||
InputOption::VALUE_NONE,
|
||||
'Create default settings and user'
|
||||
)
|
||||
->addOption(
|
||||
'file',
|
||||
'f',
|
||||
InputOption::VALUE_REQUIRED,
|
||||
'Use external configuration file in YAML format'
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -99,6 +105,8 @@ class InstallCommand extends AbstractCommand
|
|||
if ($this->dataSource === null) {
|
||||
if ($this->input->getOption('defaults')) {
|
||||
$this->dataSource = new DefaultsDataProvider();
|
||||
} elseif ($this->input->getOption('file')) {
|
||||
$this->dataSource = new FileDataProvider($this->input);
|
||||
} else {
|
||||
$this->dataSource = new UserDataProvider($this->input, $this->output, $this->getHelperSet()->get('question'));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user