openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
dispatcher.php | 2+-
util/Preferences.class.php | 46+++++++++++++++++++++++++++++++++++-----------
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; }