From fe2f0be4352ba0bc213a2c6d4dfcbbddea1a551c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 21 Aug 2012 04:50:14 -0400
Subject: [PATCH] Fix possible PHP warning, read default_folders using config->get() to support deprecated option name (default_imap_folders)

---
 program/include/rcube_user.php |   28 +++++++++++++++++-----------
 1 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php
index 24ded3d..29eb0f2 100644
--- a/program/include/rcube_user.php
+++ b/program/include/rcube_user.php
@@ -36,7 +36,7 @@
     /**
      * Holds database connection.
      *
-     * @var rcube_mdb2
+     * @var rcube_db
      */
     private $db;
 
@@ -397,15 +397,22 @@
      */
     static function query($user, $host)
     {
-        $dbh = rcube::get_instance()->get_dbh();
+        $dbh    = rcube::get_instance()->get_dbh();
+        $config = rcube::get_instance()->config;
 
         // query for matching user name
-        $query = "SELECT * FROM ".$dbh->table_name('users')." WHERE mail_host = ? AND %s = ?";
-        $sql_result = $dbh->query(sprintf($query, 'username'), $host, $user);
+        $sql_result = $dbh->query("SELECT * FROM " . $dbh->table_name('users')
+            ." WHERE mail_host = ? AND username = ?", $host, $user);
 
-        // query for matching alias
-        if (!($sql_arr = $dbh->fetch_assoc($sql_result))) {
-            $sql_result = $dbh->query(sprintf($query, 'alias'), $host, $user);
+        $sql_arr = $dbh->fetch_assoc($sql_result);
+
+        // username not found, try aliases from identities
+        if (empty($sql_arr) && $config->get('user_aliases') && strpos($user, '@')) {
+            $sql_result = $dbh->limitquery("SELECT u.*"
+                ." FROM " . $dbh->table_name('users') . " u"
+                ." JOIN " . $dbh->table_name('identities') . " i ON (i.user_id = u.user_id)"
+                ." WHERE email = ? AND del <> 1", 0, 1, $user);
+
             $sql_arr = $dbh->fetch_assoc($sql_result);
         }
 
@@ -436,7 +443,7 @@
         }
 
         $data = $rcube->plugins->exec_hook('user_create',
-	        array('user'=>$user, 'user_name'=>$user_name, 'user_email'=>$user_email, 'host'=>$host));
+            array('user'=>$user, 'user_name'=>$user_name, 'user_email'=>$user_email, 'host'=>$host));
 
         // plugin aborted this operation
         if ($data['abort'])
@@ -449,11 +456,10 @@
 
         $dbh->query(
             "INSERT INTO ".$dbh->table_name('users').
-            " (created, last_login, username, mail_host, alias, language)".
-            " VALUES (".$dbh->now().", ".$dbh->now().", ?, ?, ?, ?)",
+            " (created, last_login, username, mail_host, language)".
+            " VALUES (".$dbh->now().", ".$dbh->now().", ?, ?, ?)",
             strip_newlines($user),
             strip_newlines($host),
-            strip_newlines($data['alias'] ? $data['alias'] : $user_email),
             strip_newlines($data['language'] ? $data['language'] : $_SESSION['language']));
 
         if ($user_id = $dbh->insert_id('users')) {

--
Gitblit v1.9.1