Index: trunk/wifidog-auth/wifidog/classes/User.php
===================================================================
--- trunk/wifidog-auth/wifidog/classes/User.php	(revision 1421)
+++ trunk/wifidog-auth/wifidog/classes/User.php	(revision 1428)
@@ -160,6 +160,7 @@
 
         $username_str = $db->escapeString($username);
+        $comparison = ($account_origin->getUsernamesCaseSensitive()? '=': 'ILike');
         $account_origin_str = $db->escapeString($account_origin->getId());
-        $db->execSqlUniqueRes("SELECT user_id FROM users WHERE username = '$username_str' AND account_origin = '$account_origin_str'", $user_info, false);
+        $db->execSqlUniqueRes("SELECT user_id FROM users WHERE username {$comparison} '$username_str' AND account_origin = '$account_origin_str'", $user_info, false);
 
         if ($user_info != null) {
@@ -182,5 +183,5 @@
 
         $usernameOrEmail_str = $db->escapeString($usernameOrEmail);
-        $db->execSqlUniqueRes("SELECT user_id FROM users WHERE username ILike '$usernameOrEmail_str' OR email ILike '$usernameOrEmail_str'", $user_info, false);
+        $db->execSqlUniqueRes("SELECT user_id FROM users WHERE username = '$usernameOrEmail_str' OR email ILike '$usernameOrEmail_str'", $user_info, false);
 
         if ($user_info != null) {
@@ -221,5 +222,5 @@
         $email_str = $db->escapeString($email);
         $account_origin_str = $db->escapeString($account_origin->getId());
-        $db->execSqlUniqueRes("SELECT user_id FROM users WHERE email = '$email_str' AND account_origin = '$account_origin_str'", $user_info, false);
+        $db->execSqlUniqueRes("SELECT user_id FROM users WHERE email ILike '$email_str' AND account_origin = '$account_origin_str'", $user_info, false);
 
         if ($user_info != null)
@@ -378,9 +379,10 @@
         if ($value != $this->getUsername()) {
             $db = AbstractDb::getObject();
+            $otherUser = User::getUserByUsernameAndOrigin($value, $this->getNetwork());
+            if (!is_null($otherUser)) {
+                throw new exception(sprintf(_("Sorry, the username %s is not available"), $value));
+            }
             $value = $db->escapeString($value);
             $retval = @ $db->execSqlUpdate("UPDATE users SET username = '{$value}' WHERE user_id='{$this->id}'", false);
-            if (!$retval) {
-                throw new exception(sprintf(_("Sorry, the username %s is not available"), $value));
-            }
             $this->refresh();
         }
