Make webbw stats location configurable
[hcoop/portal.git] / init.sml
index 4a696d1..789fcbc 100644 (file)
--- a/init.sml
+++ b/init.sml
@@ -128,9 +128,11 @@ fun addUser (name, rname, bal, app, shares) =
        val db = getDb ()
        val id = nextSeq (db, "WebUserSeq")
     in
-       C.dml db ($`INSERT INTO WebUser (id, name, rname, bal, joined, app, shares)
+       C.dml db ($`INSERT INTO WebUser (id, name, rname, bal, joined, app, shares, paypal, checkout)
                    VALUES (^(C.intToSql id), ^(C.stringToSql name), ^(C.stringToSql rname), ^(C.intToSql bal),
-                           CURRENT_TIMESTAMP, ^(C.intToSql app), ^(C.intToSql shares))`);
+                           CURRENT_TIMESTAMP, ^(C.intToSql app), ^(C.intToSql shares),
+                           (SELECT paypal FROM MemberApp WHERE id = ^(C.intToSql app)),
+                           (SELECT checkout FROM MemberApp WHERE id = ^(C.intToSql app)))`);
        id
     end
 
@@ -142,14 +144,14 @@ 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
 
 fun byPledge () =
     C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares, paypal, checkout
-                                 FROM WebUser
+                                 FROM WebUserPaying
                                  WHERE shares > 1
                                  ORDER BY shares DESC, name`)
 
@@ -157,7 +159,7 @@ fun deleteUser id =
     C.dml (getDb ()) ($`DELETE FROM WebUser WHERE id = ^(C.intToSql id)`)
 
 fun validUsername name =
-    size name <= 10
+    size name <= 12
     andalso size name > 0
     andalso Char.isLower (String.sub (name, 0))
     andalso CharVector.all Char.isAlphaNum name
@@ -300,13 +302,19 @@ 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`)
+
+fun searchRealName realname =
+    C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares, paypal, checkout
+                                 FROM WebUser
+                                 WHERE rname ILIKE ^(C.stringToSql ("%" ^ realname ^ "%"))
                                  ORDER BY name`)
 
 end