From 030d981c9acc3801b8a7d40c45ffa386c65bd6c1 Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 13 May 2008 11:45:39 +0000 Subject: [PATCH] Added configuration file check git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@10877 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-core/html/main.php | 1 + gosa-core/include/class_config.inc | 39 +++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/gosa-core/html/main.php b/gosa-core/html/main.php index 2326a2de6..86c2f7c6c 100644 --- a/gosa-core/html/main.php +++ b/gosa-core/html/main.php @@ -61,6 +61,7 @@ if ($_SERVER['REMOTE_ADDR'] != $ui->ip){ exit; } $config= session::get('config'); +$config->check_config_version(); $config->check_and_reload(); /* Enable compressed output */ diff --git a/gosa-core/include/class_config.inc b/gosa-core/include/class_config.inc index ee84530f9..e182c94fd 100644 --- a/gosa-core/include/class_config.inc +++ b/gosa-core/include/class_config.inc @@ -43,6 +43,7 @@ class config { 'MAIN' => array(), 'MENU' => array(), 'SERVICE' => array()); var $basedir= ""; + var $config_version =""; /* Keep a copy of the current deparment list */ var $departments= array(); @@ -112,7 +113,7 @@ class config { } function tag_open($parser, $tag, $attrs) - { + { /* Save last and current tag for reference */ $this->tags[$this->level]= $tag; $this->level++; @@ -120,6 +121,9 @@ class config { /* Trigger on CONF section */ if ($tag == 'CONF'){ $this->config_found= TRUE; + if(isset($attrs['CONFIG_VERSION'])){ + $this->config_version = $attrs['CONFIG_VERSION']; + } } /* Return if we're not in config section */ @@ -844,6 +848,39 @@ class config { } + function check_config_version() + { + + $current = get_gosa_version(); + + /* Skip check, if we've already mentioned the mismatch + */ + if(session::is_set("LastChecked") && session::get("LastChecked") == $this->config_version) return; + + /* Remember last checked version + */ + session::set("LastChecked",$this->config_version); + + if(preg_match("/\(Rev[^\)]*\)/",$current)){ + + /* Development Version + */ + $c_v = preg_replace("/^.*\(Rev ([0-9]*)\).*$/","\\1",$current); + $g_v = preg_replace("/^.*\(Rev ([0-9]*)\).*$/","\\1",$this->config_version); + if($c_v != $g_v){ +# msg_dialog::display(_("Configuration"),_("The configuration file you are using seems to be outdated. Please move the GOsa configuration file away to run the GOsa setup again.")); + } + }else{ + + /* Tagged version + */ + if($this->config_version != $current){ + msg_dialog::display(_("Configuration"),_("The configuration file you are using seems to be outdated. Please move the GOsa configuration file away to run the GOsa setup again.")); + } + } + } + + /* On debian systems the session files are deleted with * a cronjob, which detects all files older than specified * in php.ini:'session.gc_maxlifetime' and removes them. -- 2.30.2