X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=904fc0a42bb154e2c61c472b746f690ec929c38e;hp=f5fa2580a07c321c6bb96852eade4317259819b6;hb=d1e6f8e7c86f1ee75e854266463541ffedb916c9;hpb=7892ce3f365cbb8b6cc7d7c3799e296fc5fff1a5 diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index f5fa258..904fc0a 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -25,9 +25,9 @@ -module(euphorik_bd). -export([ % users : - nouveau_user/3, + nouveau_user/2, nouveau_user/4, - set_profile/1, + set_profile/4, update_date_derniere_connexion/1, update_ip/2, update_pseudo_user/2, @@ -90,11 +90,10 @@ % Ajoute un nouveau user et le renvoie -% User_infos représente le profile de l'utilisateur, il est possibe qu'il soit vide -nouveau_user(Pseudo, Cookie, User_infos) -> +nouveau_user(Cookie, Profile) -> F = fun() -> Id = nouvel_id(user), - User = User_infos#user{id = Id, cookie = Cookie, pseudo = Pseudo, date_creation = now(), date_derniere_connexion = now()}, + User = #user{id = Id, cookie = Cookie, date_creation = now(), date_derniere_connexion = now(), profile = Profile}, mnesia:write(User), User end, @@ -102,32 +101,31 @@ nouveau_user(Pseudo, Cookie, User_infos) -> % Ajoute un nouveau user et le renvoie -% User_infos représente le profile de l'utilisateur, il est possibe qu'il soit vide -nouveau_user(Login, Password, Cookie, User_infos) -> +nouveau_user(Login, Password, Cookie, Profile) -> F = fun() -> Id = nouvel_id(user), - User = User_infos#user{id = Id, cookie = Cookie, pseudo = Login, login = Login, password = Password, date_creation = now(), date_derniere_connexion = now()}, + User = #user{id = Id, cookie = Cookie, login = Login, password = Password, date_creation = now(), date_derniere_connexion = now(), profile = Profile#profile{pseudo = login}}, mnesia:write(User), User end, resultat_transaction(mnesia:transaction(F)). -% Définit les données d'une utilisateur. -set_profile(User) -> +% Définit les données du profile d'une utilisateur. +set_profile(Cookie, Login, Password, Profile) -> resultat_transaction(mnesia:transaction( fun() -> - case user_by_cookie(User#user.cookie) of + case user_by_cookie(Cookie) of {ok, User_existant} -> - case user_by_login(User#user.login) of - {ok, U} when User#user.login =/= [], U#user.id =/= User_existant#user.id -> + case user_by_login(Login) of + {ok, U} when Login =/= [], U#user.id =/= User_existant#user.id -> login_deja_pris; _ -> mnesia:write( - User#user{ - id = User_existant#user.id, - login = if User_existant#user.login =:= [] -> User#user.login; true -> User_existant#user.login end, % on ne peut pas changer de login sauf si on en a pas ! - password = if User#user.password =:= [] -> User_existant#user.password; true -> User#user.password end + User_existant#user{ + login = if User_existant#user.login =:= [] -> Login; true -> User_existant#user.login end, % on ne peut pas changer de login sauf si on en a pas ! + password = if Password =:= [] -> User_existant#user.password; true -> Password end, + profile = Profile } ), ok @@ -171,8 +169,8 @@ update_pseudo_user(UserId, Pseudo) -> mnesia:transaction( fun() -> case mnesia:wread({user, UserId}) of - [User] when User#user.pseudo =/= Pseudo -> - mnesia:write(User#user{pseudo = Pseudo}); + [#user{profile = Profile} = User] when Profile#profile.pseudo =/= Pseudo -> + mnesia:write(User#user{profile = Profile#profile { pseudo = Pseudo } }); _ -> mnesia:abort("update_pseudo_user: User inconnu ou pseudo deja à jour") end @@ -218,7 +216,7 @@ print_users() -> 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, last_ip = IP} = User, + #user{id = Id, profile = #profile{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( % id pseudo (login) IP Jour Mois Année Heure Minute @@ -301,8 +299,8 @@ toggle_ek_master(User_id) -> % Renvoie une chaine représentant le cookie ou undefined si pas trouvé. css_from_user_cookie(Cookie) -> case user_by_cookie(Cookie) of - {ok, User} -> - User#user.css; + {ok, #user{profile = Profile}} -> + Profile#profile.css; _ -> undefined end. @@ -364,7 +362,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) -> _ -> % est-ce que l'auteur existe ? case e(q([E || E <- mnesia:table(user), E#user.id =:= Auteur_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of - [Auteur] -> + [#user{profile = Profile} = Auteur] -> if length(Repond_a) =/= length(Repond_A_ids) -> {erreur, "Un ou plusieurs messages introuvable"}; true -> @@ -378,7 +376,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("''" ++ Auteur#user.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 -> @@ -389,7 +387,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) -> id = Id, auteur_id = Auteur#user.id, date = now(), - pseudo = Auteur#user.pseudo, + pseudo = Profile#profile.pseudo, contenu = Mess, racine_id = if Racine_id =:= undefined -> Id; true -> Racine_id end }), @@ -419,11 +417,11 @@ nouveau_message_sys(Mess) -> % Création d'un message système lié à un troll. nouveau_message_sys(Mess, Troll_id) -> - {ok, Root} = user_by_id(0), + {ok, #user{profile = Profile}} = user_by_id(0), resultat_transaction(mnesia:transaction( fun() -> Id = nouvel_id(minichat), - mnesia:write(#minichat{id=Id, auteur_id=0, date=now(), pseudo=Root#user.pseudo, contenu=Mess, troll_id=Troll_id, racine_id=Id}), + mnesia:write(#minichat{id = Id, auteur_id = 0, date = now(), pseudo = Profile#profile.pseudo, contenu = Mess, troll_id = Troll_id, racine_id = Id}), Id end )). @@ -623,7 +621,7 @@ list_ban() -> { IP#ip_table.ip, delta_date_minute(date_plus_minutes(IP#ip_table.ban, IP#ip_table.ban_duration), Now), - e(q([{U#user.pseudo, U#user.login} || U <- mnesia:table(user), U#user.last_ip =:= IP#ip_table.ip]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + 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), if IP#ip_table.ban =:= undefined -> false; true -> date_plus_minutes(IP#ip_table.ban, IP#ip_table.ban_duration) > Now end