ADD election des trolls par un daemon chaque semaine
authorGreg Burri <greg.burri@gmail.com>
Sat, 17 May 2008 16:45:55 +0000 (16:45 +0000)
committerGreg Burri <greg.burri@gmail.com>
Sat, 17 May 2008 16:45:55 +0000 (16:45 +0000)
doc/installation.txt
doc/technique.txt
js/euphorik.js
modules/erl/euphorik_bd.erl
modules/erl/euphorik_daemon.erl
modules/erl/euphorik_minichat_conversation.erl
modules/erl/euphorik_protocole.erl
modules/erl/euphorik_requests.erl
modules/erl/old/euphorik_deamon.erl [deleted file]
modules/include/euphorik_defines.hrl
sessions/doc.session

index b5abb24..4f71285 100644 (file)
@@ -21,12 +21,13 @@ Voici les diff
          listen = 0.0.0.0\r
          docroot = /euphorik\r
          allowed_scripts = [yaws]\r
-         appmods = <request, euphorik_requests>\r
+         appmods = <request, euphorik_requests>
+         start_mod = euphorik_daemon\r
       </server>\r
    c) Editer '/etc/init.d/yaws' et remplacer cette ligne :\r
       script="$DAEMON -I $YAWS_ID $@"\r
       par celle ci :\r
-      script="$DAEMON --erlarg \"-smp auto\" --sname yaws --mnesiadir '\"/euphorik/BD\"' -I $YAWS_ID $@"\r
+      script="$DAEMON --sname yaws --mnesiadir \"/euphorik/BD\" -I $YAWS_ID $@"\r
       FIXME : trouver une méthode plus élégante.\r
 \r
 3. Créer la base de donnée\r
index 0f63fc0..1d45db1 100644 (file)
@@ -5,16 +5,7 @@ Euphorik - doc technique
 Sequences :
    * Chargement d'une page\r
    \r
-=== Client ===\r
-Etats :\r
-   Un client peut avoir trois états\r
-      * Non Identifie -> Enregistre, Identifie\r
-         Etat initial.\r
-      * Identifie -> Enregistre, Non Identifie\r
-         Nécessaire (et automatique) pour pouvoir poster des messages.\r
-      * Enregistre -> Non Identifie\r
-         Nécessaire pour pouvoir poster des trolls et gérer un profile.
-
+=== Client ===
 == pageMinichat.js ==
 === Classes ===
    * Messages
index 5a15c00..29e85ad 100755 (executable)
@@ -939,7 +939,8 @@ $(document).ready(
       
       initialiserListeStyles(client)
 
-      // TODO : pourquoi $(document).unload ne fonctionne pas ?
+      // FIXME : ne fonctionne pas sous opera
+      // voir : http://dev.jquery.com/ticket/2892#preview
       $(window).unload(function(){client.flush()})
       
       $("#menu .minichat").click(function(){ pages.afficherPage("minichat") })
index 7fac81d..6efd76b 100755 (executable)
@@ -21,6 +21,7 @@
    update_pseudo_user/2,
    print_users/0,
    print_users/1,
+   print_user/1,
    user_by_cookie/1,   
    user_by_id/1,   
    user_by_login/1,
@@ -67,9 +68,7 @@
    % utiles :
    resultat_transaction/1\r
 ]).
-
 -import(qlc, [e/1, e/2, q/1, cursor/1]).\r
-\r
 -include("../include/euphorik_bd.hrl").
 -include("../include/euphorik_defines.hrl").\r
 -include_lib("stdlib/include/qlc.hrl").\r
@@ -250,28 +249,48 @@ print_users(N) ->
       Users = qlc:next_answers(C, N),
       lists:foreach(
          fun(U) ->
-            #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = U,
-            {{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date),
-            io:format(
-               "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n",
-               [  
-                  Id,
-                  if Ek_master -> "*"; true -> "" end ++ Pseudo,
-                  "(" ++ Login ++ ")",
-                  Jour, Mois, Annee, Heure, Min
-               ]
-            )
+            print_user(U)
          end,
          Users
       ),
       qlc:delete_cursor(C)
    end)).
    
-
+   
 % Affiche tous les users.
 print_users() ->
    print_users(all_remaining).
    
