diff options
Diffstat (limited to 'plugins/password/drivers')
| -rw-r--r-- | plugins/password/drivers/ldap.php | 18 | ||||
| -rw-r--r-- | plugins/password/drivers/sql.php | 9 |
2 files changed, 13 insertions, 14 deletions
diff --git a/plugins/password/drivers/ldap.php b/plugins/password/drivers/ldap.php index 0557f3e54..a8aba0f74 100644 --- a/plugins/password/drivers/ldap.php +++ b/plugins/password/drivers/ldap.php @@ -133,14 +133,16 @@ function search_userdn($rcmail) */ function substitute_vars($str) { - $str = str_replace('%login', $_SESSION['username'], $str); - - $parts = explode('@', $_SESSION['username']); - if (count($parts) == 2) - { - $str = str_replace('%name', $parts[0], $str); - $str = str_replace('%domain', $parts[1], $str); - } + $str = str_replace(array( + '%login', + '%name', + '%domain', + ), array( + $_SESSION['username'], + password::username_local(), + password::username_domain(), + ), $str + ); return $str; } diff --git a/plugins/password/drivers/sql.php b/plugins/password/drivers/sql.php index 7e4907906..cb837edce 100644 --- a/plugins/password/drivers/sql.php +++ b/plugins/password/drivers/sql.php @@ -105,12 +105,9 @@ function password_save($curpass, $passwd) $sql = str_replace('%q', $db->quote($hash_curpass, 'text'), $sql); } - $user_info = explode('@', $_SESSION['username']); - if (count($user_info) >= 2) { - $sql = str_replace('%l', $db->quote($user_info[0], 'text'), $sql); - $sql = str_replace('%d', $db->quote($user_info[1], 'text'), $sql); - } - + // at least we should always have the local part + $sql = str_replace('%l', $db->quote(password::username_local(), 'text'), $sql); + $sql = str_replace('%d', $db->quote(password::username_domain(), 'text'), $sql); $sql = str_replace('%u', $db->quote($_SESSION['username'],'text'), $sql); $sql = str_replace('%h', $db->quote($_SESSION['imap_host'],'text'), $sql); $sql = str_replace('%p', $db->quote($passwd,'text'), $sql); |
