X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=b72d7a8c87046d0a66469686f1b7c4d9172488e1;hb=39d4d474dc011f29b3060729f7ff09f446093070;hp=6eaea54799fe097871126da45bddc19468437af4;hpb=016c2536b3d43dee91de0d13b597ad5525dc9214;p=euphorik.git diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 6eaea54..b72d7a8 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -57,7 +57,6 @@ messages/2, messages/3, message_by_id/1, - message_by_id_sans_transaction/1, messages_by_ids/1, message_existe/1, reponses/0, @@ -304,12 +303,19 @@ update_pseudo_user(UserId, Pseudo) -> % Affiche N user trié par leur date de dernière connexion. -print_users(N) -> +% Opt est une liste d'option d'affichage : +% * ekmaster : n'affiche que les admins +print_users(N, Opt) -> + AfficheQueLesEkMaster = lists:any(fun(O) -> O =:= ekmaster end, Opt), resultat_transaction(mnesia:transaction(fun() -> C = cursor( qlc:keysort( #user.date_derniere_connexion, - q([E || E <- mnesia:table(user)]), + if AfficheQueLesEkMaster -> + q([E || E <- mnesia:table(user), E#user.ek_master =:= true]); + true -> + q([E || E <- mnesia:table(user)]) + end, [{order, descending}] ), [{tmpdir, ?KEY_SORT_TEMP_DIR}] @@ -325,20 +331,25 @@ print_users(N) -> end)). +% Affiche tous les users. +print_users(Opt) -> + print_users(all_remaining, Opt). + % Affiche tous les users. print_users() -> - print_users(all_remaining). - + print_users(all_remaining, []). print_user(User) when is_record(User, user) -> - #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = User, + #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date, last_ip = IP} = User, {{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 pseudo (login) IP Jour Mois Année Heure Minute + "~4w : ~10.10..s(~10.10..s) ~s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n", [ Id, if Ek_master -> "*"; true -> "" end ++ Pseudo, - "(" ++ Login ++ ")", + Login, + euphorik_common:serialize_ip(IP), Jour, Mois, Annee, Heure, Min ] ); @@ -542,15 +553,13 @@ messages(Id, N, P) -> message_by_id(Id) -> resultat_transaction(mnesia:transaction( fun() -> - message_by_id_sans_transaction(Id) + case mnesia:read({minichat, Id}) of + [] -> erreur; + [M] -> + {ok, M#minichat{contenu = contenu_message(M)}} + end end )). -message_by_id_sans_transaction(Id) -> - case mnesia:read({minichat, Id}) of - [] -> erreur; - [M] -> - {ok, M#minichat{contenu = contenu_message(M)}} - end. % Renvoie le contenu d'un message donnée, à utiliser à l'intérieur d'une transaction. @@ -563,10 +572,11 @@ contenu_message(E) -> % Renvoie une liste de message (voir #minichat de euphorik_bd.hrl) à partir d'une liste d'id (Ids). +% TODO : optimisations ? serait-ce du O(n) ? +% Bon de toutes façons on s'en fout c'est pas utilisé :) messages_by_ids(Ids) -> resultat_transaction(mnesia:transaction( fun() -> - % TODO : optimisations ? serait-ce du O(n) ? e(qlc:keysort( #minichat.id, q([E || E <- mnesia:table(minichat), lists:any(fun(Id) -> Id =:= E#minichat.id end, Ids)]),