diff options
Diffstat (limited to 'actions/admin/site/update_advanced.php')
| -rw-r--r-- | actions/admin/site/update_advanced.php | 58 |
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 |
