From bc82d8d0cd54fb979ca669a76cde5ce5db594fad Mon Sep 17 00:00:00 2001 From: Cristian Fasanando Date: Thu, 23 Jul 2009 18:18:33 +0200 Subject: [PATCH] [svn r22316] Added register event system for configuration setting variable changed - partial FS#842 --- main/admin/settings.php | 39 +++++++++++++++++++++--- main/admin/statistics/statistics.lib.php | 2 +- main/inc/lib/main_api.lib.php | 1 + 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/main/admin/settings.php b/main/admin/settings.php index 16e9f0a2e0..892bcc49d0 100644 --- a/main/admin/settings.php +++ b/main/admin/settings.php @@ -1,4 +1,4 @@ - $value) { if (!is_array($value)) { //$sql = "UPDATE $table_settings_current SET selected_value='".mysql_real_escape_string($value)."' WHERE variable='$key'"; //$result = api_sql_query($sql, __FILE__, __LINE__); - $result = api_set_setting($key,$value,null,null,$_configuration['access_url']); + + if (api_get_setting($key) != $value) $keys[] = $key; + + $result = api_set_setting($key,$value,null,null,$_configuration['access_url']); + } else { + + $sql = "SELECT subkey FROM $table_settings_current WHERE variable = '$key'"; + $res = api_sql_query($sql,__FILE__,__LINE__); + $subkeys = array(); + while ($row_subkeys = Database::fetch_array($res)) { + // if subkey is changed + if ( (isset($value[$row_subkeys['subkey']]) && api_get_setting($key,$row_subkeys['subkey']) == 'false') || + (!isset($value[$row_subkeys['subkey']]) && api_get_setting($key,$row_subkeys['subkey']) == 'true')) { + $keys[] = $key; + break; + } + } + foreach ($value as $subkey => $subvalue) { + //$sql = "UPDATE $table_settings_current SET selected_value='true' WHERE variable='$key' AND subkey = '$subkey'"; //$result = api_sql_query($sql, __FILE__, __LINE__); - $result = api_set_setting($key,'true',$subkey,null,$_configuration['access_url']); + + $result = api_set_setting($key,'true',$subkey,null,$_configuration['access_url']); + } } } - - // add event to system log + + // add event configuration settings category to system log $time = time(); $user_id = api_get_user_id(); $category = $_GET['category']; event_system(LOG_CONFIGURATION_SETTINGS_CHANGE, LOG_CONFIGURATION_SETTINGS_CATEGORY, $category, $time, $user_id); + + // add event configuration settings variable to system log + if (is_array($keys) && count($keys) > 0) { + foreach($keys as $variable) { + event_system(LOG_CONFIGURATION_SETTINGS_CHANGE, LOG_CONFIGURATION_SETTINGS_VARIABLE, $variable, $time, $user_id); + } + } + header('Location: settings.php?action=stored&category='.Security::remove_XSS($_GET['category'])); exit; } diff --git a/main/admin/statistics/statistics.lib.php b/main/admin/statistics/statistics.lib.php index d5eb320e00..9d36f38295 100644 --- a/main/admin/statistics/statistics.lib.php +++ b/main/admin/statistics/statistics.lib.php @@ -361,7 +361,7 @@ class Statistics $table->set_header(0, get_lang('EventType')); $table->set_header(1, get_lang('DataType')); $table->set_header(2, get_lang('Value')); - $table->set_header(3, get_lang('Username')); + $table->set_header(3, get_lang('UserName')); $table->set_header(4, get_lang('Date')); $table->display(); diff --git a/main/inc/lib/main_api.lib.php b/main/inc/lib/main_api.lib.php index 6f58f1222a..a540612be2 100644 --- a/main/inc/lib/main_api.lib.php +++ b/main/inc/lib/main_api.lib.php @@ -192,6 +192,7 @@ define('LOG_COURSE_CODE', 'course_code'); define('LOG_USER_ID', 'user_id'); define('LOG_SESSION_ID', 'session_id'); define('LOG_CONFIGURATION_SETTINGS_CATEGORY', 'settings_category'); +define('LOG_CONFIGURATION_SETTINGS_VARIABLE', 'settings_variable'); /* ============================================================================== MAIN API EXTENSIONS