/
Site.php
74 lines (60 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
74
<?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
{
/**
* @param array $paths
* @return SiteInterface
*/
public static function fromPaths(array $paths)
{
if (! isset($paths['base'])) {
throw new InvalidArgumentException(
'No base path given'
);
}
if (! isset($paths['public'])) {
$paths['public'] = $paths['base'];
}
date_default_timezone_set('UTC');
if (static::hasConfigFile($paths['base'])) {
return (new InstalledSite(
$paths['base'],
$paths['public'],
static::loadConfig($paths['base'])
))->extendWith(static::loadExtenders($paths['base']));
} else {
return new UninstalledSite($paths['base'], $paths['public']);
}
}
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);
}
}