X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=4e470993240cd4649307dd840e27f0c7d8fbc3a2;hp=634d5ff1fa2e537edd51133798004c859e72af86;hb=8bede29111bde3481ed8b3d6637c241c8d241544;hpb=3e001701b9e33b21a9587ada7fbe1f1e3fa178fb diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 634d5ff..4e47099 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -30,11 +30,12 @@ connect/1, reset/0, update/0, + restore/1, % users : nouveau_user/2, nouveau_user/3, - set_profile/11, + set_profile/10, update_date_derniere_connexion/1, update_ip/2, update_pseudo_user/2, @@ -191,8 +192,13 @@ update(?VERSION_BD) -> fini; update(Version) -> case mnesia:backup(mnesia:system_info(directory) ++ "/backup" ++ integer_to_list(Version)) of ok -> - patch(Version), - update(Version + 1); + case patch(Version) of + ok -> + mnesia:write(#proprietes{nom = version, valeur = Version + 1}), + update(Version + 1); + _ -> + erreur + end; {error, Raison} -> {error, lists:flatten(io_lib:format("Erreur de création du backup de la version ~w : ~w", [Version, Raison]))} end. @@ -202,6 +208,25 @@ update(Version) -> % dans BD/backups nommé "backup" où et le numéro de la version. % 1 -> 2 patch(1) -> + % traitement des users + mnesia:transform_table( + user, + fun({user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css, Nick_format, View_times, View_tooltips, Indice_flood, _Page_principale, Conversations, Ek_master, Last_ip}) -> + {user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css, Nick_format, View_times, View_tooltips, reverse, Indice_flood, lists:map(fun({C, _}) -> C end, Conversations), Ek_master, Last_ip} + end, + record_info(fields, user), + user + ), + mnesia:transform_table( + minichat, + fun({minichat, Id, Auteur_id, Date, Pseudo, Contenu, Troll_id}) -> + {minichat, Id, Auteur_id, Date, Pseudo, Contenu, Troll_id, Id} + end, + record_info(fields, minichat), + minichat + ), + % met à jour les racines des messages + TODO ! -> mnesia:foldl(...) ok. % 2 -> 3 %patch(2) -> @@ -236,7 +261,7 @@ nouveau_user(Login, Password, Cookie) -> % Mise à par Cookie les autres peuvent être undefined ce qui veut dire qu'ils ne seront pas modifié. -set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, View_times, View_tooltips, Page_principale, Conversations) -> +set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, View_times, View_tooltips, Conversations) -> if Nick_format =:= nick; Nick_format =:= login; Nick_format =:= nick_login -> resultat_transaction(mnesia:transaction( fun() -> @@ -257,7 +282,6 @@ set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, View_times nick_format = Nick_format, view_times = View_times, view_tooltips = View_tooltips, - page_principale = if is_integer(Page_principale), Page_principale > 0 -> Page_principale; true -> User#user.page_principale end, conversations = if is_list(Conversations) -> Conversations; true -> User#user.conversations end }, mnesia:write(User_modifie), @@ -627,6 +651,19 @@ repond_a(M_id) -> end )). + +% Renvoie les message qui repondent à M_id +reponses(M_id) -> + resultat_transaction(mnesia:transaction( + fun() -> + e(q( + [M || E <- mnesia:table(reponse_minichat), + M <- mnesia:table(minichat), + E#reponse_minichat.cible =:= M_id, + M#minichat.id =:= E#reponse_minichat.repondant]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + end + )). + % Est-ce que le message Id_mess est une réponse d'une message de Id_user ? est_une_reponse_a_user(Id_user, Id_mess) ->