summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobin <robin@208e9e7b-5314-0410-a742-e7e81cd9613c>2006-11-16 14:36:14 +0000
committerrobin <robin@208e9e7b-5314-0410-a742-e7e81cd9613c>2006-11-16 14:36:14 +0000
commit6c200f126ce06e9df405c249f3630d10f296d6e0 (patch)
tree43d81751dfaca4d02c633d7a7359f03b5b8185da
parentab0c3752e00dbd413862f08c8c191bdb7fbb3c26 (diff)
Fetch all identities if virtuser_query is used; limitations can be done in SQL.
git-svn-id: https://svn.roundcube.net/trunk@371 208e9e7b-5314-0410-a742-e7e81cd9613c
-rw-r--r--roundcubemail/program/include/main.inc35
1 files changed, 21 insertions, 14 deletions
diff --git a/roundcubemail/program/include/main.inc b/roundcubemail/program/include/main.inc
index 676883305..da449c64c 100644
--- a/roundcubemail/program/include/main.inc
+++ b/roundcubemail/program/include/main.inc
@@ -550,21 +550,28 @@ function rcmail_create_user($user, $host)
$user_name = $user!=$user_email ? $user : '';
// try to resolve the e-mail address from the virtuser table
- if (!empty($CONFIG['virtuser_query']))
- {
- $sql_result = $DB->query(preg_replace('/%u/', $user, $CONFIG['virtuser_query']));
- if ($sql_arr = $DB->fetch_array($sql_result))
- $user_email = $sql_arr[0];
+ if (!empty($CONFIG['virtuser_query']) &&
+ ($sql_result = $DB->query(preg_replace('/%u/', $user, $CONFIG['virtuser_query']))) &&
+ ($DB->num_rows()>0))
+ while ($sql_arr = $DB->fetch_array($sql_result))
+ {
+ $DB->query("INSERT INTO ".get_table_name('identities')."
+ (user_id, del, standard, name, email)
+ VALUES (?, 0, 1, ?, ?)",
+ $user_id,
+ $user_name,
+ preg_replace('/^@/', $user . '@', $sql_arr[0]));
+ }
+ else
+ {
+ // also create new identity records
+ $DB->query("INSERT INTO ".get_table_name('identities')."
+ (user_id, del, standard, name, email)
+ VALUES (?, 0, 1, ?, ?)",
+ $user_id,
+ $user_name,
+ $user_email);
}
-
- // also create new identity records
- $DB->query("INSERT INTO ".get_table_name('identities')."
- (user_id, del, standard, name, email)
- VALUES (?, 0, 1, ?, ?)",
- $user_id,
- $user_name,
- $user_email);
-
// get existing mailboxes
$a_mailboxes = $IMAP->list_mailboxes();