-
Notifications
You must be signed in to change notification settings - Fork 3
/
cli.php
116 lines (99 loc) · 3.36 KB
/
cli.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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
* CLI Index loader
*
* Used to run Cotonti from command line
*
* @package Cotonti
* @author Kalnov Alexey <kalnov_alexey@yandex.ru> http://portal30.ru
*/
define('CLI', 1);
ini_set('display_errors', 1);
ini_set('xdebug.default_enable', 0);
ini_set('xdebug.overload_var_dump', 0);
// Let the include files know that we are Cotonti
define('COT_CODE', true);
// Site root folder
define("DOC_ROOT", dirname(__FILE__) . '/');
chdir(DOC_ROOT);
// Load vital core configuration from file
require_once DOC_ROOT.'datas/config.php';
$cfg['display_errors'] = true;
// Load the Core API, the template engine
require_once $cfg['system_dir'] . '/functions.php';
require_once $cfg['system_dir'] . '/cotemplate.php';
// Bootstrap
require_once $cfg['system_dir'] . '/common.php';
define('ARGV1', $argv[1]);
if(empty($argv[1])) {
echo "NO CALL. EXAMPLE > cli.php --a module.controller.action\n";
exit;
}
// Detect selected extension
if($num = array_search('--a', $argv)) {
$param = $argv[$num+1];
if(empty($param)){
echo "Parameter required. EXAMPLE > cli.php --a module.controller.action\n";
} else {
list($e, $m, $a) = explode('.',$param);
$found = false;
if (preg_match('`^\w+$`', $e)) {
$module_found = false;
$plugin_found = false;
if (file_exists($cfg['modules_dir'] . '/' . $e) && isset($cot_modules[$e])) {
$module_found = true;
$found = true;
}
if (file_exists($cfg['plugins_dir'] . '/' . $e)) {
$plugin_found = true;
$found = true;
}
if ($module_found && $plugin_found) {
// Need to query the db to check which one is installed
$res = $db->query("SELECT ct_plug FROM $db_core WHERE ct_code = ? LIMIT 1", $e);
if ($res->rowCount() == 1) {
if ((int)$res->fetchColumn()) {
$module_found = false;
} else {
$plugin_found = false;
}
} else {
$found = false;
}
}
if ($module_found) {
$env['type'] = 'module';
define('COT_MODULE', true);
} elseif ($plugin_found) {
$env['type'] = 'plug';
$env['location'] = 'plugins';
define('COT_PLUG', true);
}
}
if ($found) {
$env['ext'] = $e;
} else {
// Error page
echo "Extension '{$e}' not found\n";
exit;
}
$content = '';
echo "\nStarting '{$e}' at ".date('Y-m-d H:i:s')."\n";
// Load the requested extension
if ($env['type'] == 'plug') {
$_GET['e'] = $e;
require_once $cfg['system_dir'] . '/plugin.php';
} else {
require_once $cfg['modules_dir'] . '/' . $env['ext'] . '/' . $env['ext'] . '.php';
}
if(!empty($content)){
echo "---------------------------------------------------------------------------\n";
echo $content."\n";
echo "---------------------------------------------------------------------------\n";
}
unset($content);
echo "Stopped at ".date('Y-m-d H:i:s')."\n";
//ob_end_flush();
}
}
exit;