Normalize e-mail addresses
authoradamch <adamch>
Thu, 22 Nov 2007 21:12:47 +0000 (21:12 +0000)
committeradamch <adamch>
Thu, 22 Nov 2007 21:12:47 +0000 (21:12 +0000)
app.sml
init.sml
util.sig
util.sml

diff --git a/app.sml b/app.sml
index 117ae05..299feb5 100644 (file)
--- a/app.sml
+++ b/app.sml
@@ -169,7 +169,7 @@ fun searchPaypal paypal =
     C.map (getDb ()) mkAppRow ($`SELECT id, name, rname, gname, email, forward, uses, other, passwd, status, applied, ipaddr, confirmed, decided,
                                        msg, unix_passwd, paypal, checkout
                                 FROM MemberApp
-                                WHERE paypal = ^(C.stringToSql (Util.allLower paypal))
+                                WHERE paypal = ^(C.stringToSql (normEmail paypal))
                                   AND status = 2
                                   AND decided >= CURRENT_TIMESTAMP - INTERVAL '1 MONTH'
                                 ORDER BY applied`)
@@ -178,7 +178,7 @@ fun searchCheckout checkout =
     C.map (getDb ()) mkAppRow ($`SELECT id, name, rname, gname, email, forward, uses, other, passwd, status, applied, ipaddr, confirmed, decided,
                                        msg, unix_passwd, paypal, checkout
                                 FROM MemberApp
-                                WHERE checkout = ^(C.stringToSql (Util.allLower checkout))
+                                WHERE checkout = ^(C.stringToSql (normEmail checkout))
                                   AND status = 2
                                   AND decided >= CURRENT_TIMESTAMP - INTERVAL '1 MONTH'
                                 ORDER BY applied`)
index 4a696d1..4db7408 100644 (file)
--- a/init.sml
+++ b/init.sml
@@ -142,8 +142,8 @@ fun modUser (user : user) =
                            name = ^(C.stringToSql (#name user)), rname = ^(C.stringToSql (#rname user)),
                               bal = ^(C.intToSql (#bal user)), app = ^(C.intToSql (#app user)),
                               shares = ^(C.intToSql (#shares user)),
-                              paypal = ^(nullableToSql C.stringToSql (#paypal user)),
-                              checkout = ^(nullableToSql C.stringToSql (#checkout user))
+                              paypal = ^(nullableToSql (C.stringToSql o Util.normEmail) (#paypal user)),
+                              checkout = ^(nullableToSql (C.stringToSql o Util.normEmail) (#checkout user))
                            WHERE id = ^(C.intToSql (#id user))`))
     end
 
@@ -300,13 +300,13 @@ fun usersInAfs () =
 fun searchPaypal paypal =
     C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares, paypal, checkout
                                  FROM WebUser
-                                 WHERE paypal = ^(C.stringToSql paypal)
+                                 WHERE paypal = ^(C.stringToSql (normEmail paypal))
                                  ORDER BY name`)
     
 fun searchCheckout checkout =
     C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares, paypal, checkout
                                  FROM WebUser
-                                 WHERE checkout = ^(C.stringToSql checkout)
+                                 WHERE checkout = ^(C.stringToSql (normEmail checkout))
                                  ORDER BY name`)
 
 end
index 9c7b4fc..1f46916 100644 (file)
--- a/util.sig
+++ b/util.sig
@@ -31,4 +31,5 @@ sig
     val mem : ''a * ''a list -> bool
 
     val allLower : string -> string
+    val normEmail : string -> string
 end
index a0a649c..f1bdcbb 100644 (file)
--- a/util.sml
+++ b/util.sml
@@ -83,4 +83,8 @@ fun mem (x, ls) = List.exists (fn y => y = x) ls
 
 val allLower = CharVector.map Char.toLower
 
+fun normEmail s = case String.tokens Char.isSpace (allLower s) of
+                     s :: _ => s
+                   | [] => ""
+
 end