aboutsummaryrefslogtreecommitdiff
path: root/actions/admin/site/update_advanced.php
diff options
context:
space:
mode:
Diffstat (limited to 'actions/admin/site/update_advanced.php')
-rw-r--r--actions/admin/site/update_advanced.php58
1 files changed, 34 insertions, 24 deletions
diff --git a/actions/admin/site/update_advanced.php b/actions/admin/site/update_advanced.php
index e65919ce1..4888b0a8d 100644
--- a/actions/admin/site/update_advanced.php
+++ b/actions/admin/site/update_advanced.php
@@ -1,39 +1,51 @@
<?php
/**
- * Elgg update site action
+ * Updates the advanced settings for the primary site object.
*
- * This is an update version of the sitesettings/install action
- * which is used by the admin panel to modify basic settings.
+ * Options are saved among metadata on the site object, entries
+ * in the datalist table, and entries in the config table.
*
- * @package Elgg
- * @subpackage Core
- * @author Curverider Ltd
- * @link http://elgg.org/
+ * @package Elgg.Core
+ * @subpackage Administration.Site
*/
-admin_gatekeeper();
-
-if (datalist_get('default_site')) {
- $site = get_entity(datalist_get('default_site'));
+if ($site = elgg_get_site_entity()) {
if (!($site instanceof ElggSite)) {
throw new InstallationException(elgg_echo('InvalidParameterException:NonElggSite'));
}
- $site->url = get_input('wwwroot');
+ $site->url = rtrim(get_input('wwwroot', '', false), '/') . '/';
+
+ datalist_set('path', sanitise_filepath(get_input('path', '', false)));
+ $dataroot = sanitise_filepath(get_input('dataroot', '', false));
+
+ // check for relative paths
+ if (stripos(PHP_OS, 'win') === 0) {
+ if (strpos($dataroot, ':') !== 1) {
+ $msg = elgg_echo('admin:configuration:dataroot:relative_path', array($dataroot));
+ register_error($msg);
+ forward(REFERER);
+ }
+ } else {
+ if (strpos($dataroot, '/') !== 0) {
+ $msg = elgg_echo('admin:configuration:dataroot:relative_path', array($dataroot));
+ register_error($msg);
+ forward(REFERER);
+ }
+ }
- datalist_set('path', sanitise_filepath(get_input('path')));
- datalist_set('dataroot', sanitise_filepath(get_input('dataroot')));
+ datalist_set('dataroot', $dataroot);
if (get_input('simplecache_enabled')) {
- elgg_view_enable_simplecache();
+ elgg_enable_simplecache();
} else {
- elgg_view_disable_simplecache();
+ elgg_disable_simplecache();
}
- if (get_input('viewpath_cache_enabled')) {
- elgg_enable_filepath_cache();
+ if (get_input('system_cache_enabled')) {
+ elgg_enable_system_cache();
} else {
- elgg_disable_filepath_cache();
+ elgg_disable_system_cache();
}
set_config('default_access', get_input('default_access', ACCESS_PRIVATE), $site->getGUID());
@@ -41,22 +53,20 @@ if (datalist_get('default_site')) {
$user_default_access = (get_input('allow_user_default_access')) ? 1 : 0;
set_config('allow_user_default_access', $user_default_access, $site->getGUID());
- set_config('view', get_input('view'), $site->getGUID());
-
$debug = get_input('debug');
if ($debug) {
set_config('debug', $debug, $site->getGUID());
} else {
unset_config('debug', $site->getGUID());
}
-
+
// allow new user registration?
if (get_input('allow_registration', FALSE)) {
set_config('allow_registration', TRUE, $site->getGUID());
} else {
set_config('allow_registration', FALSE, $site->getGUID());
}
-
+
// setup walled garden
if (get_input('walled_garden', FALSE)) {
set_config('walled_garden', TRUE, $site->getGUID());
@@ -84,5 +94,5 @@ if (datalist_get('default_site')) {
register_error(elgg_echo("admin:configuration:fail"));
}
- forward($_SERVER['HTTP_REFERER']);
+ forward(REFERER);
} \ No newline at end of file