-+ Rez -> Rez
-+ end.
-+
-+sql_query_internal_silent(DBRef, Query) ->
-+ ?MYDEBUG("DOING: \"~s\"", [lists:append(Query)]),
-+ % TODO: use pquery?
-+ get_result(pgsql:squery(DBRef, Query)).
-+
-+get_result({ok, ["CREATE TABLE"]}) ->
-+ {updated, 1};
-+get_result({ok, ["DROP TABLE"]}) ->
-+ {updated, 1};
-+get_result({ok, ["ALTER TABLE"]}) ->
-+ {updated, 1};
-+get_result({ok,["DROP VIEW"]}) ->
-+ {updated, 1};
-+get_result({ok,["DROP FUNCTION"]}) ->
-+ {updated, 1};
-+get_result({ok, ["CREATE INDEX"]}) ->
-+ {updated, 1};
-+get_result({ok, ["CREATE FUNCTION"]}) ->
-+ {updated, 1};
-+get_result({ok, [{"SELECT", _Rows, Recs}]}) ->
-+ Fun = fun(Rec) ->
-+ list_to_tuple(
-+ lists:map(fun(Elem) when is_binary(Elem) ->
-+ binary_to_list(Elem);
-+ (Elem) when is_list(Elem) ->
-+ Elem;
-+ (Elem) when is_integer(Elem) ->
-+ integer_to_list(Elem);
-+ (Elem) when is_float(Elem) ->
-+ float_to_list(Elem);
-+ (Elem) when is_boolean(Elem) ->
-+ atom_to_list(Elem);
-+ (Elem) ->
-+ ?ERROR_MSG("Unknown element type ~p", [Elem]),
-+ Elem
-+ end, Rec))
-+ end,
-+ Res = lists:map(Fun, Recs),
-+ %{data, [list_to_tuple(Rec) || Rec <- Recs]};
-+ {data, Res};
-+get_result({ok, ["INSERT " ++ OIDN]}) ->
-+ [_OID, N] = string:tokens(OIDN, " "),
-+ {updated, list_to_integer(N)};
-+get_result({ok, ["DELETE " ++ N]}) ->
-+ {updated, list_to_integer(N)};
-+get_result({ok, ["UPDATE " ++ N]}) ->
-+ {updated, list_to_integer(N)};
-+get_result({ok, ["BEGIN"]}) ->
-+ {updated, 1};
-+get_result({ok, ["LOCK TABLE"]}) ->
-+ {updated, 1};
-+get_result({ok, ["ROLLBACK"]}) ->
-+ {updated, 1};
-+get_result({ok, ["COMMIT"]}) ->
-+ {updated, 1};
-+get_result({ok, ["SET"]}) ->
-+ {updated, 1};
-+get_result({ok, [{error, Error}]}) ->
-+ {error, Error};
-+get_result(Rez) ->
-+ {error, undefined, Rez}.
-+
---- mod_logdb_mnesia_old.erl.orig 2009-11-22 13:06:23.000000000 +0200
-+++ mod_logdb_mnesia_old.erl 2009-02-05 20:12:58.000000000 +0200
-@@ -0,0 +1,258 @@
-+%%%----------------------------------------------------------------------
-+%%% File : mod_logdb_mnesia_old.erl
-+%%% Author : Oleg Palij (mailto,xmpp:o.palij@gmail.com)
-+%%% Purpose : mod_logmnesia backend for mod_logdb (should be used only for copy_tables functionality)
-+%%% Version : trunk
-+%%% Id : $Id$
-+%%% Url : http://www.dp.uz.gov.ua/o.palij/mod_logdb/
-+%%%----------------------------------------------------------------------
-+
-+-module(mod_logdb_mnesia_old).
-+-author('o.palij@gmail.com').
-+
-+-include("ejabberd.hrl").
-+-include("jlib.hrl").
-+
-+-behaviour(gen_logdb).
-+
-+-export([start/2, stop/1,
-+ log_message/2,
-+ rebuild_stats/1,
-+ rebuild_stats_at/2,
-+ rebuild_stats_at1/2,
-+ delete_messages_by_user_at/3, delete_all_messages_by_user_at/3, delete_messages_at/2,
-+ get_vhost_stats/1, get_vhost_stats_at/2, get_user_stats/2, get_user_messages_at/3,
-+ get_dates/1,
-+ get_users_settings/1, get_user_settings/2, set_user_settings/3,
-+ drop_user/2]).
-+
-+-record(stats, {user, server, table, count}).
-+-record(msg, {to_user, to_server, to_resource, from_user, from_server, from_resource, id, type, subject, body, timestamp}).
-+
-+tables_prefix() -> "messages_".
-+% stats_table should not start with tables_prefix(VHost) !
-+% i.e. lists:prefix(tables_prefix(VHost), atom_to_list(stats_table())) must be /= true
-+stats_table() -> list_to_atom("messages-stats").
-+% table name as atom from Date
-+-define(ATABLE(Date), list_to_atom(tables_prefix() ++ Date)).
-+-define(LTABLE(Date), tables_prefix() ++ Date).
-+
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+%
-+% gen_logdb callbacks
-+%
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+start(_Opts, _VHost) ->
-+ case mnesia:system_info(is_running) of
-+ yes ->
-+ ok = create_stats_table(),
-+ {ok, ok};
-+ no ->
-+ ?ERROR_MSG("Mnesia not running", []),
-+ error;
-+ Status ->
-+ ?ERROR_MSG("Mnesia status: ~p", [Status]),
-+ error
-+ end.
-+
-+stop(_VHost) ->
-+ ok.
-+
-+log_message(_VHost, _Msg) ->
-+ error.
-+
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+%
-+% gen_logdb callbacks (maintaince)
-+%
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+rebuild_stats(_VHost) ->
-+ ok.
-+
-+rebuild_stats_at(VHost, Date) ->
-+ Table = ?LTABLE(Date),
-+ {Time, Value}=timer:tc(?MODULE, rebuild_stats_at1, [VHost, Table]),
-+ ?INFO_MSG("rebuild_stats_at ~p elapsed ~p sec: ~p~n", [Date, Time/1000000, Value]),
-+ Value.
-+rebuild_stats_at1(VHost, Table) ->
-+ CFun = fun(Msg, Stats) ->
-+ To = Msg#msg.to_user ++ "@" ++ Msg#msg.to_server,
-+ Stats_to = if
-+ Msg#msg.to_server == VHost ->
-+ case lists:keysearch(To, 1, Stats) of
-+ {value, {Who_to, Count_to}} ->
-+ lists:keyreplace(To, 1, Stats, {Who_to, Count_to + 1});
-+ false ->
-+ lists:append(Stats, [{To, 1}])
-+ end;
-+ true ->
-+ Stats
-+ end,
-+ From = Msg#msg.from_user ++ "@" ++ Msg#msg.from_server,
-+ Stats_from = if
-+ Msg#msg.from_server == VHost ->
-+ case lists:keysearch(From, 1, Stats_to) of
-+ {value, {Who_from, Count_from}} ->
-+ lists:keyreplace(From, 1, Stats_to, {Who_from, Count_from + 1});
-+ false ->
-+ lists:append(Stats_to, [{From, 1}])
-+ end;
-+ true ->
-+ Stats_to
-+ end,
-+ Stats_from
-+ end,
-+ DFun = fun(#stats{table=STable, server=Server} = Stat, _Acc)
-+ when STable == Table, Server == VHost ->
-+ mnesia:delete_object(stats_table(), Stat, write);
-+ (_Stat, _Acc) -> ok
-+ end,
-+ case mnesia:transaction(fun() ->
-+ mnesia:write_lock_table(list_to_atom(Table)),
-+ mnesia:write_lock_table(stats_table()),
-+ % Calc stats for VHost at Date
-+ AStats = mnesia:foldl(CFun, [], list_to_atom(Table)),
-+ % Delete all stats for VHost at Date
-+ mnesia:foldl(DFun, [], stats_table()),
-+ % Write new calc'ed stats
-+ lists:foreach(fun({Who, Count}) ->
-+ Jid = jlib:string_to_jid(Who),
-+ JUser = Jid#jid.user,
-+ WStat = #stats{user=JUser, server=VHost, table=Table, count=Count},
-+ mnesia:write(stats_table(), WStat, write)
-+ end, AStats)
-+ end) of
-+ {aborted, Reason} ->
-+ ?ERROR_MSG("Failed to rebuild_stats_at for ~p at ~p: ~p", [VHost, Table, Reason]),
-+ error;
-+ {atomic, _} ->
-+ ok
-+ end.
-+
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+%
-+% gen_logdb callbacks (delete)
-+%
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+delete_messages_by_user_at(_VHost, _Msgs, _Date) ->
-+ error.
-+
-+delete_all_messages_by_user_at(_User, _VHost, _Date) ->
-+ error.
-+
-+delete_messages_at(VHost, Date) ->
-+ Table = list_to_atom(tables_prefix() ++ Date),
-+
-+ DFun = fun(#msg{to_server=To_server, from_server=From_server}=Msg, _Acc)
-+ when To_server == VHost; From_server == VHost ->
-+ mnesia:delete_object(Table, Msg, write);
-+ (_Msg, _Acc) -> ok
-+ end,
-+
-+ case mnesia:transaction(fun() ->
-+ mnesia:foldl(DFun, [], Table)
-+ end) of
-+ {aborted, Reason} ->
-+ ?ERROR_MSG("Failed to delete_messages_at for ~p at ~p: ~p", [VHost, Date, Reason]),
-+ error;
-+ {atomic, _} ->
-+ ok
-+ end.
-+
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+%
-+% gen_logdb callbacks (get)
-+%
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+get_vhost_stats(_VHost) ->
-+ {error, "does not emplemented"}.
-+
-+get_vhost_stats_at(VHost, Date) ->
-+ Fun = fun() ->
-+ Pat = #stats{user='$1', server=VHost, table=tables_prefix()++Date, count = '$2'},
-+ mnesia:select(stats_table(), [{Pat, [], [['$1', '$2']]}])
-+ end,
-+ case mnesia:transaction(Fun) of
-+ {atomic, Result} ->
-+ RFun = fun([User, Count]) ->
-+ {User, Count}
-+ end,
-+ {ok, lists:reverse(lists:keysort(2, lists:map(RFun, Result)))};
-+ {aborted, Reason} -> {error, Reason}
-+ end.
-+
-+get_user_stats(_User, _VHost) ->
-+ {error, "does not emplemented"}.
-+
-+get_user_messages_at(User, VHost, Date) ->
-+ Table_name = tables_prefix() ++ Date,
-+ case mnesia:transaction(fun() ->
-+ Pat_to = #msg{to_user=User, to_server=VHost, _='_'},
-+ Pat_from = #msg{from_user=User, from_server=VHost, _='_'},
-+ mnesia:select(list_to_atom(Table_name),
-+ [{Pat_to, [], ['$_']},
-+ {Pat_from, [], ['$_']}])
-+ end) of
-+ {atomic, Result} ->
-+ Msgs = lists:map(fun(#msg{to_user=To_user, to_server=To_server, to_resource=To_res,
-+ from_user=From_user, from_server=From_server, from_resource=From_res,
-+ type=Type,
-+ subject=Subj,
-+ body=Body, timestamp=Timestamp} = _Msg) ->
-+ Subject = case Subj of
-+ "None" -> "";
-+ _ -> Subj
-+ end,
-+ {msg, To_user, To_server, To_res, From_user, From_server, From_res, Type, Subject, Body, Timestamp}
-+ end, Result),
-+ {ok, Msgs};
-+ {aborted, Reason} ->
-+ {error, Reason}
-+ end.
-+
-+get_dates(_VHost) ->
-+ Tables = mnesia:system_info(tables),
-+ MessagesTables =
-+ lists:filter(fun(Table) ->
-+ lists:prefix(tables_prefix(), atom_to_list(Table))
-+ end,
-+ Tables),
-+ lists:map(fun(Table) ->
-+ lists:sublist(atom_to_list(Table),
-+ length(tables_prefix())+1,
-+ length(atom_to_list(Table)))
-+ end,
-+ MessagesTables).
-+
-+get_users_settings(_VHost) ->
-+ {ok, []}.
-+get_user_settings(_User, _VHost) ->
-+ {ok, []}.
-+set_user_settings(_User, _VHost, _Set) ->
-+ ok.
-+drop_user(_User, _VHost) ->
-+ ok.
-+
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+%
-+% internal
-+%
-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-+% called from db_logon/2
-+create_stats_table() ->
-+ SName = stats_table(),
-+ case mnesia:create_table(SName,
-+ [{disc_only_copies, [node()]},
-+ {type, bag},
-+ {attributes, record_info(fields, stats)},
-+ {record_name, stats}
-+ ]) of
-+ {atomic, ok} ->
-+ ?INFO_MSG("Created stats table", []),
-+ ok;
-+ {aborted, {already_exists, _}} ->
-+ ok;
-+ {aborted, Reason} ->
-+ ?ERROR_MSG("Failed to create stats table: ~p", [Reason]),
-+ error
-+ end.
---- gen_logdb.erl.orig 2009-11-22 13:06:23.000000000 +0200
-+++ gen_logdb.erl 2009-07-22 16:43:26.000000000 +0300
-@@ -0,0 +1,164 @@
-+%%%----------------------------------------------------------------------
-+%%% File : gen_logdb.erl
-+%%% Author : Oleg Palij (mailto,xmpp:o.palij@gmail.com)
-+%%% Purpose : Describes generic behaviour for mod_logdb backends.
-+%%% Version : trunk
-+%%% Id : $Id$
-+%%% Url : http://www.dp.uz.gov.ua/o.palij/mod_logdb/
-+%%%----------------------------------------------------------------------
-+
-+-module(gen_logdb).
-+-author('o.palij@gmail.com').
-+
-+-export([behaviour_info/1]).
-+
-+behaviour_info(callbacks) ->
-+ [
-+ % called from handle_info(start, _)
-+ % it should logon database and return reference to started instance
-+ % start(VHost, Opts) -> {ok, SPid} | error
-+ % Options - list of options to connect to db
-+ % Types: Options = list() -> [] |
-+ % [{user, "logdb"},
-+ % {pass, "1234"},
-+ % {db, "logdb"}] | ...
-+ % VHost = list() -> "jabber.example.org"
-+ {start, 2},
-+
-+ % called from cleanup/1
-+ % it should logoff database and do cleanup
-+ % stop(VHost)
-+ % Types: VHost = list() -> "jabber.example.org"
-+ {stop, 1},
-+
-+ % called from handle_call({addlog, _}, _, _)
-+ % it should log messages to database
-+ % log_message(VHost, Msg) -> ok | error
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % Msg = record() -> #msg
-+ {log_message, 2},
-+
-+ % called from ejabberdctl rebuild_stats
-+ % it should rebuild stats table (if used) for vhost
-+ % rebuild_stats(VHost)
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ {rebuild_stats, 1},
-+
-+ % it should rebuild stats table (if used) for vhost at Date
-+ % rebuild_stats_at(VHost, Date)
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % Date = list() -> "2007-02-12"
-+ {rebuild_stats_at, 2},
-+
-+ % called from user_messages_at_parse_query/5
-+ % it should delete selected user messages at date
-+ % delete_messages_by_user_at(VHost, Msgs, Date) -> ok | error
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % Msgs = list() -> [ #msg1, msg2, ... ]
-+ % Date = list() -> "2007-02-12"
-+ {delete_messages_by_user_at, 3},
-+
-+ % called from user_messages_parse_query/4 | vhost_messages_at_parse_query/4
-+ % it should delete all user messages at date
-+ % delete_all_messages_by_user_at(User, VHost, Date) -> ok | error
-+ % Types:
-+ % User = list() -> "admin"
-+ % VHost = list() -> "jabber.example.org"
-+ % Date = list() -> "2007-02-12"
-+ {delete_all_messages_by_user_at, 3},
-+
-+ % called from vhost_messages_parse_query/3
-+ % it should delete messages for vhost at date and update stats
-+ % delete_messages_at(VHost, Date) -> ok | error
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % Date = list() -> "2007-02-12"
-+ {delete_messages_at, 2},
-+
-+ % called from ejabberd_web_admin:vhost_messages_stats/3
-+ % it should return sorted list of count of messages by dates for vhost
-+ % get_vhost_stats(VHost) -> {ok, [{Date1, Msgs_count1}, {Date2, Msgs_count2}, ... ]} |
-+ % {error, Reason}
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % DateN = list() -> "2007-02-12"
-+ % Msgs_countN = number() -> 241
-+ {get_vhost_stats, 1},
-+
-+ % called from ejabberd_web_admin:vhost_messages_stats_at/4
-+ % it should return sorted list of count of messages by users at date for vhost
-+ % get_vhost_stats_at(VHost, Date) -> {ok, [{User1, Msgs_count1}, {User2, Msgs_count2}, ....]} |
-+ % {error, Reason}
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % Date = list() -> "2007-02-12"
-+ % UserN = list() -> "admin"
-+ % Msgs_countN = number() -> 241
-+ {get_vhost_stats_at, 2},
-+
-+ % called from ejabberd_web_admin:user_messages_stats/4
-+ % it should return sorted list of count of messages by date for user at vhost
-+ % get_user_stats(User, VHost) -> {ok, [{Date1, Msgs_count1}, {Date2, Msgs_count2}, ...]} |
-+ % {error, Reason}
-+ % Types:
-+ % User = list() -> "admin"
-+ % VHost = list() -> "jabber.example.org"
-+ % DateN = list() -> "2007-02-12"
-+ % Msgs_countN = number() -> 241
-+ {get_user_stats, 2},
-+
-+ % called from ejabberd_web_admin:user_messages_stats_at/5
-+ % it should return all user messages at date
-+ % get_user_messages_at(User, VHost, Date) -> {ok, Msgs} | {error, Reason}
-+ % Types:
-+ % User = list() -> "admin"
-+ % VHost = list() -> "jabber.example.org"
-+ % Date = list() -> "2007-02-12"
-+ % Msgs = list() -> [ #msg1, msg2, ... ]
-+ {get_user_messages_at, 3},
-+
-+ % called from many places
-+ % it should return list of dates for vhost
-+ % get_dates(VHost) -> [Date1, Date2, ... ]
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ % DateN = list() -> "2007-02-12"
-+ {get_dates, 1},
-+
-+ % called from start
-+ % it should return list with users settings for VHost in db
-+ % get_users_settings(VHost) -> [#user_settings1, #user_settings2, ... ] | error
-+ % Types:
-+ % VHost = list() -> "jabber.example.org"
-+ {get_users_settings, 1},
-+
-+ % called from many places
-+ % it should return User settings at VHost from db
-+ % get_user_settings(User, VHost) -> error | {ok, #user_settings}
-+ % Types:
-+ % User = list() -> "admin"
-+ % VHost = list() -> "jabber.example.org"
-+ {get_user_settings, 2},
-+
-+ % called from web admin
-+ % it should set User settings at VHost
-+ % set_user_settings(User, VHost, #user_settings) -> ok | error
-+ % Types:
-+ % User = list() -> "admin"
-+ % VHost = list() -> "jabber.example.org"
-+ {set_user_settings, 3},
-+
-+ % called from remove_user (ejabberd hook)
-+ % it should remove user messages and settings at VHost
-+ % drop_user(User, VHost) -> ok | error
-+ % Types:
-+ % User = list() -> "admin"
-+ % VHost = list() -> "jabber.example.org"
-+ {drop_user, 2}
-+ ];
-+behaviour_info(_) ->
-+ undefined.
---- mod_muc/mod_muc_room-2.1.0.erl 2009-11-22 12:30:40.000000000 +0200
-+++ mod_muc/mod_muc_room.erl 2009-11-22 12:33:43.000000000 +0200
-@@ -625,6 +625,12 @@
- {reply, {ok, NSD#state.config}, StateName, NSD};
- handle_sync_event({change_state, NewStateData}, _From, StateName, _StateData) ->
- {reply, {ok, NewStateData}, StateName, NewStateData};
-+handle_sync_event({get_jid_nick, Jid}, _From, StateName, StateData) ->
-+ R = case ?DICT:find(jlib:jid_tolower(Jid), StateData#state.users) of
-+ error -> [];
-+ {ok, {user, _, Nick, _, _}} -> Nick
-+ end,
-+ {reply, R, StateName, StateData};
- handle_sync_event(_Event, _From, StateName, StateData) ->
- Reply = ok,
- {reply, Reply, StateName, StateData}.
---- msgs/uk-2.1.0.msg 2009-11-22 12:30:40.000000000 +0200
-+++ msgs/uk.msg 2009-11-22 12:36:12.000000000 +0200
-@@ -369,3 +369,31 @@
- {"You need an x:data capable client to search","Для пошуку необхідний x:data-придатний клієнт"}.
- {"Your contact offline message queue is full. The message has been discarded.","Черга повідомлень, що не були доставлені, переповнена. Повідомлення не було збережено."}.
- {"Your messages to ~s are being blocked. To unblock them, visit ~s","Ваші повідомлення до ~s блокуються. Для розблокування відвідайте ~s"}.
-+% mod_logdb
-+{"Users Messages", "Повідомлення користувачів"}.
-+{"Date", "Дата"}.
-+{"Count", "Кількість"}.
-+{"Logged messages for ", "Збережені повідомлення для "}.
-+{" at ", " за "}.
-+{"No logged messages for ", "Відсутні повідомлення для "}.
-+{"Date, Time", "Дата, Час"}.
-+{"Direction: Jid", "Напрямок: Jid"}.
-+{"Subject", "Тема"}.
-+{"Body", "Текст"}.
-+{"Messages", "Повідомлення"}.
-+{"Filter Selected", "Відфільтрувати виділені"}.
-+{"Do Not Log Messages", "Не зберігати повідомлення"}.
-+{"Log Messages", "Зберігати повідомлення"}.
-+{"Messages logging engine", "Система збереження повідомлень"}.
-+{"Default", "За замовчуванням"}.
-+{"Set logging preferences", "Вкажіть налагоджування збереження повідомлень"}.
-+{"Messages logging engine users", "Користувачі системи збереження повідомлень"}.
-+{"Messages logging engine settings", "Налагоджування системи збереження повідомлень"}.
-+{"Set run-time settings", "Вкажіть поточні налагоджування"}.
-+{"Groupchat messages logging", "Збереження повідомлень типу groupchat"}.
-+{"Jids/Domains to ignore", "Ігнорувати наступні jids/домени"}.
-+{"Purge messages older than (days)", "Видаляти повідомлення старіші ніж (дні)"}.
-+{"Poll users settings (seconds)", "Оновлювати налагоджування користувачів кожні (секунд)"}.
-+{"Drop", "Видаляти"}.
-+{"Do not drop", "Не видаляти"}.
-+{"Drop messages on user removal", "Видаляти повідомлення під час видалення користувача"}.
---- msgs/ru-2.1.0.msg 2009-11-22 12:30:40.000000000 +0200
-+++ msgs/ru.msg 2009-11-22 12:35:52.000000000 +0200
-@@ -369,3 +369,31 @@
- {"You need an x:data capable client to search","Чтобы воспользоваться поиском, требуется x:data-совместимый клиент"}.
- {"Your contact offline message queue is full. The message has been discarded.","Очередь недоставленных сообщений Вашего адресата переполнена. Сообщение не было сохранено."}.
- {"Your messages to ~s are being blocked. To unblock them, visit ~s","Ваши сообщения к ~s блокируются. Для снятия блокировки перейдите по ссылке ~s"}.
-+% mod_logdb.erl
-+{"Users Messages", "Сообщения пользователей"}.
-+{"Date", "Дата"}.
-+{"Count", "Количество"}.
-+{"Logged messages for ", "Сохранённые cообщения для "}.
-+{" at ", " за "}.
-+{"No logged messages for ", "Отсутствуют сообщения для "}.
-+{"Date, Time", "Дата, Время"}.
-+{"Direction: Jid", "Направление: Jid"}.
-+{"Subject", "Тема"}.
-+{"Body", "Текст"}.
-+{"Messages", "Сообщения"}.
-+{"Filter Selected", "Отфильтровать выделенные"}.
-+{"Do Not Log Messages", "Не сохранять сообщения"}.
-+{"Log Messages", "Сохранять сообщения"}.
-+{"Messages logging engine", "Система логирования сообщений"}.
-+{"Default", "По умолчанию"}.
-+{"Set logging preferences", "Задайте настройки логирования"}.
-+{"Messages logging engine users", "Пользователи системы логирования сообщений"}.
-+{"Messages logging engine settings", "Настройки системы логирования сообщений"}.
-+{"Set run-time settings", "Задайте текущие настройки"}.
-+{"Groupchat messages logging", "Логирование сообщений типа groupchat"}.
-+{"Jids/Domains to ignore", "Игнорировать следующие jids/домены"}.
-+{"Purge messages older than (days)", "Удалять сообщения старее чем (дни)"}.
-+{"Poll users settings (seconds)", "Обновлять настройки пользователей через (секунд)"}.
-+{"Drop", "Удалять"}.
-+{"Do not drop", "Не удалять"}.
-+{"Drop messages on user removal", "Удалять сообщения при удалении пользователя"}.
---- msgs/pl-2.1.0.msg 2009-11-22 12:30:40.000000000 +0200
-+++ msgs/pl.msg 2009-11-22 12:35:07.000000000 +0200
-@@ -369,3 +369,27 @@
- {"You need an x:data capable client to search","Potrzebujesz klienta obsługującego x:data aby wyszukiwać"}.
- {"Your contact offline message queue is full. The message has been discarded.","Kolejka wiadomości offline adresata jest pełna. Wiadomość została odrzucona."}.
- {"Your messages to ~s are being blocked. To unblock them, visit ~s","Twoje wiadomości do ~s są blokowane. Aby je odblokować, odwiedź ~s"}.
-+% mod_logdb
-+{"Users Messages", "Wiadomości użytkownika"}.
-+{"Date", "Data"}.
-+{"Count", "Liczba"}.
-+{"Logged messages for ", "Zapisane wiadomości dla "}.
-+{" at ", " o "}.
-+{"No logged messages for ", "Brak zapisanych wiadomości dla "}.
-+{"Date, Time", "Data, Godzina"}.
-+{"Direction: Jid", "Kierunek: Jid"}.
-+{"Subject", "Temat"}.
-+{"Body", "Treść"}.
-+{"Messages","Wiadomości"}.
-+{"Filter Selected", "Odfiltruj zaznaczone"}.
-+{"Do Not Log Messages", "Nie zapisuj wiadomości"}.
-+{"Log Messages", "Zapisuj wiadomości"}.
-+{"Messages logging engine", "System zapisywania historii rozmów"}.
-+{"Default", "Domyślne"}.
-+{"Set logging preferences", "Ustaw preferencje zapisywania"}.
-+{"Messages logging engine settings", "Ustawienia systemu logowania"}.
-+{"Set run-time settings", "Zapisz ustawienia systemu logowania"}.
-+{"Groupchat messages logging", "Zapisywanie rozmów z konferencji"}.
-+{"Jids/Domains to ignore", "JID/Domena która ma być ignorowana"}.
-+{"Purge messages older than (days)", "Usuń wiadomości starsze niż (w dniach)"}.
-+{"Poll users settings (seconds)", "Czas aktualizacji preferencji użytkowników (sekundy)"}.
---- msgs/nl-2.1.0.msg 2009-11-22 12:30:40.000000000 +0200
-+++ msgs/nl.msg 2009-11-22 12:34:41.000000000 +0200
-@@ -369,3 +369,15 @@
- {"You need an x:data capable client to search","U hebt een client nodig die x:data ondersteunt om te zoeken"}.
- {"Your contact offline message queue is full. The message has been discarded.","Te veel offline berichten voor dit contactpersoon. Het bericht is niet opgeslagen."}.
- {"Your messages to ~s are being blocked. To unblock them, visit ~s","Uw berichten aan ~s worden geblokkeerd. Om ze te deblokkeren, ga naar ~s"}.
-+% mod_logdb
-+{"Users Messages", "Gebruikersberichten"}.
-+{"Date", "Datum"}.
-+{"Count", "Aantal"}.
-+{"Logged messages for ", "Gelogde berichten van "}.
-+{" at ", " op "}.
-+{"No logged messages for ", "Geen gelogde berichten van "}.
-+{"Date, Time", "Datum en tijd"}.
-+{"Direction: Jid", "Richting: Jabber ID"}.
-+{"Subject", "Onderwerp"}.
-+{"Body", "Berichtveld"}.
-+{"Messages", "Berichten"}.
---- ./mod_roster-2.1.0.erl 2009-11-22 12:30:40.000000000 +0200
-+++ mod_roster.erl 2009-11-22 12:40:40.000000000 +0200
-@@ -61,7 +61,7 @@
- -include("mod_roster.hrl").
- -include("web/ejabberd_http.hrl").
- -include("web/ejabberd_web_admin.hrl").
--
-+-include("mod_logdb.hrl").
-
- start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
-@@ -937,6 +937,14 @@
- Res = user_roster_parse_query(User, Server, Items1, Query),
- Items = mnesia:dirty_index_read(roster, US, #roster.us),
- SItems = lists:sort(Items),
-+
-+ Settings = case gen_mod:is_loaded(Server, mod_logdb) of
-+ true ->
-+ mod_logdb:get_user_settings(User, Server);
-+ false ->
-+ []
-+ end,