REPORT de la branche 1.1 : 477->494
[euphorik.git] / modules / erl / euphorik_minichat_conversation.erl
index 4d0b3a8..5cf9a0a 100755 (executable)
@@ -109,7 +109,7 @@ mise_en_forme_conversation(Messages) ->
 conversations_detailees(Racines, N, D, P) ->   \r
    Conversations = map(fun({Racine, P_conv, Dernier}) -> conversation(Racine, N, Dernier, P_conv) end, Racines),\r
    Conversation_principale = resultat_transaction(transaction(fun() ->
-      Dernier_id = mnesia:last(minichat),\r
+      Dernier_id = mnesia:table_info(minichat, size),\r
       {CP, Plus} = conversation_principale(Dernier_id, Conversations, N, P),\r
       {[M || M <- CP, M > D], Plus} % filtre en fonction de D\r
    end)),\r
@@ -142,18 +142,17 @@ conversation_principale(Id, Conversations, N, P) ->
 % @spec conversation_principale2(integer(), [integer()], integer(), integer()) -> [integer()]\r
 conversation_principale2(_, _, 0, _) ->\r
    [];
-conversation_principale2('$end_of_table', _, _, _) ->
+conversation_principale2(0, _, _, _) ->\r
    [];\r
 conversation_principale2(Id, Messages, N, S) ->
-   % traitement message par message (pas des plus performant :/)
-   Id_prev = mnesia:prev(minichat, Id),\r
+   % traitement message par message (pas des plus performant :/)\r
    Doit_etre_saute = any(fun(E) -> E == Id end, Messages),\r
    if  Doit_etre_saute -> \r
-         conversation_principale2(Id_prev, Messages, N, S); % le message ne fait pas partie de la conversation\r
+         conversation_principale2(Id - 1, Messages, N, S); % le message ne fait pas partie de la conversation\r
       S =:= 0 ->\r
-         [Id | conversation_principale2(Id_prev, Messages, N - 1, S)]; % ok : le message fait partie de la conversation\r
+         [Id | conversation_principale2(Id - 1, Messages, N - 1, S)]; % ok : le message fait partie de la conversation\r
       true ->\r
-         conversation_principale2(Id_prev, Messages, N, S - 1) % on n'a pas encore atteint le début de la page\r
+         conversation_principale2(Id - 1, Messages, N, S - 1) % on n'a pas encore atteint le début de la page\r
       end.\r
    \r
    \r