From 4f70280015a3d31673f5cae0f2931a2a4e434e1a Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Tue, 10 Jun 2008 16:41:32 -0400
Subject: [PATCH] The updater is now able to update the config (in server mysql table) from the master template.
---
install/lib/installer_base.lib.php | 4 +-
install/lib/install.lib.php | 38 +++++++++++++++++++
install/update.php | 22 +++++++++++
3 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php
index b8f40f1..83c6d0b 100644
--- a/install/lib/install.lib.php
+++ b/install/lib/install.lib.php
@@ -402,4 +402,42 @@
wf($xinetd_conf, $contents);
}
+//* Converts a ini string to array
+function ini_to_array($ini) {
+ $config = '';
+ $ini = str_replace("\r\n", "\n", $ini);
+ $lines = explode("\n", $ini);
+ foreach($lines as $line) {
+ $line = trim($line);
+ if($line != '') {
+ if(preg_match("/^\[([\w\d_]+)\]$/", $line, $matches)) {
+ $section = strtolower($matches[1]);
+ } elseif(preg_match("/^([\w\d_]+)=(.*)$/", $line, $matches) && $section != null) {
+ $item = trim($matches[1]);
+ $config[$section][$item] = trim($matches[2]);
+ }
+ }
+ }
+ return $config;
+}
+
+
+//* Converts a config array to a string
+public function array_to_ini($config_array = '') {
+ if($config_array == '') $config_array = $this->config;
+ $content = '';
+ foreach($config_array as $section => $data) {
+ $content .= "[$section]\n";
+ foreach($data as $item => $value) {
+ if($item != ''){
+ $content .= "$item=$value\n";
+ }
+ }
+ $content .= "\n";
+ }
+ return $content;
+}
+
+
+
?>
\ No newline at end of file
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 02d9f83..6880e98 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -42,7 +42,7 @@
$this->conf = $conf;
}
- //: TODO Implement the translation function and langauge files for the installer.
+ //: TODO Implement the translation function and language files for the installer.
public function lng($text)
{
return $text;
@@ -153,7 +153,7 @@
}
}
- //** Create a recors in the
+ //** Create the server record in the database
public function add_database_server_record() {
$server_ini_content = rf("tpl/server.ini.master");
diff --git a/install/update.php b/install/update.php
index 3095b04..6bd4f18 100644
--- a/install/update.php
+++ b/install/update.php
@@ -75,6 +75,8 @@
$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
+$conf['server_id'] = $conf_old["server_id"];
+
$inst = new installer();
echo "This application will update ISPConfig 3 on your server.\n";
@@ -128,6 +130,26 @@
system("mysql -h ".$conf['mysql']['host']." -u ".$conf['mysql']['admin_user']." ".$conf['mysql']['database']." < existing_db.sql");
}
+//** Update server ini
+$tmp_server_rec = $inst->db->queryOneRecord("SELECT config FROM server WHERE server_id = ".$conf['server_id']);
+$old_ini_array = ini_to_array(stripslashes($tmp_server_rec['config']));
+unset($tmp_server_rec);
+$tpl_ini_array = ini_to_array(rf('tpl/server.ini.master'));
+
+// update the new template with the old values
+foreach($old_ini_array as $tmp_section_name => $tmp_section_content) {
+ foreach($tmp_section_content as $tmp_var_name => $tmp_var_content) {
+ $tpl_ini_array[$tmp_section_name][$tmp_var_name] = $tmp_var_content;
+ }
+}
+
+$new_ini = array_to_ini($tpl_ini_array);
+$inst->db->query("UPDATE server SET config = '".addslashes($new_ini)."' WHERE server_id = ".$conf['server_id']);
+unset($old_ini_array);
+unset($tpl_ini_array);
+unset($new_ini);
+
+
//** Shall the services be reconfigured during update
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes','no'),'yes');
--
Gitblit v1.9.1