From 35acfc18499e355c02732b37d616b1451b4c0ca7 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Fri, 21 May 2004 18:07:23 +0000
Subject: [PATCH] - Patch #7723 by Roderik: added strtolower()s to make
 PostgreSQL behave like MySQL and to be more 'forgiving' for users logging in
 on a PostgreSQL powered Drupal site.

---
 modules/user.module      | 10 +++++-----
 modules/user/user.module | 10 +++++-----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/modules/user.module b/modules/user.module
index af3025893682..d244ae975048 100644
--- a/modules/user.module
+++ b/modules/user.module
@@ -34,7 +34,7 @@ function user_load($array = array()) {
       $query .= "u.$key = '". md5($value) ."' AND ";
     }
     else {
-      $query .= "u.$key = '". check_query($value) ."' AND ";
+      $query .= "LOWER(u.$key) = '". strtolower(check_query($value)) ."' AND ";
     }
   }
   $result = db_query_range("SELECT u.* FROM {users} u WHERE $query u.status < 3", 0, 1);
@@ -379,10 +379,10 @@ function user_file_download($file) {
 function user_search($keys) {
   $find = array();
 
-  // Replace wildcards with mysql wildcards
+  // Replace wildcards with (MySQL/PostgreSQL wildcards
   $keys = str_replace("*", "%", $keys);
 
-  $result = db_query_range("SELECT * FROM {users} WHERE name LIKE '%%%s%%'", $keys, 0, 20);
+  $result = db_query_range("SELECT * FROM {users} WHERE LOWER(name) LIKE '%%%s%%'", strtolower($keys), 0, 20);
   while ($account = db_fetch_object($result)) {
     $find[] = array("title" => $account->name, "link" => (strstr(request_uri(), "admin") ? url("admin/user/edit/$account->uid") : url("user/view/$account->uid")), 'user' => $account->name);
   }
@@ -828,11 +828,11 @@ function user_pass($edit = array()) {
   global $base_url;
 
   if ($edit['name']) {
-    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND name = '%s'", $edit['name']));
+    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND LOWER(name) = '%s'", strtolower($edit['name'])));
     if (!$account) $error = t("Sorry. The username <i>%s</i> is not recognized.", array("%s" => $edit['name']));
   }
   else if ($edit['mail']) {
-    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND mail = '%s'", $edit['mail']));
+    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND LOWER(mail) = '%s'", strtolower($edit['mail'])));
     if (!$account) $error = t("Sorry. The e-mail address <i>%s</i> is not recognized.", array("%s" => $edit['mail']));
   }
   if ($account) {
diff --git a/modules/user/user.module b/modules/user/user.module
index af3025893682..d244ae975048 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -34,7 +34,7 @@ function user_load($array = array()) {
       $query .= "u.$key = '". md5($value) ."' AND ";
     }
     else {
-      $query .= "u.$key = '". check_query($value) ."' AND ";
+      $query .= "LOWER(u.$key) = '". strtolower(check_query($value)) ."' AND ";
     }
   }
   $result = db_query_range("SELECT u.* FROM {users} u WHERE $query u.status < 3", 0, 1);
@@ -379,10 +379,10 @@ function user_file_download($file) {
 function user_search($keys) {
   $find = array();
 
-  // Replace wildcards with mysql wildcards
+  // Replace wildcards with (MySQL/PostgreSQL wildcards
   $keys = str_replace("*", "%", $keys);
 
-  $result = db_query_range("SELECT * FROM {users} WHERE name LIKE '%%%s%%'", $keys, 0, 20);
+  $result = db_query_range("SELECT * FROM {users} WHERE LOWER(name) LIKE '%%%s%%'", strtolower($keys), 0, 20);
   while ($account = db_fetch_object($result)) {
     $find[] = array("title" => $account->name, "link" => (strstr(request_uri(), "admin") ? url("admin/user/edit/$account->uid") : url("user/view/$account->uid")), 'user' => $account->name);
   }
@@ -828,11 +828,11 @@ function user_pass($edit = array()) {
   global $base_url;
 
   if ($edit['name']) {
-    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND name = '%s'", $edit['name']));
+    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND LOWER(name) = '%s'", strtolower($edit['name'])));
     if (!$account) $error = t("Sorry. The username <i>%s</i> is not recognized.", array("%s" => $edit['name']));
   }
   else if ($edit['mail']) {
-    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND mail = '%s'", $edit['mail']));
+    $account = db_fetch_object(db_query("SELECT uid, name, mail FROM {users} WHERE status = 1 AND LOWER(mail) = '%s'", strtolower($edit['mail'])));
     if (!$account) $error = t("Sorry. The e-mail address <i>%s</i> is not recognized.", array("%s" => $edit['mail']));
   }
   if ($account) {
-- 
GitLab