1
0
mirror of https://github.com/flarum/core.git synced 2025-06-02 12:45:04 +02:00
2018-10-24 22:19:09 +02:00

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