Quellcode durchsuchen

[svn r22316] Added register event system for configuration setting variable changed - partial FS#842

Cristian Fasanando vor 15 Jahren
Ursprung
Commit
bc82d8d0cd

+ 34 - 5
main/admin/settings.php

@@ -1,4 +1,4 @@
-<?php // $Id: settings.php 22210 2009-07-18 16:17:37Z ivantcholakov $
+<?php // $Id: settings.php 22316 2009-07-23 16:18:33Z cfasanando $
 /*
 ==============================================================================
 	Dokeos - elearning and course management software
@@ -261,31 +261,60 @@ if (!empty($_GET['category']) and !in_array($_GET['category'], array('Plugins',
 		//$sql = "UPDATE $table_settings_current SET selected_value='false' WHERE category='$my_category' AND type='checkbox'";
 		//$result = api_sql_query($sql, __FILE__, __LINE__);
 		// Save the settings
+		$keys = array();
 		foreach ($values as $key => $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;
 	}

+ 1 - 1
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();
 		

+ 1 - 0
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