X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_minichat_conversation.erl;h=5cf9a0a62e4752cda14c0e1f26c044f0a74e2d48;hp=4d0b3a8574d4f64e816c78076e96c280c99f8c01;hb=85dc0facbc2b2de826978fac3768db7949a6b92f;hpb=455f79e2ab07847ea6697e51245288832ae9fede diff --git a/modules/erl/euphorik_minichat_conversation.erl b/modules/erl/euphorik_minichat_conversation.erl index 4d0b3a8..5cf9a0a 100755 --- a/modules/erl/euphorik_minichat_conversation.erl +++ b/modules/erl/euphorik_minichat_conversation.erl @@ -109,7 +109,7 @@ mise_en_forme_conversation(Messages) -> conversations_detailees(Racines, N, D, P) -> Conversations = map(fun({Racine, P_conv, Dernier}) -> conversation(Racine, N, Dernier, P_conv) end, Racines), Conversation_principale = resultat_transaction(transaction(fun() -> - Dernier_id = mnesia:last(minichat), + Dernier_id = mnesia:table_info(minichat, size), {CP, Plus} = conversation_principale(Dernier_id, Conversations, N, P), {[M || M <- CP, M > D], Plus} % filtre en fonction de D end)), @@ -142,18 +142,17 @@ conversation_principale(Id, Conversations, N, P) -> % @spec conversation_principale2(integer(), [integer()], integer(), integer()) -> [integer()] conversation_principale2(_, _, 0, _) -> []; -conversation_principale2('$end_of_table', _, _, _) -> +conversation_principale2(0, _, _, _) -> []; conversation_principale2(Id, Messages, N, S) -> - % traitement message par message (pas des plus performant :/) - Id_prev = mnesia:prev(minichat, Id), + % traitement message par message (pas des plus performant :/) Doit_etre_saute = any(fun(E) -> E == Id end, Messages), if Doit_etre_saute -> - conversation_principale2(Id_prev, Messages, N, S); % le message ne fait pas partie de la conversation + conversation_principale2(Id - 1, Messages, N, S); % le message ne fait pas partie de la conversation S =:= 0 -> - [Id | conversation_principale2(Id_prev, Messages, N - 1, S)]; % ok : le message fait partie de la conversation + [Id | conversation_principale2(Id - 1, Messages, N - 1, S)]; % ok : le message fait partie de la conversation true -> - conversation_principale2(Id_prev, Messages, N, S - 1) % on n'a pas encore atteint le début de la page + conversation_principale2(Id - 1, Messages, N, S - 1) % on n'a pas encore atteint le début de la page end.