X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=d84b0fbb598683d018b680462b957de48c09a2c0;hp=ed07a566437e650de9cb1ab64136001cb190a46e;hb=7ade6a3495cd5c74c964df5ed794e110e770ed9d;hpb=c01d54fd6a515a6f2860e3b18ff574afa5caa83b diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index ed07a56..d84b0fb 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -33,7 +33,7 @@ % users : nouveau_user/2, nouveau_user/3, - set_profile/10, + set_profile/11, update_date_derniere_connexion/1, update_ip/2, update_pseudo_user/2, @@ -47,6 +47,7 @@ user_by_mess/1, toggle_ek_master/1, css_from_user_cookie/1, + is_ek_master_from_cookie/1, % messages :e nouveau_message/3, @@ -61,6 +62,8 @@ reponses/0, parents/1, enfants/1, + parents_id/1, + enfants_id/1, est_une_reponse_a_user/2, a_repondu_a_message/2, possede_message/2, @@ -190,8 +193,11 @@ 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, Conversations) -> - if Nick_format =:= nick; Nick_format =:= login; Nick_format =:= nick_login -> +% Conversation est de type [{int(), bool()}] où l'entier est la racine, le booléen indique si la conversation est réduite ou non +% Ostentatious_master peut valoir invisible, light ou heavy +set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, View_times, View_tooltips, Conversations, Ostentatious_master) -> + if Nick_format =:= nick; Nick_format =:= login; Nick_format =:= nick_login, + Ostentatious_master =:= invisible; Ostentatious_master =:= light; Ostentatious_master =:= heavy -> resultat_transaction(mnesia:transaction( fun() -> case user_by_cookie(Cookie) of @@ -211,7 +217,8 @@ set_profile(Cookie, Login, Password, Pseudo, Email, Css, Nick_format, View_times nick_format = Nick_format, view_times = View_times, view_tooltips = View_tooltips, - conversations = if is_list(Conversations) -> Conversations; true -> User#user.conversations end + conversations = if is_list(Conversations) -> Conversations; true -> User#user.conversations end, + ostentatious_master = Ostentatious_master }, mnesia:write(User_modifie), ok @@ -394,6 +401,13 @@ css_from_user_cookie(Cookie) -> undefined end. + +is_ek_master_from_cookie(Cookie) -> + case user_by_cookie(Cookie) of + {ok, #user{ek_master = true}} -> true; + _ -> false + end. + user_by_login_password(Login, Password) -> resultat_transaction(mnesia:transaction( @@ -619,6 +633,36 @@ enfants(M_id) -> end )). + +% Renvoie les parents d'un message M (les messages auquels répond M) +% ordrés du plus petit au plus grand.. +% @spec parents_id(integer()) -> [integer()] +parents_id(M) -> + resultat_transaction(mnesia:transaction(fun() -> + e( + qlc:sort( + q([E#reponse_minichat.cible || E <- mnesia:table(reponse_minichat), E#reponse_minichat.repondant =:= M]), + [{order, ascending}] + ), + [{tmpdir, ?KEY_SORT_TEMP_DIR}] + ) + end)). + + +% Renvoie les id des enfants d'un message M (les messages qui répondent à M) +% ordrés du plus petit au plus grand. +% @spec enfants_id(integer()) -> [integer()] +enfants_id(M) -> + 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)). + % 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) ->