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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
<?php
class N2Base {
private static $isReady = false;
/** @var N2ApplicationInfo[] */ private static $applicationInfo = array();
/** @var N2Application[] */ private static $applications = array();
/** * @var N2ApplicationType */ public static $currentApplicationType;
private static function init() { if (!self::$isReady) { N2Loader::importAll('libraries.mvc.application'); N2Loader::importAll('libraries.mvc'); N2Loader::import('libraries.mvc.controllers.backend'); N2Loader::importAll('libraries.mvc.controllers'); N2Loader::importAll('libraries.cache'); N2Loader::importAll('libraries.assets'); N2Loader::importAll('libraries.google'); N2Loader::importAll('libraries.assets.css'); N2Loader::importAll('libraries.assets.js'); N2Loader::importAll('libraries.assets.less'); N2Loader::importAll('libraries.assets.google'); N2Loader::importAll('libraries.assets.image'); N2Loader::importAll('libraries.uri'); N2Loader::import('libraries.acl.acl'); N2Loader::import('libraries.message.message');
N2Loader::import('libraries.image.helper');
self::$isReady = true;
foreach (self::$applicationInfo AS $applicationInfo) { $applicationInfo->onReady(); } } }
public static function registerApplication($infoPath) { /** * @var $info N2ApplicationInfo */ $info = require_once($infoPath); if (is_object($info)) { if (self::$isReady) { $info->onReady(); } self::$applicationInfo[$info->getName()] = $info; } }
/** * @param $name * * @return bool|N2ApplicationInfo */ public static function getApplicationInfo($name) { if (!isset(self::$applicationInfo[$name])) { return false; }
return self::$applicationInfo[$name]; }
/** * @param $name * * @return N2Application * @throws Exception */ public static function getApplication($name) { if (!isset(self::$applications[$name])) { self::createApplication($name);
N2Pluggable::doAction('applicationLoaded', array($name)); }
return self::$applications[$name]; }
private static function createApplication($name) { if (isset(self::$applicationInfo[$name])) { self::init(); /** * @var $nextendApp N2Application */ self::$applications[$name] = self::$applicationInfo[$name]->getInstance();
} else { throw new Exception("Application not available: {$name}"); } } }
|