From 112c54ffbbfd65d2d76ce2526b77407f7fb067b8 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 28 Feb 2008 17:59:02 -0500 Subject: [PATCH] Fix imap host selection in install script --- installer/rcube_install.php | 22 +++++++++++++++++++++- installer/config.php | 6 +----- installer/test.php | 13 +++++++++---- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/installer/config.php b/installer/config.php index 97052c8..9d22c28 100644 --- a/installer/config.php +++ b/installer/config.php @@ -250,14 +250,10 @@ <div id="defaulthostlist"> <?php -$default_hosts = (array)$RCI->getprop('default_host'); $text_imaphost = new textfield(array('name' => '_default_host[]', 'size' => 30)); $i = 0; -foreach ($default_hosts as $key => $name) { - if (empty($name)) - continue; - $host = is_numeric($key) ? $name : $key; +foreach ($RCI->get_hostlist() as $host) { echo '<div id="defaulthostentry'.$i.'">' . $text_imaphost->show($host); if ($i++ > 0) echo '<a href="#" onclick="removehostfield(this.parentNode);return false" class="removelink" title="Remove this entry">remove</a>'; diff --git a/installer/rcube_install.php b/installer/rcube_install.php index e02ee75..35054a1 100644 --- a/installer/rcube_install.php +++ b/installer/rcube_install.php @@ -98,7 +98,8 @@ */ function getprop($name, $default = '') { - $value = $_SERVER['REQUEST_METHOD'] == 'POST' ? $_POST["_$name"] : $this->config[$name]; + $value = $_SERVER['REQUEST_METHOD'] == 'POST' && + (isset($_POST["_$name"]) || $this->config_props[$name]) ? $_POST["_$name"] : $this->config[$name]; if ($name == 'des_key' && !isset($_REQUEST["_$name"])) $value = self::random_key(24); @@ -182,6 +183,25 @@ /** + * Return a list with all imap hosts configured + * + * @return array Clean list with imap hosts + */ + function get_hostlist() + { + $default_hosts = (array)$this->getprop('default_host'); + $out = array(); + + foreach ($default_hosts as $key => $name) { + if (!empty($name)) + $out[] = is_numeric($key) ? $name : $key; + } + + return $out; + } + + + /** * Display OK status * * @param string Test name diff --git a/installer/test.php b/installer/test.php index 62535ac..d83534b 100644 --- a/installer/test.php +++ b/installer/test.php @@ -238,9 +238,14 @@ <?php -$default_hosts = (array)$RCI->getprop('default_host'); -$select_imaphost = new select(array('name' => '_host', 'id' => 'imaphost')); -$select_imaphost->add(array_values($default_hosts)); +$default_hosts = $RCI->get_hostlist(); +if (!empty($default_hosts)) { + $host_field = new select(array('name' => '_host', 'id' => 'imaphost')); + $host_field->add($default_hosts); +} +else { + $host_field = new textfield(array('name' => '_host', 'id' => 'imaphost')); +} $user_field = new textfield(array('name' => '_user', 'id' => 'imapuser')); $pass_field = new passwordfield(array('name' => '_pass', 'id' => 'imappass')); @@ -251,7 +256,7 @@ <tbody> <tr> <td><label for="imaphost">Server</label></td> - <td><?php echo $select_imaphost->show($_POST['_host'] ? $_POST['_host'] : '0'); ?></td> + <td><?php echo $host_field->show($_POST['_host']); ?></td> </tr> <tr> <td>Port</td> -- Gitblit v1.9.1