X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=bef8b1f3a754050bdd6f48a71ac094149805f4db;hp=80130d009b6a3233de9ca1e4d54fc1677c0f5d97;hb=c6a3cf5c036c651fbe9d4d7c0e0ce34d991d3509;hpb=9aec6848a87dcccac15aea762cc6d5bb18ff731a diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 80130d0..bef8b1f 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -24,6 +24,10 @@ -module(euphorik_bd). -export([ + % texte : + get_texte/1, + get_texte/2, + % users : nouveau_user/2, nouveau_user/4, @@ -39,7 +43,7 @@ css_from_user_cookie/1, is_ek_master_from_cookie/1, - % messages :e + % messages : nouveau_message/3, nouveau_message_sys/1, nouveau_message_sys/2, @@ -85,6 +89,20 @@ -include_lib("stdlib/include/qlc.hrl"). +get_texte(Id) -> + get_texte(Id, fr). + + +% TODO : généraliser la langue +get_texte(Id, _Lang = fr) -> + resultat_transaction(mnesia:transaction(fun() -> + case mnesia:read({texte, Id}) of + [#texte{fr = Texte}] -> Texte; + _ -> "Message " ++ integer_to_list(Id) ++ " unknown" + end + end)). + + % Ajoute un nouveau user et le renvoie nouveau_user(Cookie, Profile) -> F = fun() -> @@ -285,7 +303,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) -> {erreur, "Un ou plusieurs messages introuvable"}; true -> % comparaison entre la date du dernier poste et maintenant (gestion du flood) - Delta = delta_date_ms(Auteur#user.date_derniere_connexion, now()), + Delta = euphorik_common:delta_date_ms(Auteur#user.date_derniere_connexion, now()), Nouvel_indice_flood = Auteur#user.indice_flood + if Delta =< ?DUREE_SPAM -> 2; true -> -1 end, Auteur_maj = Auteur#user{ indice_flood = if Nouvel_indice_flood > ?INDICE_SPAM_MAX -> ?INDICE_SPAM_MAX; Nouvel_indice_flood < 0 -> 0; true -> Nouvel_indice_flood end, @@ -294,7 +312,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) -> % est-ce que l'auteur à trop floodé ? if Auteur#user.indice_flood =/= ?INDICE_SPAM_MAX, Auteur_maj#user.indice_flood =:= ?INDICE_SPAM_MAX, Delta =< ?DUREE_BLOCAGE_SPAM -> mnesia:write(Auteur#user{indice_flood = Auteur_maj#user.indice_flood}), - nouveau_message_sys("''" ++ Profile#profile.pseudo ++ if Auteur#user.login =/= [] -> " (" ++ Auteur#user.login ++ ")"; true -> "" end ++ "'' est bloqué pour " ++ integer_to_list(trunc(?DUREE_BLOCAGE_SPAM / 1000)) ++ " secondes pour cause de flood."); + nouveau_message_sys("\"" ++ Profile#profile.pseudo ++ if Auteur#user.login =/= [] -> " (" ++ Auteur#user.login ++ ")"; true -> "" end ++ "\" est bloqué pour " ++ integer_to_list(trunc(?DUREE_BLOCAGE_SPAM / 1000)) ++ " secondes pour cause de flood."); Auteur#user.indice_flood =:= ?INDICE_SPAM_MAX, Delta =< ?DUREE_BLOCAGE_SPAM -> {erreur, "Bloqué pour cause de flood"}; true -> @@ -476,15 +494,6 @@ parents_id(M_id) -> % ordrés du plus petit au plus grand. % @spec enfants_id(integer()) -> [integer()] enfants_id(M_id) -> -% resultat_transaction(mnesia:transaction(fun() -> -% e( -% qlc:sort( -% q([E#reponse_minichat.repondant || E <- mnesia:table(reponse_minichat), E#reponse_minichat.cible =:= M]), -% [{order, ascending}] -% ), -% [{tmpdir, ?KEY_SORT_TEMP_DIR}] -% ) -% end)). resultat_transaction(mnesia:transaction(fun() -> case mnesia:index_read(reponse_minichat, M_id, #reponse_minichat.cible) of Enfants when is_list(Enfants) -> @@ -563,7 +572,7 @@ list_ban() -> e(qlc:keysort(1, q([ { IP#ip_table.ip, - delta_date_minute(date_plus_minutes(IP#ip_table.ban, IP#ip_table.ban_duration), Now), + euphorik_common:delta_date_minute(date_plus_minutes(IP#ip_table.ban, IP#ip_table.ban_duration), Now), e(q([{Profile#profile.pseudo, U#user.login} || #user{profile = Profile} = U <- mnesia:table(user), U#user.last_ip =:= IP#ip_table.ip]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) } || IP <- mnesia:table(ip_table), @@ -610,7 +619,7 @@ est_banni(User_id) -> if Echeance < Now -> % l'échéance est passée false; true -> - {true, delta_date_minute(Echeance, Now)} + {true, euphorik_common:delta_date_minute(Echeance, Now)} end; _ -> false @@ -639,7 +648,7 @@ can_register(IP) -> mnesia:write(#ip_table{ip = IP, date_last_try_register = now()}), true; [T] -> - Delta = delta_date_ms(T#ip_table.date_last_try_register, now()), + Delta = euphorik_common:delta_date_ms(T#ip_table.date_last_try_register, now()), if T#ip_table.nb_try_register =:= ?NB_MAX_FLOOD_REGISTER, Delta < ?TEMPS_BAN_FLOOD_REGISTER -> false; true -> @@ -807,15 +816,6 @@ message_id_associe(Troll_id) -> % Renvoie le résultat d'une transaction (en décomposant le tuple fournit) resultat_transaction({_, T}) -> T. - - -% Retourne la difference entre deux timestamp (erlang:now()) en miliseconde -delta_date_ms(D1, D2) -> - 1000000000 * abs(element(1, D1) - element(1, D2)) + 1000 * abs(element(2, D1) - element(2, D2)) + trunc(abs(element(3, D1) - element(3, D2)) / 1000). - -% Retourne la différence entre deux timestamp (erlang:now) en minutes -delta_date_minute(D1, D2) -> - trunc(delta_date_ms(D1, D2) / 1000 / 60). % Renvoie un nouvel id pour une table donnée