mirror of
https://github.com/flarum/core.git
synced 2025-06-02 12:45:04 +02:00
77 lines
1.8 KiB
PHP
77 lines
1.8 KiB
PHP
<?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\Foundation;
|
|
|
|
use InvalidArgumentException;
|
|
use RuntimeException;
|
|
|
|
class Site
|
|
{
|
|
public static function fromDefaultBase($basePath)
|
|
{
|
|
return static::fromPaths([
|
|
'base' => $basePath,
|
|
'public' => "$basePath/public",
|
|
'storage' => "$basePath/storage",
|
|
]);
|
|
}
|
|
/**
|
|
* @param array $paths
|
|
* @return SiteInterface
|
|
*/
|
|
public static function fromPaths(array $paths)
|
|
{
|
|
if (! isset($paths['base'], $paths['public'], $paths['storage'])) {
|
|
throw new InvalidArgumentException(
|
|
'Paths array requires keys base, public and storage'
|
|
);
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
private static function hasConfigFile($basePath)
|
|
{
|
|
return file_exists("$basePath/config.php");
|
|
}
|
|
|
|
private static function loadConfig($basePath): array
|
|
{
|
|
$config = include "$basePath/config.php";
|
|
|
|
if (! is_array($config)) {
|
|
throw new RuntimeException('config.php should return an array');
|
|
}
|
|
|
|
return $config;
|
|
}
|
|
|
|
private static function loadExtenders($basePath): array
|
|
{
|
|
$extenderFile = "$basePath/extend.php";
|
|
|
|
if (! file_exists($extenderFile)) {
|
|
return [];
|
|
}
|
|
|
|
return array_flatten(require $extenderFile);
|
|
}
|
|
}
|