injitools /
cms-Inji
| 1 | <?php |
||
| 2 | |||
| 3 | /** |
||
| 4 | * Start system core |
||
| 5 | * |
||
| 6 | * @author Alexey Krupskiy <[email protected]> |
||
| 7 | * @link http://inji.ru/ |
||
| 8 | * @copyright 2015 Alexey Krupskiy |
||
| 9 | * @license https://github.com/injitools/cms-Inji/blob/master/LICENSE |
||
| 10 | */ |
||
| 11 | session_start(); |
||
| 12 | |||
| 13 | include_once INJI_SYSTEM_DIR . '/Inji/Inji.php'; |
||
| 14 | include_once INJI_SYSTEM_DIR . '/Inji/Router.php'; |
||
| 15 | include_once INJI_SYSTEM_DIR . '/Inji/Router/Folder.php'; |
||
| 16 | include_once INJI_SYSTEM_DIR . '/Inji/Router/Path.php'; |
||
| 17 | |||
| 18 | spl_autoload_register('Inji\Router::findClass'); |
||
| 19 | |||
| 20 | Inji\Router::addPath(INJI_SYSTEM_DIR . '/Inji/', 'Inji\\'); |
||
| 21 | Inji\Router::addPath(INJI_SYSTEM_DIR . '/modules/', 'Inji\\', 10); |
||
| 22 | Inji\Router::addPath(INJI_SYSTEM_DIR . '/modules/', 'Inji\\', 20, 1, ['models', 'objects', 'controllers']); |
||
| 23 | |||
| 24 | //load core |
||
| 25 | Inji::$inst = new Inji(); |
||
| 26 | Inji::$config = Inji\Config::system(); |
||
| 27 | Inji::$inst->listen('Config-change-system', 'systemConfig', function ($event) { |
||
| 28 | Inji::$config = $event['eventObject']; |
||
| 29 | return $event['eventObject']; |
||
| 30 | }); |
||
| 31 | |||
| 32 | |||
| 33 | putenv('COMPOSER_HOME=' . getcwd()); |
||
| 34 | putenv('COMPOSER_CACHE_DIR=' . getcwd() . DIRECTORY_SEPARATOR . 'cache/composer'); |
||
| 35 | Inji\ComposerCmd::check(); |
||
| 36 | if (!function_exists('idn_to_utf8')) { |
||
| 37 | Inji\ComposerCmd::requirePackage("mabrahamde/idna-converter", "dev-master", '.'); |
||
| 38 | |||
| 39 | function idn_to_utf8($domain) { |
||
| 40 | if (empty(Inji::$storage['IdnaConvert'])) { |
||
| 41 | Inji::$storage['IdnaConvert'] = new \idna_convert(array('idn_version' => 2008)); |
||
|
0 ignored issues
–
show
|
|||
| 42 | } |
||
| 43 | return Inji::$storage['IdnaConvert']->decode($domain); |
||
| 44 | } |
||
| 45 | } |
||
| 46 | |||
| 47 | Inji\BowerCmd::check(); |
||
| 48 | |||
| 49 | if (file_exists('vendor/autoload.php')) { |
||
| 50 | include 'vendor/autoload.php'; |
||
| 51 | } |
||
| 52 | |||
| 53 | $domain = idn_to_utf8($_SERVER['SERVER_NAME']); |
||
| 54 | if (strpos($domain, 'www.') === 0) { |
||
| 55 | $domain = substr($domain, 4); |
||
| 56 | } |
||
| 57 | define('INJI_DOMAIN_NAME', $domain); |
||
| 58 | |||
| 59 | |||
| 60 | //Make default app params |
||
| 61 | $finalApp = [ |
||
| 62 | 'name' => INJI_DOMAIN_NAME, |
||
| 63 | 'dir' => INJI_DOMAIN_NAME, |
||
| 64 | 'installed' => false, |
||
| 65 | 'default' => true, |
||
| 66 | 'route' => INJI_DOMAIN_NAME, |
||
| 67 | ]; |
||
| 68 | Inji\App::$primary = Inji\App::$cur = new Inji\App($finalApp); |
||
| 69 | $apps = Inji\Apps\App::connection('injiStorage')->setDbOption('share', true)->getList(); |
||
| 70 | foreach ($apps as $app) { |
||
| 71 | if ($app->default) { |
||
| 72 | $finalApp = $app->_params; |
||
| 73 | } |
||
| 74 | if (preg_match("!{$app->route}!i", INJI_DOMAIN_NAME)) { |
||
| 75 | $finalApp = $app->_params; |
||
| 76 | break; |
||
| 77 | } |
||
| 78 | } |
||
| 79 | Inji\App::$cur = new Inji\App($finalApp); |
||
| 80 | $params = Inji\Tools::uriParse($_SERVER['REQUEST_URI']); |
||
| 81 | |||
| 82 | Inji\App::$cur->type = 'app'; |
||
| 83 | Inji\App::$cur->path = INJI_PROGRAM_DIR . '/' . Inji\App::$cur->dir; |
||
| 84 | Inji\App::$cur->params = $params; |
||
| 85 | Inji\App::$cur->config = Inji\Config::app(Inji\App::$cur); |
||
| 86 | if (!Inji\App::$cur->namespace) { |
||
| 87 | Inji\App::$cur->namespace = ucfirst(Inji\App::$cur->name); |
||
| 88 | } |
||
| 89 | Inji\App::$primary = Inji\App::$cur; |
||
| 90 | |||
| 91 | if (!empty($params[0]) && file_exists(INJI_SYSTEM_DIR . '/program/' . $params[0] . '/')) { |
||
| 92 | |||
| 93 | Inji\App::$primary->params = []; |
||
| 94 | |||
| 95 | Inji\App::$cur = new Inji\App(); |
||
| 96 | Inji\App::$cur->name = $params[0]; |
||
| 97 | Inji\App::$cur->namespace = 'Inji\\' . ucfirst($params[0]); |
||
| 98 | Inji\App::$cur->system = true; |
||
| 99 | Inji\App::$cur->staticPath = "/" . Inji\App::$cur->name . "/static"; |
||
| 100 | Inji\App::$cur->templatesPath = "/" . Inji\App::$cur->name . "/static/templates"; |
||
| 101 | Inji\App::$cur->path = INJI_SYSTEM_DIR . '/program/' . Inji\App::$cur->name; |
||
| 102 | Inji\App::$cur->type = 'app' . ucfirst(strtolower(Inji\App::$cur->name)); |
||
| 103 | Inji\App::$cur->installed = true; |
||
| 104 | Inji\App::$cur->params = array_slice($params, 1); |
||
| 105 | Inji\App::$cur->config = Inji\Config::app(Inji\App::$cur); |
||
| 106 | |||
| 107 | Inji::$inst->listen('Config-change-app-' . Inji\App::$primary->name, 'primaryAppConfig', function ($event) { |
||
| 108 | Inji\App::$primary->config = $event['eventObject']; |
||
| 109 | return $event['eventObject']; |
||
| 110 | }); |
||
| 111 | |||
| 112 | Inji\Router::addPath(Inji\App::$cur->path . '/objects/', Inji\App::$cur->namespace . '\\', 60); |
||
| 113 | Inji\Router::addPath(Inji\App::$cur->path . '/modules/', Inji\App::$cur->namespace . '\\', 70); |
||
| 114 | Inji\Router::addPath(Inji\App::$cur->path . '/modules/', Inji\App::$cur->namespace . '\\', 80, 2, ['models', 'objects', 'controllers']); |
||
| 115 | |||
| 116 | } |
||
| 117 | if (!empty(Inji\App::$primary->namespace)) { |
||
| 118 | Inji\Router::addPath(Inji\App::$primary->path . '/objects/', Inji\App::$primary->namespace . '\\', 30); |
||
| 119 | Inji\Router::addPath(Inji\App::$primary->path . '/modules/', Inji\App::$primary->namespace . '\\', 40); |
||
| 120 | Inji\Router::addPath(Inji\App::$primary->path . '/modules/', Inji\App::$primary->namespace . '\\', 50, 1, ['models', 'objects', 'controllers']); |
||
| 121 | } |
||
| 122 | Inji\App::$cur->log = new Inji\Log(); |
||
|
0 ignored issues
–
show
|
|||
| 123 | Inji\App::$cur->log->run = defined('LOG_ENABLED'); |
||
|
0 ignored issues
–
show
The property
log does not exist on Inji\App. Since you implemented __get, consider adding a @property annotation.
Loading history...
|
|||
| 124 | Inji::$inst->listen('Config-change-app-' . Inji\App::$cur->name, 'curAppConfig', function ($event) { |
||
| 125 | Inji\App::$cur->config = $event['eventObject']; |
||
| 126 | return $event['eventObject']; |
||
| 127 | }); |
||
| 128 | $shareConfig = Inji\Config::share(); |
||
| 129 | if (empty($shareConfig['installed']) && Inji\App::$cur->name != 'setup' && (empty(Inji\App::$cur->params[0]) || Inji\App::$cur->params[0] != 'static')) { |
||
| 130 | Inji\Tools::redirect('/setup'); |
||
| 131 | } |
||
| 132 | Inji\Module::$cur = Inji\Module::resolveModule(Inji\App::$cur); |
||
| 133 | |||
| 134 | if (Inji\Module::$cur === null) { |
||
| 135 | INJI_SYSTEM_ERROR('Module not found', true); |
||
| 136 | } |
||
| 137 | |||
| 138 | Inji\Controller::$cur = Inji\Module::$cur->findController(); |
||
| 139 | if (Inji\Controller::$cur === null) { |
||
| 140 | INJI_SYSTEM_ERROR('Controller not found', true); |
||
| 141 | } |
||
| 142 | if (!empty(Inji\App::$primary->config['autoloadModules'])) { |
||
| 143 | foreach (Inji\App::$primary->config['autoloadModules'] as $module) { |
||
| 144 | Inji\App::$cur->$module; |
||
| 145 | } |
||
| 146 | } |
||
| 147 | if (Inji\App::$primary !== Inji\App::$cur) { |
||
| 148 | foreach (Inji\App::$cur->config['autoloadModules'] as $module) { |
||
| 149 | Inji\App::$cur->$module; |
||
| 150 | } |
||
| 151 | } |
||
| 152 | Inji\Controller::$cur->run(); |
||
| 153 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths