forked from agentejo/cockpit
-
Notifications
You must be signed in to change notification settings - Fork 1
/
bootstrap.php
65 lines (42 loc) · 1.68 KB
/
bootstrap.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
<?php
if(!defined('COCKPIT_ADMIN')) {
define('COCKPIT_ADMIN', 0);
}
// autoload from vendor
spl_autoload_register(function($class){
$class_path = __DIR__.'/vendor/'.str_replace('\\', '/', $class).'.php';
if(file_exists($class_path)) include_once($class_path);
});
function cockpit($module = null) {
static $app;
if(!$app) {
$config = include(__DIR__.'/config.php');
$app = new LimeExtra\App($config);
$app["app.config"] = $config;
$app->path('data' , __DIR__.'/storage/data');
$app->path('cache' , __DIR__.'/storage/cache');
$app->path('modules' , __DIR__.'/modules');
$app->path('assets' , __DIR__.'/assets');
$app->path('site' , dirname(__DIR__));
$app->service('data', function() use($app) {
$client = new MongoLite\Client($app->path('data:'));
return $client;
});
$app->service('memory', function() use($app) {
$client = new RedisLite(sprintf("%s/cockpit.memory.sqlite", $app->path('data:')));
return $client;
});
// mailer service
$app->service("mailer", function() use($app){
$options = $app->retrieve("app.config/mailer", []);
$mailer = new \Mailer(isset($options["transport"]) ? $options["transport"]:"mail", $options);
return $mailer;
});
// i18n
$app("i18n")->locale = isset($config["i18n"]) ? $config["i18n"]:"en";
$app->loadModules(__DIR__.'/modules/core');
$app->loadModules(__DIR__.'/modules/addons');
}
return $module ? $app->module($module) : $app;
}
$cockpit = cockpit();