alecpl
2011-09-06 d5ae9772c1427dbbcf1cb7582106dd1d542bc26e
- Fix username case-insensitivity issue in MySQL (#1488021)


4 files modified
13 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
SQL/mysql.initial.sql 4 ●●●● patch | view | raw | blame | history
SQL/mysql.update.sql 3 ●●●●● patch | view | raw | blame | history
program/include/rcube_user.php 5 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix username case-insensitivity issue in MySQL (#1488021)
- Addressbook Saved Searches
- Added spellchecker exceptions dictionary (shared or per-user)
- Added possibility to ignore words containing caps, numbers, symbols (spellcheck_ignore_* options)
SQL/mysql.initial.sql
@@ -20,9 +20,9 @@
CREATE TABLE `users` (
 `user_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `username` varchar(128) NOT NULL,
 `username` varchar(128) BINARY NOT NULL,
 `mail_host` varchar(128) NOT NULL,
 `alias` varchar(128) NOT NULL,
 `alias` varchar(128) BINARY NOT NULL,
 `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `last_login` datetime DEFAULT NULL,
 `language` varchar(5),
SQL/mysql.update.sql
@@ -147,6 +147,9 @@
-- Updates from version 0.6-stable
ALTER TABLE `users` CHANGE `alias` `alias` varchar(128) BINARY NOT NULL;
ALTER TABLE `users` CHANGE `username` `username` varchar(128) BINARY NOT NULL;
CREATE TABLE `dictionary` (
  `user_id` int(10) UNSIGNED DEFAULT NULL,
  `language` varchar(5) NOT NULL,
program/include/rcube_user.php
@@ -399,11 +399,8 @@
    {
        $dbh = rcmail::get_instance()->get_dbh();
        // use BINARY (case-sensitive) comparison on MySQL, other engines are case-sensitive
        $mod = preg_match('/^mysql/', $dbh->db_provider) ? 'BINARY' : '';
        // query for matching user name
        $query = "SELECT * FROM ".get_table_name('users')." WHERE mail_host = ? AND %s = $mod ?";
        $query = "SELECT * FROM ".get_table_name('users')." WHERE mail_host = ? AND %s = ?";
        $sql_result = $dbh->query(sprintf($query, 'username'), $host, $user);
        // query for matching alias