X-Git-Url: http://git.hcoop.net/hcoop/portal.git/blobdiff_plain/466c59448d7bb1abee78e7f3f231be194e73b5ea..3b54a6660b3834d3c47d86cdcf6d039609772a26:/init.sml diff --git a/init.sml b/init.sml index b4d537b..a44bc35 100644 --- a/init.sml +++ b/init.sml @@ -159,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 @@ -174,30 +174,6 @@ fun dateString () = [d] => C.stringFromSql d | r => rowError ("dateString", r) -fun grandfatherUsers () = - let - val db = getDb () - - fun mkApp [id, name, rname] = - let - val id = C.intFromSql id - val name = C.stringFromSql name - val rname = C.stringFromSql rname - - val aid = nextSeq (db, "MemberAppSeq") - in - ignore (C.dml db ($`INSERT INTO MemberApp (id, name, rname, gname, email, forward, uses, other, - passwd, status, applied, confirmed, decided, msg) - VALUES (^(C.intToSql aid), ^(C.stringToSql name), ^(C.stringToSql rname), - NULL, '^name^(emailSuffix)', FALSE, 'GRANDFATHERED', 'GRANDFATHERED', - 'GRANDFATHERED', 4, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP, 'GRANDFATHERED')`)); - ignore (C.dml db ($`UPDATE WebUser SET app = ^(C.intToSql aid) WHERE id = ^(C.intToSql id)`)) - end - in - C.app db mkApp "SELECT id, name, rname FROM WebUser WHERE app IS NULL" - end - type node = {id : int, name : string, descr : string, debian : string} fun mkNodeRow [id, name, descr, debian] = @@ -208,6 +184,7 @@ fun mkNodeRow [id, name, descr, debian] = fun listNodes () = C.map (getDb ()) mkNodeRow ($`SELECT id, name, descr, debian FROM WebNode + WHERE id IN (SELECT id FROM ActiveWebNode) ORDER BY name`) fun nodeName id = @@ -254,12 +231,6 @@ fun tokensForked () = OS.Process.exit OS.Process.success) | _ => ignore (OS.Process.system "/usr/bin/tokens >/tmp/tokens.parent") -fun unmigratedUsers () = - List.filter (fn user => - (ignore (Posix.SysDB.getpwnam (#name user)); - false) - handle OS.SysErr _ => true) (listActiveUsers ()) - fun usersDiff (ls1, ls2) = {onlyInFirst = List.filter (fn x => not (Util.mem (x, ls2))) ls1, onlyInSecond = List.filter (fn x => not (Util.mem (x, ls1))) ls2} @@ -311,4 +282,10 @@ fun searchCheckout 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 "%") || trim (both ^(C.stringToSql " ") from ^(C.stringToSql realname)) || ^(C.stringToSql "%")) + ORDER BY name`) + end