Prevent low level system settings from being stored in the database (see Issue #22)

This commit is contained in:
Fedor A. Fetisov 2014-03-07 16:50:25 +04:00
parent 7dd680cea1
commit f3ec6dd53b
3 changed files with 33 additions and 2 deletions

View File

@ -252,6 +252,18 @@ function check_admin($link)
return false; return false;
} }
function remove_low_level_settings($link)
{
global $mysqlprefix, $low_level_settings;
foreach ($low_level_settings as $key) {
if (!mysql_query("delete from ${mysqlprefix}chatconfig where vckey = '" . mysql_real_escape_string($key, $link) . "'", $link)) {
$errors[] = "Unable to remove low level setting " . htmlspecialchars($key) . " from the database. Error: " . mysql_error($link);
return false;
}
}
return true;
}
function check_status() function check_status()
{ {
global $page, $mibewroot, $settings, $dbversion; global $page, $mibewroot, $settings, $dbversion;
@ -286,6 +298,11 @@ function check_status()
return; return;
} }
if (!remove_low_level_settings($link)) {
mysql_close($link);
return;
}
check_sound(); check_sound();
$page['done'][] = getlocal("installed.message"); $page['done'][] = getlocal("installed.message");

View File

@ -631,7 +631,7 @@ function date_to_text($unixtime)
return strftime($date_format . " " . getlocal("time.timeformat"), $unixtime); return strftime($date_format . " " . getlocal("time.timeformat"), $unixtime);
} }
$dbversion = '1.6.6'; $dbversion = '1.6.10';
$featuresversion = '1.6.6'; $featuresversion = '1.6.6';
$settings = array( $settings = array(
@ -675,6 +675,13 @@ $settings = array(
'updatefrequency_oldchat' => 7, 'updatefrequency_oldchat' => 7,
); );
$settingsloaded = false; $settingsloaded = false;
// List of low level settings that can't be changed from the UI
$low_level_settings = array(
'left_messages_locale',
'max_uploaded_file_size'
);
$settings_in_db = array(); $settings_in_db = array();
function loadsettings_($link) function loadsettings_($link)

View File

@ -17,9 +17,16 @@
function update_settings() function update_settings()
{ {
global $settings, $settings_in_db, $mysqlprefix; global $settings, $settings_in_db, $low_level_settings, $mysqlprefix;
$link = connect(); $link = connect();
foreach ($settings as $key => $value) { foreach ($settings as $key => $value) {
// Don't store low level settings in the database to prevent them from being
// unchangeable
if (in_array($key, $low_level_settings)) {
continue;
}
if (!isset($settings_in_db[$key])) { if (!isset($settings_in_db[$key])) {
perform_query("insert into ${mysqlprefix}chatconfig (vckey) values ('" . mysql_real_escape_string($key, $link) . "')", $link); perform_query("insert into ${mysqlprefix}chatconfig (vckey) values ('" . mysql_real_escape_string($key, $link) . "')", $link);
} }