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
117
118
119
120
121
122
123
124
125
126
127
|
<?php
/**
* Elgg install site action
*
* Creates a nwe site and sets it as the default
*
* @package Elgg
* @subpackage Core
* @author Curverider Ltd
* @link http://elgg.org/
*/
global $CONFIG;
define('INSTALLING', TRUE);
// Set failsafe again in case we get an exception thrown
elgg_set_viewtype('failsafe');
if (is_installed()) {
forward();
}
if (get_input('settings') == 'go') {
if (!datalist_get('default_site')) {
// Sanitise
$path = sanitise_filepath(get_input('path'));
$dataroot = sanitise_filepath(get_input('dataroot'));
$url = sanitise_filepath(get_input('wwwroot'));
// Blank?
if ($dataroot == "/") {
throw new InstallationException(elgg_echo('InstallationException:DatarootBlank'));
}
// That it's valid
if (stripos($dataroot, $path)!==false) {
throw new InstallationException(sprintf(elgg_echo('InstallationException:DatarootUnderPath'), $dataroot));
}
// Check data root is writable
if (!is_writable($dataroot)) {
throw new InstallationException(sprintf(elgg_echo('InstallationException:DatarootNotWritable'), $dataroot));
}
$site = new ElggSite();
$site->name = get_input('sitename');
$site->url = $url;
$site->description = get_input('sitedescription');
$site->access_id = ACCESS_PUBLIC;
$guid = $site->save();
if (!$guid) {
throw new InstallationException(sprintf(elgg_echo('InstallationException:CantCreateSite'), get_input('sitename'), get_input('wwwroot')));
}
$site->email = get_input('siteemail');
// this is needed to grab plugins
$CONFIG->site_guid = $guid;
$CONFIG->site = $site;
datalist_set('installed',time());
datalist_set('path', $path);
datalist_set('dataroot', $dataroot);
datalist_set('default_site', $site->getGUID());
datalist_set('version', get_version());
set_config('view', get_input('view'), $site->getGUID());
set_config('language', get_input('language'), $site->getGUID());
set_config('default_access', get_input('default_access'), $site->getGUID());
set_config('allow_registration', TRUE, $site->getGUID());
$debug = get_input('debug');
if ($debug) {
set_config('debug', $debug, $site->getGUID());
} else {
unset_config('debug', $site->getGUID());
}
$api = get_input('api');
if ($api) {
unset_config('disable_api', $site->getGUID());
} else {
set_config('disable_api', 'disabled', $site->getGUID());
}
$https_login = get_input('https_login');
if ($https_login) {
set_config('https_login', 1, $site->getGUID());
} else {
unset_config('https_login', $site->getGUID());
}
// activate some plugins by default
if (isset($CONFIG->default_plugins)) {
if (!is_array($CONFIG->default_plugins)) {
$plugins = explode(',', $CONFIG->default_plugins);
} else {
$CONFIG->default_plugins = $CONFIG->default_plugins;
}
foreach ($plugins as $plugin){
enable_plugin(trim($plugin), $site->getGUID());
}
} else {
// activate plugins with manifest.xml: elgg_install_state = enabled
$plugins = get_plugin_list();
foreach ($plugins as $plugin) {
if ($manifest = load_plugin_manifest($plugin)) {
if (isset($manifest['elgg_install_state']) && $manifest['elgg_install_state'] == 'enabled') {
enable_plugin($plugin);
}
}
}
}
// reset the views path in case of installing over an old data dir.
$dataroot = datalist_get('dataroot');
$cache = new ElggFileCache($dataroot);
$cache->delete('view_paths');
system_message(elgg_echo("installation:configuration:success"));
header("Location: ../../pg/register");
exit;
}
}
|