X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=scripts%2Flib%2Fcocanwiki.ml;h=4f21cc0d46a216c185f83447571085b52a1ee160;hb=65966a769fea12308cf5a1bccee53d80483ee444;hp=dfa44eb60e61d90a09af0d13595d1e6c0ef7a767;hpb=20923b33c08fccfca617b21935c4a4f6201593f8;p=cocanwiki.git diff --git a/scripts/lib/cocanwiki.ml b/scripts/lib/cocanwiki.ml index dfa44eb..4f21cc0 100644 --- a/scripts/lib/cocanwiki.ml +++ b/scripts/lib/cocanwiki.ml @@ -1,7 +1,7 @@ (* COCANWIKI - a wiki written in Objective CAML. * Written by Richard W.M. Jones . * Copyright (C) 2004 Merjis Ltd. - * $Id: cocanwiki.ml,v 1.1 2004/10/21 11:42:05 rich Exp $ + * $Id: cocanwiki.ml,v 1.3 2004/11/01 12:57:53 rich Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,17 +49,23 @@ type host_t = { hostname : string; type permissions_t = CanView | CanEdit | CanManageUsers | CanManageContacts | CanManageSite | CanEditGlobalCSS | CanImportMail +(* User preferences and other settings (some cannot be changed by the user). *) +type prefs_t = { + email : string option; (* Email address. *) + email_notify : bool; (* Email notification. *) +} + (* The "user object". *) type user_t = Anonymous (* Not logged in. *) - | User of int * string * permissions_t list - (* Userid, name, permissions. *) + | User of int * string * permissions_t list * prefs_t + (* Userid, name, perms, prefs. *) let test_permission {edit_anon = edit_anon; view_anon = view_anon} perm user = if perm = CanEdit && edit_anon then true else if perm = CanView && view_anon then true else match user with Anonymous -> false - | User (_, _, perms) -> List.mem perm perms + | User (_, _, perms, _) -> List.mem perm perms let can_edit host = test_permission host CanEdit let can_manage_users host = test_permission host CanManageUsers @@ -153,7 +159,8 @@ let register_script ?(restrict = []) ?(anonymous = true) run = dbh#prepare_cached "select u.id, u.name, u.can_edit, u.can_manage_users, u.can_manage_contacts, u.can_manage_site, - u.can_edit_global_css, u.can_import_mail + u.can_edit_global_css, u.can_import_mail, + u.email, u.email_notify from usercookies uc, users u where uc.cookie = ? and uc.userid = u.id and u.hostid = ?" in sth#execute [`String cookie; `Int hostid]; @@ -161,7 +168,8 @@ let register_script ?(restrict = []) ?(anonymous = true) run = [ `Int userid; `String name; `Bool can_edit; `Bool can_manage_users; `Bool can_manage_contacts; `Bool can_manage_site; - `Bool can_edit_global_css; `Bool can_import_mail ] -> + `Bool can_edit_global_css; `Bool can_import_mail; + (`Null | `String _) as email; `Bool email_notify ] -> (* Every logged in user can view. *) let perms = [CanView] in let perms = @@ -182,7 +190,14 @@ let register_script ?(restrict = []) ?(anonymous = true) run = let perms = if can_import_mail then CanImportMail :: perms else perms in - User (userid, name, perms) + (* Preferences. *) + let email = + match email with + `Null -> None + | `String email -> Some email in + let prefs = { email = email; + email_notify = email_notify; } in + User (userid, name, perms, prefs) | _ -> assert false) with Not_found -> Anonymous