From 6a642d1a2e4029fd1462e68d43a55ca1b6351f01 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 07 Jun 2010 05:49:19 -0400
Subject: [PATCH] - support dynamic hostname variables in 'username_domain' option

---
 program/include/rcmail.php |    4 ++--
 config/main.inc.php.dist   |    5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 34a9763..991d757 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -180,6 +180,11 @@
 // Automatically add this domain to user names for login
 // Only for IMAP servers that require full e-mail addresses for login
 // Specify an array with 'host' => 'domain' values to support multiple hosts
+// Supported replacement variables:
+// %h - user's IMAP hostname
+// %n - http hostname ($_SERVER['SERVER_NAME'])
+// %d - domain (http hostname without the first part)
+// For example %n = mail.domain.tld, %d = domain.tld
 $rcmail_config['username_domain'] = '';
 
 // This domain will be used to form e-mail addresses of new users
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 20b7bf7..d644f4f 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -597,9 +597,9 @@
     // Check if we need to add domain
     if (!empty($config['username_domain']) && !strpos($username, '@')) {
       if (is_array($config['username_domain']) && isset($config['username_domain'][$host]))
-        $username .= '@'.$config['username_domain'][$host];
+        $username .= '@'.rcube_parse_host($config['username_domain'][$host]);
       else if (is_string($config['username_domain']))
-        $username .= '@'.$config['username_domain'];
+        $username .= '@'.rcube_parse_host($config['username_domain']);
     }
 
     // try to resolve email address from virtuser table

--
Gitblit v1.9.1