From f8f91aa1bafd8f80df5039fb42ca93b443fb9b31 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Wed, 26 Aug 2015 13:39:19 -0400
Subject: [PATCH] Installer: Add button to save generated config file in system temp directory (#1488149)

---
 CHANGELOG            |    1 +
 installer/config.php |   18 +++++++++++++-----
 installer/index.php  |    8 +++++++-
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 5511d7d..cfa2667 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Installer: Add button to save generated config file in system temp directory (#1488149)
 - Remove common subject prefixes Re:, Re[x]:, Re-x: on reply (#1490497)
 - Added GSSAPI/Kerberos authentication plugin - krb_authentication
 - Password: Allow temporarily disabling the plugin functionality with a notice
diff --git a/installer/config.php b/installer/config.php
index 5bdacf9..4882c1d 100644
--- a/installer/config.php
+++ b/installer/config.php
@@ -4,11 +4,6 @@
     die("Not allowed! Please open installer/index.php instead.");
 }
 
-?>
-<form action="index.php" method="post">
-<input type="hidden" name="_step" value="2" />
-<?php
-
 // register these boolean fields
 $RCI->bool_config_props = array(
   'ip_check' => 1,
@@ -36,10 +31,20 @@
      echo '</p>';
   }
   else {
+    if (($dir = sys_get_temp_dir()) && @is_writable($dir)) {
+      echo '<iframe name="getconfig" style="display:none"></iframe>';
+      echo '<form id="getconfig_form" action="index.php" method="get" target="getconfig" style="display:none">';
+      echo '<input name="_getconfig" value="2" /></form>';
+
+      $button_txt  = html::quote('Save in ' . $dir);
+      $save_button = '&nbsp;<input type="button" onclick="document.getElementById(\'getconfig_form\').submit()" value="' . $button_txt . '" />';
+    }
+
     echo '<p class="notice">Copy or download the following configuration and save it';
     echo ' as <tt><b>config.inc.php</b></tt> within the <tt>'.RCUBE_CONFIG_DIR.'</tt> directory of your Roundcube installation.<br/>';
     echo ' Make sure that there are no characters outside the <tt>&lt;?php ?&gt;</tt> brackets when saving the file.';
     echo '&nbsp;<input type="button" onclick="location.href=\'index.php?_getconfig=1\'" value="Download" />';
+    echo $save_button;
 
     if ($RCI->legacy_config) {
        echo '<br/><br/>Afterwards, please <b>remove</b> the old configuration files <tt>main.inc.php</tt> and <tt>db.inc.php</tt> from the config directory.';
@@ -61,6 +66,9 @@
 }
 
 ?>
+<form action="index.php" method="post">
+<input type="hidden" name="_step" value="2" />
+
 <fieldset>
 <legend>General configuration</legend>
 <dl class="configblock">
diff --git a/installer/index.php b/installer/index.php
index 3e74e68..052359c 100644
--- a/installer/index.php
+++ b/installer/index.php
@@ -66,7 +66,13 @@
 
 if (isset($_GET['_getconfig'])) {
   $filename = 'config.inc.php';
-  if (!empty($_SESSION['config'])) {
+  if (!empty($_SESSION['config']) && $_GET['_getconfig'] == 2) {
+    $path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $filename;
+    @unlink($path);
+    file_put_contents($path, $_SESSION['config']);
+    exit;
+  }
+  else if (!empty($_SESSION['config'])) {
     header('Content-type: text/plain');
     header('Content-Disposition: attachment; filename="'.$filename.'"');
     echo $_SESSION['config'];

--
Gitblit v1.9.1