From 789e5988aaebb78d368b137b98169ec1e616159c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 26 Nov 2012 10:08:40 +0100
Subject: Clarify rcube::get_user_name() usage, add rcube::get_user_email()

---
 program/lib/Roundcube/rcube.php          | 16 +++++++++++++++-
 program/lib/Roundcube/rcube_ldap.php     |  2 +-
 program/lib/Roundcube/rcube_user.php     |  7 ++++++-
 program/steps/settings/edit_identity.inc |  5 +++--
 program/steps/settings/save_identity.inc |  5 +++--
 5 files changed, 28 insertions(+), 7 deletions(-)

(limited to 'program')

diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php
index 0eed6cf67..27e10a918 100644
--- a/program/lib/Roundcube/rcube.php
+++ b/program/lib/Roundcube/rcube.php
@@ -1203,8 +1203,22 @@ class rcube
         if (is_object($this->user)) {
             return $this->user->get_username();
         }
+        else if (isset($_SESSION['username'])) {
+            return $_SESSION['username'];
+        }
+    }
 
-        return null;
+
+    /**
+     * Getter for logged user email (derived from user name not identity).
+     *
+     * @return string User email address
+     */
+    public function get_user_email()
+    {
+        if (is_object($this->user)) {
+            return $this->user->get_username('mail');
+        }
     }
 }
 
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php
index 34e37e3b9..e3ba8c29f 100644
--- a/program/lib/Roundcube/rcube_ldap.php
+++ b/program/lib/Roundcube/rcube_ldap.php
@@ -273,7 +273,7 @@ class rcube_ldap extends rcube_addressbook
             }
 
             // Get the pieces needed for variable replacement.
-            if ($fu = $rcube->get_user_name())
+            if ($fu = $rcube->get_user_email())
                 list($u, $d) = explode('@', $fu);
             else
                 $d = $this->mail_domain;
diff --git a/program/lib/Roundcube/rcube_user.php b/program/lib/Roundcube/rcube_user.php
index 7bd73e08c..864f2e098 100644
--- a/program/lib/Roundcube/rcube_user.php
+++ b/program/lib/Roundcube/rcube_user.php
@@ -86,12 +86,17 @@ class rcube_user
     /**
      * Build a user name string (as e-mail address)
      *
-     * @param  string $part Username part (empty or 'local' or 'domain')
+     * @param  string $part Username part (empty or 'local' or 'domain', 'mail')
      * @return string Full user name or its part
      */
     function get_username($part = null)
     {
         if ($this->data['username']) {
+            // return real name
+            if (!$part) {
+                return $this->data['username'];
+            }
+
             list($local, $domain) = explode('@', $this->data['username']);
 
             // at least we should always have the local part
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index f82169017..39076f408 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -42,8 +42,9 @@ else {
     rcmail_overwrite_action('identities');
     return;
   }
-  else if (IDENTITIES_LEVEL == 1)
-    $IDENTITY_RECORD['email'] = $RCMAIL->user->get_username();
+  else if (IDENTITIES_LEVEL == 1) {
+    $IDENTITY_RECORD['email'] = $RCMAIL->get_user_email();
+  }
 }
 
 
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc
index 8515c44f1..d579ee61f 100644
--- a/program/steps/settings/save_identity.inc
+++ b/program/steps/settings/save_identity.inc
@@ -107,8 +107,9 @@ if ($_POST['_iid'])
 // insert a new identity record
 else if (IDENTITIES_LEVEL < 2)
 {
-  if (IDENTITIES_LEVEL == 1)
-    $save_data['email'] = $RCMAIL->user->get_username();
+  if (IDENTITIES_LEVEL == 1) {
+    $save_data['email'] = $RCMAIL->get_user_email();
+  }
 
   $plugin = $RCMAIL->plugins->exec_hook('identity_create', array('record' => $save_data));
   $save_data = $plugin['record'];
-- 
cgit v1.2.3