summaryrefslogtreecommitdiff
path: root/program/include
diff options
context:
space:
mode:
Diffstat (limited to 'program/include')
-rw-r--r--program/include/rcube_user.php37
1 files changed, 26 insertions, 11 deletions
diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php
index ec107282a..b1263ca02 100644
--- a/program/include/rcube_user.php
+++ b/program/include/rcube_user.php
@@ -5,7 +5,7 @@
| program/include/rcube_user.inc |
| |
| This file is part of the RoundCube Webmail client |
- | Copyright (C) 2005-2009, RoundCube Dev. - Switzerland |
+ | Copyright (C) 2005-2010, RoundCube Dev. - Switzerland |
| Licensed under the GNU GPL |
| |
| PURPOSE: |
@@ -62,15 +62,30 @@ class rcube_user
/**
* Build a user name string (as e-mail address)
*
- * @return string Full user name
+ * @param string Username part (empty or 'local' or 'domain')
+ * @return string Full user name or its part
*/
- function get_username()
+ function get_username($part = null)
{
if ($this->data['username']) {
- if (!strpos($this->data['username'], '@'))
- return $this->data['username'] . '@' . $this->data['mail_host'];
+ list($local, $domain) = explode('@', $this->data['username']);
+
+ // at least we should always have the local part
+ if ($part == 'local') {
+ return $local;
+ }
+ // if no domain was provided use the default if available
+ if (empty($domain))
+ $domain = $this->data['mail_host'];
+
+ if ($part == 'domain') {
+ return $domain;
+ }
+
+ if (!empty($domain))
+ return $local . '@' . $domain;
else
- return $this->data['username'];
+ return $local;
}
return false;
@@ -86,14 +101,14 @@ class rcube_user
{
if (!empty($this->language))
$prefs = array('language' => $this->language);
-
+
if ($this->ID && $this->data['preferences'])
$prefs += (array)unserialize($this->data['preferences']);
-
+
return $prefs;
}
-
-
+
+
/**
* Write the given user prefs to the user's record
*
@@ -484,5 +499,5 @@ class rcube_user
return empty($plugin['email']) ? NULL : $plugin['email'];
}
-
+
}