| ACCEPTED
| REJECTED
| ADDED
+ | BEING_ADDED
val statusFromInt =
fn 0 => CONFIRMING
| 2 => ACCEPTED
| 3 => REJECTED
| 4 => ADDED
+ | 5 => BEING_ADDED
| _ => raise C.Sql "Bad status"
val statusToInt =
| ACCEPTED => 2
| REJECTED => 3
| ADDED => 4
+ | BEING_ADDED => 5
fun statusFromSql v = statusFromInt (C.intFromSql v)
fun statusToSql s = C.intToSql (statusToInt s)
SOME row => mkAppRow row
| NONE => raise Fail "Membership application not found"
-fun listApps status =
+fun listApps statuses =
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 status = ^(statusToSql status)
+ WHERE status IN (^(String.concatWith "," (map statusToSql statuses)))
AND NOT (status = 2 AND decided < CURRENT_TIMESTAMP - INTERVAL '1 MONTH')
ORDER BY applied`)
Mail.mwrite (mail, "To: ");
Mail.mwrite (mail, #email entry);
Mail.mwrite (mail, "\n");
- Mail.mwrite (mail, Util.readFile "/home/hcoop/portal/welcome.txt");
+ Mail.mwrite (mail, Util.readFile (Config.staticFilesRoot ^ "welcome.txt"));
Mail.mwrite (mail, msg);
OS.Process.isSuccess (Mail.mclose mail)
end
-fun add app =
+fun preAdd app =
let
val _ = C.dml (getDb ()) ($`UPDATE MemberApp
- SET status = 3
+ SET status = 5
WHERE id = ^(C.intToSql app)`)
val app = lookupApp app
+ in
+ ()
+ end
- val outf = TextIO.openOut (Config.passwordFiles ^ #name app)
+fun add app =
+ let
+ val appR = lookupApp app
in
- TextIO.output (outf, #unix_passwd app);
- TextIO.closeOut outf
+ ignore (C.dml (getDb ()) ($`UPDATE MemberApp
+ SET status = 4
+ WHERE id = ^(C.intToSql app)`))
end
fun welcome app =
Mail.mwrite (mail, "To: ");
Mail.mwrite (mail, #email app);
Mail.mwrite (mail, "\n");
- Mail.mwrite (mail, Util.readFile "/home/hcoop/portal/paid.txt");
+ Mail.mwrite (mail, Util.readFile (Config.staticFilesRoot ^ "paid.txt"));
ignore (Mail.mclose mail)
end
before TextIO.closeIn inf
end
-fun readTosBody () = readFile "/home/hcoop/public_html/tos.body.html"
-fun readTosAgree () = readFile "/home/hcoop/public_html/tos.agree.html"
-fun readTosMinorAgree () = readFile "/home/hcoop/public_html/tos.agree.minor.html"
+fun readTosBody () = readFile (Config.staticFilesRoot ^ "tos.body.html")
+fun readTosAgree () = readFile (Config.staticFilesRoot ^ "tos.agree.html")
+fun readTosMinorAgree () = readFile (Config.staticFilesRoot ^ "tos.agree.minor.html")
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`)
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`)