ADD euphorik_bd:print_users/0 et /1 pour afficher les utilisateurs
[euphorik.git] / modules / erl / euphorik_bd.erl
index a6099fe..3f74689 100755 (executable)
@@ -19,7 +19,8 @@
    update_date_derniere_connexion/1,
    update_ip/2,
    update_pseudo_user/2,
-   users/0,
+   print_users/0,
+   print_users/1,
    user_by_cookie/1,   
    user_by_id/1,   
    user_by_login/1,
@@ -240,12 +241,36 @@ update_pseudo_user(UserId, Pseudo) ->
       end
    ).
    
-
-% Renvoie tous les users.
-users() ->
+   
+% Affiche N user trié par leur date de dernière connexion.
+% Attention : pas d'index sur ce champs (la date)   
+print_users(N) ->
    resultat_transaction(mnesia:transaction(fun() ->
-      e(q([E || E <- mnesia:table(user)]))
-   end)).   
+      C = cursor(q([E || E <- qlc:keysort(9, mnesia:table(user), [{order, descending}])])),
+      Users = qlc:next_answers(C, N),
+      lists:foreach(
+         fun(U) ->
+            #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = U,
+            {{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date),
+            io:format(
+               "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n",
+               [  
+                  Id,
+                  if Ek_master -> "*"; true -> "" end ++ Pseudo,
+                  "(" ++ Login ++ ")",
+                  Jour, Mois, Annee, Heure, Min
+               ]
+            )
+         end,
+         Users
+      ),
+      qlc:delete_cursor(C)
+   end)).
+   
+
+% Affiche tous les users.
+print_users() ->
+   print_users(all_remaining).
    
 
 % Est-ce qu'un utilisateur existe en fonction de son cookie ?
@@ -586,7 +611,7 @@ can_register(IP) ->
    )).
    
 
-% Renvoie tous les trolls.
+% Renvoie tous les trolls
 trolls() ->
    resultat_transaction(mnesia:transaction(
       fun() ->