summaryrefslogtreecommitdiff
path: root/roundcubemail
diff options
context:
space:
mode:
authorthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2008-06-24 13:36:19 +0000
committerthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2008-06-24 13:36:19 +0000
commit297eccc7b1b5d3fff4a17ece3011a56bb4bdb2b2 (patch)
treed1ee2b7d8ba1fe711608f0403e54ea365fd18a46 /roundcubemail
parent69ad5ecee02492cc06b7f3b9d729928237e26bea (diff)
Really fix host selection from login form
git-svn-id: https://svn.roundcube.net/trunk@1573 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail')
-rw-r--r--roundcubemail/program/include/rcmail.php22
1 files changed, 17 insertions, 5 deletions
diff --git a/roundcubemail/program/include/rcmail.php b/roundcubemail/program/include/rcmail.php
index 057cabd04..7f4474886 100644
--- a/roundcubemail/program/include/rcmail.php
+++ b/roundcubemail/program/include/rcmail.php
@@ -474,12 +474,20 @@ class rcmail
public function autoselect_host()
{
$default_host = $this->config->get('default_host');
- $host = empty($default_host) ? get_input_value('_host', RCUBE_INPUT_POST) : $default_host;
+ $host = null;
- if (is_array($host)) {
+ if (is_array($default_host)) {
+ $post_host = get_input_value('_host', RCUBE_INPUT_POST);
+
+ // direct match in default_host array
+ if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) {
+ $host = $post_host;
+ }
+
+ // try to select host by mail domain
list($user, $domain) = explode('@', get_input_value('_user', RCUBE_INPUT_POST));
if (!empty($domain)) {
- foreach ($host as $imap_host => $mail_domains) {
+ foreach ($default_host as $imap_host => $mail_domains) {
if (is_array($mail_domains) && in_array($domain, $mail_domains)) {
$host = $imap_host;
break;
@@ -488,8 +496,12 @@ class rcmail
}
// take the first entry if $host is still an array
- if (is_array($host))
- $host = array_shift($host);
+ if (empty($host)) {
+ $host = array_shift($default_host);
+ }
+ }
+ else if (empty($default_host)) {
+ $host = get_input_value('_host', RCUBE_INPUT_POST);
}
return $host;