diff options
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | config/main.inc.php.dist | 3 | ||||
-rw-r--r-- | program/include/rcube_user.php | 22 |
3 files changed, 19 insertions, 7 deletions
@@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Support initial identity name from virtuser_query (#1484003) - Added message menu, removed Print and Source buttons - Added possibility to save message as .eml file (#1485861) - Added 1 minute interval in autosave options (#1485854) diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index e092db7a2..d7c27b0c3 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -87,7 +87,8 @@ $rcmail_config['virtuser_file'] = ''; // Query to resolve user names and e-mail addresses from the database // %u will be replaced with the current username for login. -// The query should select the user's e-mail address as first col +// The query should select the user's e-mail address as first column +// and optional identity name as second column $rcmail_config['virtuser_query'] = ''; // use this host for sending mails. diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php index fd256607b..c84652bb6 100644 --- a/program/include/rcube_user.php +++ b/program/include/rcube_user.php @@ -366,8 +366,8 @@ class rcube_user // try to resolve user in virtuser table and file if ($user_email != '' && !strpos($user, '@')) { - if ($email_list = self::user2email($user, false)) - $user_email = $email_list[0]; + if ($email_list = self::user2email($user, false, true)) + $user_email = is_array($email_list[0]) ? $email_list[0][0] : $email_list[0]; } $dbh->query( @@ -399,11 +399,20 @@ class rcube_user // create new identities records $standard = 1; - foreach ($email_list as $email) { + foreach ($email_list as $row) { + + if (is_array($row)) { + $email = $row[0]; + $name = $row[1] ? $row[1] : $user_name; + } else { + $email = $row; + $name = $user_name; + } + $plugin = $rcmail->plugins->exec_hook('create_identity', array('record' => array( 'login' => true, 'user_id' => $user_id, - 'name' => strip_newlines($user_name), + 'name' => strip_newlines($name), 'email' => $email, 'standard' => $standard))); @@ -461,9 +470,10 @@ class rcube_user * * @param string User name * @param boolean If true returns first found entry + * @param boolean If true returns email as array (email and name for identity) * @return mixed Resolved e-mail address string or array of strings */ - static function user2email($user, $first=true) + static function user2email($user, $first=true, $extended=false) { $result = array(); $rcmail = rcmail::get_instance(); @@ -474,7 +484,7 @@ class rcube_user $sql_result = $dbh->query(preg_replace('/%u/', $dbh->escapeSimple($user), $virtuser_query)); while ($sql_arr = $dbh->fetch_array($sql_result)) if (strpos($sql_arr[0], '@')) { - $result[] = $sql_arr[0]; + $result[] = ($extended && count($sql_arr) > 1) ? $sql_arr : $sql_arr[0]; if ($first) return $result[0]; } |