Merge pull request #1 from flarum/master

Update
This commit is contained in:
Albert 2016-01-07 19:05:41 +01:00
commit 1a2cc6a603
4 changed files with 91 additions and 2 deletions

View File

@ -14,5 +14,8 @@ use Flarum\Http\AbstractUrlGenerator;
class UrlGenerator extends AbstractUrlGenerator class UrlGenerator extends AbstractUrlGenerator
{ {
/**
* {@inheritdoc}
*/
protected $prefix = 'api'; protected $prefix = 'api';
} }

View File

@ -30,6 +30,11 @@ class AbstractUrlGenerator
*/ */
protected $path; protected $path;
/**
* @var string
*/
protected $prefix = '';
/** /**
* @param Application $app * @param Application $app
* @param RouteCollection $routes * @param RouteCollection $routes
@ -67,12 +72,18 @@ class AbstractUrlGenerator
} }
/** /**
* Get the base URL. * Generate a URL to base with UrlGenerator's prefix.
* *
* @return string * @return string
*/ */
public function toBase() 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;
}
} }
} }

View 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();
}
}

View File

@ -66,6 +66,12 @@ class InstallCommand extends AbstractCommand
'd', 'd',
InputOption::VALUE_NONE, InputOption::VALUE_NONE,
'Create default settings and user' '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->dataSource === null) {
if ($this->input->getOption('defaults')) { if ($this->input->getOption('defaults')) {
$this->dataSource = new DefaultsDataProvider(); $this->dataSource = new DefaultsDataProvider();
} elseif ($this->input->getOption('file')) {
$this->dataSource = new FileDataProvider($this->input);
} else { } else {
$this->dataSource = new UserDataProvider($this->input, $this->output, $this->getHelperSet()->get('question')); $this->dataSource = new UserDataProvider($this->input, $this->output, $this->getHelperSet()->get('question'));
} }