commit 7be121acb00056e6fb7b2d6d445fe7d828cbf66f
parent ffeb6bd1c43696e5694a67a1815f9eba7a7dba13
Author: Jan Dankert <devnull@localhost>
Date: Wed, 21 Mar 2012 00:21:17 +0100
Automatische Neuladen der Konfiguration, wenn sich die Datei geändert hat.
Diffstat:
2 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/dispatcher.php b/dispatcher.php
@@ -52,7 +52,7 @@ $conf = Session::getConfig();
// Wenn Konfiguration noch nicht in Session vorhanden, dann
// aus Datei lesen.
-if ( !is_array( $conf ) || @$REQ['reload']=='1' )
+if ( !is_array( $conf ) || $conf['config']['auto_reload'] && Preferences::lastModificationTime()>$conf['config']['last_modification'] )
{
// Da die Konfiguration neu eingelesen wird, sollten wir auch die Sitzung komplett leeren.
session_unset();
diff --git a/util/Preferences.class.php b/util/Preferences.class.php
@@ -10,13 +10,19 @@
class Preferences
{
/**
- * Liest die Konfigurationsdateien im angegebenen Ordner.
- *
- * @param $dir Verzeichnis, welche gelesen wird. Optional. Falls nicht gesetzt, wird
- * das Standard-Konfigurationsverzeichnis verwendet.
- * @return Array
+ * Ermittelt den Zeitpunkt der letzten Änderung der Konfigurationsdatei.
*/
- public static function load()
+ public static function lastModificationTime()
+ {
+ return filemtime( Preferences::configurationFile() );
+ }
+
+
+
+ /**
+ * Ermittelt den Dateinamen der Konfigurationsdatei.
+ */
+ public static function configurationFile()
{
if ( !empty($_SERVER['OPENRAT_CONFIG_FILE']) )
{
@@ -40,13 +46,30 @@ class Preferences
}
}
- require('./config/config-default.php');
- //echo "default: "; print_r($conf);
-
if ( ! is_file($config_filename))
+ {
+ error_log('configuration file not found: '.$config_filename,0);
Http::serverError("Configuration not found","The file does not exist: ".$config_filename);
-
- $ini_values = parse_ini_file( $config_filename,false );
+ }
+
+ return $config_filename;
+ }
+
+
+
+ /**
+ * Liest die Konfigurationsdateien im angegebenen Ordner.
+ *
+ * @param $dir Verzeichnis, welche gelesen wird. Optional. Falls nicht gesetzt, wird
+ * das Standard-Konfigurationsverzeichnis verwendet.
+ * @return Array
+ */
+ public static function load()
+ {
+ require('./config/config-default.php');
+ //echo "default: "; print_r($conf);
+
+ $ini_values = parse_ini_file( Preferences::configurationFile(),false );
//echo "loading ".$config_filename;
foreach ( $ini_values as $key=>$value )
@@ -66,6 +89,7 @@ class Preferences
$conf[$parts[0]][$parts[1]][$parts[2]][$parts[3]][$parts[4]][$parts[5]] = $value;
}
+ $conf['config']['last_modification'] = Preferences::lastModificationTime();
return $conf;
}