projects
/
euphorik.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MOD avancement dans l'extraction d'une conversation entière
[euphorik.git]
/
modules
/
erl
/
euphorik_protocole.erl
diff --git
a/modules/erl/euphorik_protocole.erl
b/modules/erl/euphorik_protocole.erl
index
d99e4cc
..
c15ada1
100755
(executable)
--- a/
modules/erl/euphorik_protocole.erl
+++ b/
modules/erl/euphorik_protocole.erl
@@
-113,21
+113,14
@@
profile(
{nick_format, Nick_format_str},
{view_times, View_times},
{view_tooltips, View_tooltips},
{nick_format, Nick_format_str},
{view_times, View_times},
{view_tooltips, View_tooltips},
- {main_page, Main_page},
{conversations, {array, Conversations_json}}
]
) ->
{conversations, {array, Conversations_json}}
]
) ->
- % est-ce que les messages auquel on répond existent ?
- Conversations = lists:foldr(
- fun({struct, [{root, Root}, {page, Page}]}, Acc) ->
- Message_existe = euphorik_bd:message_existe(Root),
- if Message_existe ->
- [{Root, Page} | Acc];
- true ->
- Acc
- end
+ % virage des messages qui n'existent pas
+ Conversations = lists:dropwhile(
+ fun(Message_id) ->
+ not euphorik_bd:message_existe(Message_id)
end,
end,
- [],
Conversations_json
),
% TODO : pas très beau, mieux vaut construire un #user
Conversations_json
),
% TODO : pas très beau, mieux vaut construire un #user
@@
-141,7
+134,6
@@
profile(
list_to_atom(Nick_format_str),
View_times,
View_tooltips,
list_to_atom(Nick_format_str),
View_times,
View_tooltips,
- Main_page,
Conversations) of
ok ->
json_reponse_ok();
Conversations) of
ok ->
json_reponse_ok();
@@
-250,7
+242,6
@@
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id
case euphorik_minichat_conversation:conversations(Racines_conversations, Message_count, Last_message_id, Main_page) of
vide ->
wait_event_bd_page_chat(),
case euphorik_minichat_conversation:conversations(Racines_conversations, Message_count, Last_message_id, Main_page) of
vide ->
wait_event_bd_page_chat(),
- % TODO : l'appel est-il bien tail-recursive ?
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id, Main_page, Troll_id);
Conversations ->
% accrochez-vous ca va siouxer ;)
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id, Main_page, Troll_id);
Conversations ->
% accrochez-vous ca va siouxer ;)
@@
-279,6
+270,7
@@
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id
{nick, Mess#minichat.pseudo},
{login, User_mess#user.login},
{content, Mess#minichat.contenu},
{nick, Mess#minichat.pseudo},
{login, User_mess#user.login},
{content, Mess#minichat.contenu},
+ {root, Mess#minichat.racine_id},
{answer_to, {array, lists:map(
fun(Id_mess) ->
{ok, M} = euphorik_bd:message_by_id(Id_mess),
{answer_to, {array, lists:map(
fun(Id_mess) ->
{ok, M} = euphorik_bd:message_by_id(Id_mess),
@@
-318,7
+310,7
@@
wait_event_bd_page_chat() ->
% Après 60 minutes de connexion, le client doit donc reétablir une connexion
after 1000 * 60 * 60 ->
timeout
% Après 60 minutes de connexion, le client doit donc reétablir une connexion
after 1000 * 60 * 60 ->
timeout
- end.
+ end.
% Attent un événement concernant la page admin
% Attent un événement concernant la page admin
@@
-392,7
+384,7
@@
put_message(
if Strip_content =:= [] ->
erreur("Message vide");
true ->
if Strip_content =:= [] ->
erreur("Message vide");
true ->
- %
TODO
: non-atomique (update_pseudo+nouveau_message)
+ %
attention
: non-atomique (update_pseudo+nouveau_message)
euphorik_bd:update_pseudo_user(User#user.id, Nick),
case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of
{erreur, R} -> erreur("Impossible d'ajouter un nouveau message. Raison : " ++ R);
euphorik_bd:update_pseudo_user(User#user.id, Nick),
case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of
{erreur, R} -> erreur("Impossible d'ajouter un nouveau message. Raison : " ++ R);
@@
-555,7
+547,7
@@
unban_ip(
) ->
case euphorik_bd:user_by_cookie(Cookie) of
{ok, #user{ek_master = true}} ->
) ->
case euphorik_bd:user_by_cookie(Cookie) of
{ok, #user{ek_master = true}} ->
- euphorik_bd:deban(unserialize_ip(IP)),
+ euphorik_bd:deban(
euphorik_common:
unserialize_ip(IP)),
json_reponse_ok();
_ ->
erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
json_reponse_ok();
_ ->
erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
@@
-577,7
+569,7
@@
list_banned_ips(
fun({IP, T, Users}) ->
{struct,
[
fun({IP, T, Users}) ->
{struct,
[
- {ip, serialize_ip(IP)},
+ {ip,
euphorik_common:
serialize_ip(IP)},
{remaining_time, format_minutes(T)},
{users, {array, lists:map(
fun({Pseudo, Login}) ->
{remaining_time, format_minutes(T)},
{users, {array, lists:map(
fun({Pseudo, Login}) ->
@@
-611,17
+603,6
@@
erreur(Message) ->
]
}.
]
}.
-
-serialize_ip(IP) ->
- lists:flatten(io_lib:format("~w.~w.~w.~w", tuple_to_list(IP))).
-
-
-unserialize_ip(IP) ->
- case io_lib:fread("~d.~d.~d.~d", IP) of
- {ok, [A, B, C, D], []} -> {A, B, C, D};
- _ -> erreur
- end.
-
% Formatage de minutes.
% par exemple : "1min", "45min", "1h23min", "1jour 2h34min"
% Formatage de minutes.
% par exemple : "1min", "45min", "1h23min", "1jour 2h34min"
@@
-678,22
+659,7
@@
json_reponse_login_ok(User) ->
{nick_format, atom_to_list(User#user.nick_format)},
{view_times, User#user.view_times},
{view_tooltips, User#user.view_tooltips},
{nick_format, atom_to_list(User#user.nick_format)},
{view_times, User#user.view_times},
{view_tooltips, User#user.view_tooltips},
- {main_page, User#user.page_principale},
- {conversations,
- {array,
- lists:map(
- fun(C) ->
- {struct,
- [
- {root, element(1, C)},
- {page, element(2, C)}
- ]
- }
- end,
- User#user.conversations
- )
- }
- },
- {ek_master, User#user.ek_master}
+ {conversations, {array, User#user.conversations } },
+ {ek_master, User#user.ek_master}
]
}.
]
}.