+   
+print_user(User) when is_record(User, user) ->
+   #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = User,
+   {{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date),
+   io:format(
+      "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n",
+      [  
+         Id,
+         if Ek_master -> "*"; true -> "" end ++ Pseudo,
+         "(" ++ Login ++ ")",
+         Jour, Mois, Annee, Heure, Min
+      ]
+   );
+% Affichage d'un user en fonction de son login
+print_user(Login) when is_list(Login) ->
+   case user_by_login(Login) of
+      {ok, User} ->
+         print_user(User);
+      _ ->
+         {erreur, "Login pas trouvé : " ++ Login}
+   end;
+% Affichage d'un user en fonction de son id
+print_user(Id) when is_integer(Id) -> 
+   case user_by_id(Id) of 
+      {ok, User} ->
+         print_user(User);
+      _ ->
+         {erreur, "Id pas trouvé : " ++ integer_to_list(Id)}
+   end.
+   
 
 % Est-ce qu'un utilisateur existe en fonction de son cookie ?
 % Renvoie {ok, User} ou erreur
index f50affe..051e26d 100755 (executable)
@@ -1,24 +1,30 @@
-% Module tournant en background s'occupant periodiquement de certaines tâches.\r
-% Auteur : G.Burri\r
-% Date : 05.11.2007\r
+% Module tournant en background s'occupant periodiquement de certaines tâches :
+%  - Élection du prochain troll chaque semaine\r
+% Date : 05.11.2007
+% @author G.Burri\r
 \r
 -module(euphorik_daemon).
 -export([start/1]).
-
--include("../include/euphorik_defines.hrl").\r
+-include("../include/euphorik_defines.hrl").
 
 
 % Démarre le démon
-start(A) ->\r
-   loop(A).
-
-\r
-loop(A) ->
-   euphorik_bd:elire_troll(),
-   % 
-   \r
-   timer:sleep(1000),\r
-   loop(A).
-\r
-
+start(_A) ->\r
+   loop().
+   
+loop() ->
+   % on attend une minute de plus pour prevenir une dérive négative
+   timer:sleep(1000 * trunc(temps_prochaine_election() + 60)),
+   euphorik_bd:elire_troll(),\r
+   loop().
+   
+   
+% Renvoie le nombre de seconde qu'il reste jusque au prochain lundi à l'heure donnée (l'heure est sur 24heures)
+% 86400 est le nombre de seconde dans un jour
+temps_prochaine_election() ->
+   {Date, {H,M,S}} = calendar:local_time(),
+   Delta = (?JOUR_ELECTION_TROLL - 1) * 86400 + ?HEURE_ELECTION_TROLL * 60 * 60
+   -((calendar:day_of_the_week(Date) - 1) * 86400 + H * 60 * 60 + M * 60 + S),
+   % attention au cas où les deux dates (maintenant et la date d'élection) ne se trouvent pas dans la même semaine.
+   if Delta =< 0 -> Delta + 7 * 86400; true -> Delta end.
 
index 2530327..1e76e40 100755 (executable)
 -export([\r
    conversations/4\r
 ]).
-
 -include("euphorik_bd.hrl").
 -include_lib("stdlib/include/qlc.hrl").
-
 -import(lists, [reverse/1, any/2, map/2, sublist/3, filter/2]).
 -import(euphorik_bd, [resultat_transaction/1]).
 -import(qlc, [e/1, q/1, keysort/3]).
index cf1fbbc..08624ae 100755 (executable)
@@ -17,8 +17,7 @@
    mod_troll/1,
    del_troll/1,
    erreur/1
-]).\r
-
+]).
 -include_lib("xmerl/include/xmerl.hrl").
 -include("../include/euphorik_bd.hrl").\r
 -include("../include/euphorik_defines.hrl").\r
index edc0e17..f8dad51 100755 (executable)
@@ -9,7 +9,6 @@
    tester/0,\r
    out/1\r
 ]).\r
-\r
 -include_lib("xmerl/include/xmerl.hrl").\r
 -include_lib("yaws/include/yaws_api.hrl").
 
diff --git a/modules/erl/old/euphorik_deamon.erl b/modules/erl/old/euphorik_deamon.erl
deleted file mode 100755 (executable)
index a957475..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-% Module tournant en background s'occupant periodiquement de certaines tâches.\r
-% Auteur : G.Burri\r
-% Date : 05.11.2007\r
-\r
--module(euphorik_deamon).
--export([start/1]).\r
-\r
-% L'age max que peut avoir les fichier se trouvant dans le dossier 'tmp' (en second)\r
--define(AGE_MAX_TMP, 86400). % 24 heures\r
-
-% Démarre le démon
-start(A) ->\r
-   loop(A).
-\r
-\r
-loop(A) ->\r
-   verifier_tmp_captcha(),\r
-   timer:sleep(100000), %  attend 100 secondes\r
-   loop(A).
-\r
-
-% Vérifie le repertoire tmp où se trouve les captcha et efface les plus vieux.
-verifier_tmp_captcha() ->
-   ok.
-   
\ No newline at end of file
index 9be2226..03c7ff1 100755 (executable)
@@ -20,3 +20,8 @@
 -define(NB_MAX_TROLL_WAITING, 10).
 % chaque admin peut proposer 1 seul troll à la fois
 -define(NB_MAX_TROLL_WAITING_BY_USER, 2).
+
+
+% Le jour ainsi que l'heure à laquelle est élu un nouveau troll (lundi à 3 heure du mat)
+-define(JOUR_ELECTION_TROLL, 1). % 1 = lundi
+-define(HEURE_ELECTION_TROLL, 3). % 3 heure du matin
\ No newline at end of file
index 6b25f56..f576177 100755 (executable)
@@ -1,14 +1,17 @@
 # SciTE session file
 
-buffer.1.path=/home/gburri/projets/euphorik/doc/protocole2.txt
-buffer.1.position=1
+buffer.1.path=/home/gburri/projets/euphorik/doc/technique.txt
+buffer.1.position=572
 
-buffer.2.path=/home/gburri/projets/euphorik/doc/technique.txt
-buffer.2.position=1
+buffer.2.path=/home/gburri/projets/euphorik/doc/TODO.txt
+buffer.2.position=181
+buffer.2.current=1
 
-buffer.3.path=/home/gburri/projets/euphorik/doc/TODO.txt
-buffer.3.position=751
-buffer.3.current=1
+buffer.3.path=/home/gburri/projets/euphorik/doc/protocole3.txt
+buffer.3.position=248
 
-buffer.4.path=/home/gburri/projets/euphorik/doc/protocole3.txt
+buffer.4.path=/home/gburri/projets/euphorik/doc/description.txt
 buffer.4.position=1
+
+buffer.5.path=/home/gburri/projets/euphorik/doc/installation.txt
+buffer.5.position=1231