/
Site.php
73 lines (57 loc) · 1.72 KB
/
Site.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/
namespace Flarum\Foundation;
use Illuminate\Support\Arr;
use RuntimeException;
class Site
{
/**
* @param array $paths
* @return SiteInterface
*/
public static function fromPaths(array $paths)
{
$paths = new Paths($paths);
date_default_timezone_set('UTC');
if (! static::hasConfigFile($paths->base)) {
// Instantiate site instance for new installations,
// fallback to localhost for validation of Config for instance in CLI.
return new UninstalledSite(
$paths,
Arr::get($_SERVER, 'REQUEST_URI', 'http://localhost')
);
}
return (
new InstalledSite($paths, static::loadConfig($paths->base))
)->extendWith(static::loadExtenders($paths->base));
}
protected static function hasConfigFile($basePath)
{
return file_exists("$basePath/config.php");
}
protected static function loadConfig($basePath): Config
{
$config = include "$basePath/config.php";
if (! is_array($config)) {
throw new RuntimeException('config.php should return an array');
}
return new Config($config);
}
protected static function loadExtenders($basePath): array
{
$extenderFile = "$basePath/extend.php";
if (! file_exists($extenderFile)) {
return [];
}
$extenders = require $extenderFile;
if (! is_array($extenders)) {
return [];
}
return Arr::flatten($extenders);
}
}