]> matita.cs.unibo.it Git - helm.git/blobdiff - matitaB/matita/matitaAuthentication.ml
Matitaweb: added a function MatitaAuthentication.get_users returning
[helm.git] / matitaB / matita / matitaAuthentication.ml
index 86189fddf6ec54c8a20995c2b952b7271470e73a..7ae548058abea4efed9272e96645776ec3b03cc4 100644 (file)
@@ -43,6 +43,8 @@ let lookup_user uid = List.assoc uid !user_tbl
 
 let user_of_session sid = let res,_,_ = List.assoc sid !session_tbl in res
 
+let get_users () = List.map fst !user_tbl
+
 let create_session uid =
   let status = new MatitaEngine.status (Some uid) "cic:/matita" in
   let history = [status] in
@@ -136,19 +138,17 @@ let read_ft uid =
       [] 
 ;;
 
-let set_file_flag uid filename flag =
-  let filename = MatitaFilesystem.normalize_qfn filename in 
+let set_file_flag uid files_flags =
   let ft = read_ft uid in
-  let oldflag = 
-    try List.assoc filename ft
-    with Not_found -> MatitaFilesystem.MSynchronized
+  let files = List.map fst files_flags in
+  let ft = List.filter (fun (x,_) -> not (List.mem x files)) ft in
+  let ft' = List.fold_left (fun acc (filename,flag) ->  
+      let filename = MatitaFilesystem.normalize_qfn filename in 
+      try
+        (filename,HExtlib.unopt flag)::acc
+      with Failure _ -> acc) [] files_flags
   in
-  if oldflag <> MatitaFilesystem.MConflict 
-    then
-      let ft = (filename,flag)::
-        List.filter (fun (fn,_) -> fn <> filename) ft in
-      write_ft uid ft
-    else ()
+  write_ft uid (ft'@ft)
 ;;
 
 let add_user uid pw =