summaryrefslogtreecommitdiff
path: root/program/include/main.inc
diff options
context:
space:
mode:
Diffstat (limited to 'program/include/main.inc')
-rw-r--r--program/include/main.inc44
1 files changed, 40 insertions, 4 deletions
diff --git a/program/include/main.inc b/program/include/main.inc
index 55336fd30..9cf1f6767 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -413,6 +413,34 @@ function rcmail_set_locale($lang)
}
+// auto-select IMAP host based on the posted login information
+function rcmail_autoselect_host()
+ {
+ global $CONFIG;
+
+ $host = isset($_POST['_host']) ? get_input_value('_host', RCUBE_INPUT_POST) : $CONFIG['default_host'];
+ if (is_array($host))
+ {
+ list($user, $domain) = explode('@', get_input_value('_user', RCUBE_INPUT_POST));
+ if (!empty($domain))
+ {
+ foreach ($host as $imap_host => $mail_domains)
+ if (is_array($mail_domains) && in_array($domain, $mail_domains))
+ {
+ $host = $imap_host;
+ break;
+ }
+ }
+
+ // take the first entry if $host is still an array
+ if (is_array($host))
+ $host = array_shift($host);
+ }
+
+ return $host;
+ }
+
+
// perfom login to the IMAP server and to the webmail service
function rcmail_login($user, $pass, $host=NULL)
{
@@ -1732,14 +1760,22 @@ function rcmail_login_form($attrib)
$select_host = new select(array('name' => '_host', 'id' => 'rcmloginhost'));
foreach ($CONFIG['default_host'] as $key => $value)
- $select_host->add($value, (is_numeric($key) ? $value : $key));
+ {
+ if (!is_array($value))
+ $select_host->add($value, (is_numeric($key) ? $value : $key));
+ else
+ {
+ unset($select_host);
+ break;
+ }
+ }
- $fields['host'] = $select_host->show($_POST['_host']);
+ $fields['host'] = isset($select_host) ? $select_host->show($_POST['_host']) : null;
}
else if (!strlen($CONFIG['default_host']))
{
- $input_host = new textfield(array('name' => '_host', 'id' => 'rcmloginhost', 'size' => 30));
- $fields['host'] = $input_host->show($_POST['_host']);
+ $input_host = new textfield(array('name' => '_host', 'id' => 'rcmloginhost', 'size' => 30));
+ $fields['host'] = $input_host->show($_POST['_host']);
}
$form_name = strlen($attrib['form']) ? $attrib['form'] : 'form';