diff options
Diffstat (limited to 'program')
| -rw-r--r-- | program/include/rcube_user.php | 22 | 
1 files changed, 16 insertions, 6 deletions
| 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];          } | 
