%
% @author G.Burri
+
-module(euphorik_bd_admin).
-export([
version_bd/0,
connect/1,
reset/0,
update/0,
- backup/1,
- restore/1,
+
+ backup_text/1,
+ restore_text/1,
toggle_ek_master/1,
print_users/0,
{attributes, record_info(fields, proprietes)},
{disc_copies, [node()]}
]),
+ mnesia:create_table(texte, [
+ {attributes, record_info(fields, texte)},
+ {disc_copies, [node()]}
+ ]),
mnesia:create_table(minichat, [
{attributes, record_info(fields, minichat)},
- {index, [auteur_id, troll_id]},
{disc_copies, [node()]}
]),
mnesia:create_table(reponse_minichat, [
{type, bag},
{attributes, record_info(fields, reponse_minichat)},
- {index, [cible]},
{disc_copies, [node()]}
]),
mnesia:create_table(user, [
{attributes, record_info(fields, user)},
- {index, [cookie, login]},
{disc_copies, [node()]}
]),
mnesia:create_table(ip_table, [
]),
mnesia:create_table(troll, [
{attributes, record_info(fields, troll)},
- {index, [date_post]},
{disc_copies, [node()]}
- ]).
+ ]),
+ creer_indexes().
+
+
+% mis à part car lors de la reprise de données avec load_textfile les indexes ne sont pas recréés
+creer_indexes() ->
+ mnesia:add_table_index(minichat, auteur_id),
+ mnesia:add_table_index(minichat, troll_id),
+ mnesia:add_table_index(reponse_minichat, cible),
+ mnesia:add_table_index(user, cookie),
+ mnesia:add_table_index(user, login),
+ mnesia:add_table_index(troll, date_post).
% Connexion à la base de données de yaws sur overnux
reset() ->
mnesia:clear_table(counter),
mnesia:clear_table(proprietes),
+ mnesia:clear_table(texte),
mnesia:clear_table(user),
mnesia:clear_table(reponse_minichat),
mnesia:clear_table(minichat),
User
end).
+
+peupler_texte() ->
+ mnesia:transaction(fun() ->
+ mnesia:write(#texte{ id = 10, fr = "Login déjà existant"}),
+ mnesia:write(#texte{ id = 20, fr = "Trop de register (flood)"}),
+ mnesia:write(#texte{ id = 30, fr = "Couple login/pass introuvable"}),
+ mnesia:write(#texte{ id = 40, fr = "Authentification impossible par cookie"}),
+ mnesia:write(#texte{ id = 50, fr = "Impossible de mettre à jour le profile"}),
+ mnesia:write(#texte{ id = 60, fr = "timeout"}),
+ mnesia:write(#texte{ id = 70, fr = "Page inconnue"}),
+ mnesia:write(#texte{ id = 80, fr = "Vous êtes banni pour encore ~w"}),
+ mnesia:write(#texte{ id = 90, fr = "Message vide"}),
+ mnesia:write(#texte{ id = 100, fr = "Impossible d'ajouter un nouveau message. Raison : ~w"}),
+ mnesia:write(#texte{ id = 110, fr = "Utilisateur inconnu"}),
+ mnesia:write(#texte{ id = 120, fr = "Il n'est pas possible de s'auto bannir"}),
+ mnesia:write(#texte{ id = 130, fr = "L'utilisateur est lui même un ekMaster"}),
+ mnesia:write(#texte{ id = 140, fr = "Utilisateur à bannir inconnu"}),
+ mnesia:write(#texte{ id = 150, fr = "Utilisateur inconnu ou non ek master"}),
+ mnesia:write(#texte{ id = 160, fr = "Utilisateur à slaper inconnu"}),
+ mnesia:write(#texte{ id = 170, fr = "Utilisateur inconnu ou non ek master"}),
+ mnesia:write(#texte{ id = 180, fr = "Le nombre de troll maximum par utilisateur est atteint : ~w "}),
+ mnesia:write(#texte{ id = 190, fr = "Le nombre de troll maximum en attente est atteint : ~w "}),
+ mnesia:write(#texte{ id = 200, fr = "Seul les ekMaster peuvent proposer des trolls"}),
+ mnesia:write(#texte{ id = 210, fr = "Vous ne posséder pas ce troll"}),
+ mnesia:write(#texte{ id = 220, fr = "Seul les ekMaster peuvent proposer des trolls"}),
+ mnesia:write(#texte{ id = 230, fr = "Seul les ekMaster peuvent connaitre la liste des ips bannies"})
+ end).
+
% Met à jour la bd, compare ?VERSION_BD avec la version dans la table 'proprietes'
% et exécute les patchs nécessaires.
% dans BD/backups nommé "backup<num>" où <num> et le numéro de la version.
% 1 -> 2
patch(1) ->
+ mnesia:create_table(texte, [
+ {attributes, record_info(fields, texte)},
+ {disc_copies, [node()]}
+ ]),
+ peupler_texte(),
% traitement des users
mnesia:transform_table(
user,
{aborted, Raison} -> {erreur, Raison};
{atomic, _} -> ok
end.
-% 2 -> 3
-%patch(2) ->
-
+
% Prend un chemin vers la feuille de style de type "css/1/euphorik.css"
% et renvoie "styles/1/euphorik.css"
-patch1_transforme_css(["css" | Reste]) ->
- ["styles" | Reste];
+patch1_transforme_css("css" ++ Reste) ->
+ "styles" ++ Reste;
patch1_transforme_css(F) ->
F.
).
% crée un backup dont le nom est fournit dans le repertoire backups qui se trouve dans le repertoire de la BD.
-backup(Nom) ->
- mnesia:backup(mnesia:system_info(directory) ++ "/backups/" ++ Nom).
+%backup(Nom) ->
+% mnesia:backup(mnesia:system_info(directory) ++ "/backups/" ++ Nom).
% Reviens à une version précédente de la base de données
% (les données insérées durant les versions plus récentes sont perdues)
-restore(N) ->
- mnesia:restore(fichier_backup(N), [{default_op, recreate_tables}]).
+%restore(N) ->
+% mnesia:restore(fichier_backup(N), [{default_op, recreate_tables}]).
% Renvoie le fichier (avec le chemin) correspondant à la version Version, par exemple : "/var/euphorik/BD/backups/backup1"
mnesia:system_info(directory) ++ "/backups/" ++ if is_integer(Version) -> "backup" ++ integer_to_list(Version); true -> Version end.
+backup_text(_) -> todo.
+restore_text(File) ->
+ mnesia:stop(),
+ mnesia:delete_schema([node()]),
+ mnesia:start(),
+ case mnesia:load_textfile(File) of
+ {atomic, ok} ->
+ update(),
+ creer_indexes();
+ Erreur ->
+ Erreur
+ end.
+
+
toggle_ek_master(User_id) ->
euphorik_bd:resultat_transaction(mnesia:transaction(
fun() ->