diff --git a/src/database.c b/src/database.c index 7c84ee33..adfbe912 100644 --- a/src/database.c +++ b/src/database.c @@ -66,7 +66,7 @@ log_database_init(void) } char *err_msg; - char *query = "CREATE TABLE IF NOT EXISTS `ChatLogs` ( `id` INTEGER PRIMARY KEY, `jid` TEXT NOT NULL, `message` TEXT, `timestamp` TEXT)"; + char *query = "CREATE TABLE IF NOT EXISTS `ChatLogs` ( `id` INTEGER PRIMARY KEY, `jid` TEXT NOT NULL, `resource` TEXT, `message` TEXT, `timestamp` TEXT, `is_muc` INTEGER, `stanza_id` TEXT)"; if( SQLITE_OK != sqlite3_exec(g_chatlog_database, query, NULL, 0, &err_msg)) { if (err_msg) { log_error("SQLite error: %s", err_msg); @@ -91,14 +91,14 @@ log_database_close(void) } void -log_database_add(ProfMessage *message) { +log_database_add(ProfMessage *message, gboolean is_muc) { char *err_msg; char *query; //gchar *date_fmt = g_date_time_format_iso8601(message->timestamp); gchar *date_fmt = g_date_time_format(message->timestamp, "%Y/%m/%d %H:%M:%S"); - if (asprintf(&query, "INSERT INTO `ChatLogs` (`jid`, `message`, `timestamp`) VALUES ('%s', '%s', '%s')", - message->jid->barejid, message->plain, date_fmt) == -1) { + if (asprintf(&query, "INSERT INTO `ChatLogs` (`jid`, `resource`, `message`, `timestamp`, `is_muc`, `stanza_id`) VALUES ('%s', '%s', '%s', '%s', '%d', '%s')", + message->jid->barejid, message->jid->resourcepart, message->plain, date_fmt, is_muc, message->id) == -1) { log_error("log_database_add(): could not allocate memory"); return; } diff --git a/src/database.h b/src/database.h index fc95b7d0..3e393707 100644 --- a/src/database.h +++ b/src/database.h @@ -38,7 +38,7 @@ bool log_database_init(void); void log_database_close(void); -void log_database_add(ProfMessage *message); +void log_database_add(ProfMessage *message, gboolean is_muc); #endif // DATABASE_H diff --git a/src/event/server_events.c b/src/event/server_events.c index 6c7d0430..2728e811 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -325,7 +325,7 @@ sv_ev_room_message(ProfMessage *message) GList *triggers = prefs_message_get_triggers(message->plain); _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, TRUE); mucwin_incoming_msg(mucwin, message, mentions, triggers, TRUE); g_slist_free(mentions); @@ -399,7 +399,7 @@ sv_ev_incoming_private_message(ProfMessage *message) } _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); privwin_incoming_msg(privatewin, message); chat_log_msg_in(message); @@ -423,7 +423,7 @@ sv_ev_delayed_private_message(ProfMessage *message) } _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); privwin_incoming_msg(privatewin, message); chat_log_msg_in(message); @@ -536,7 +536,7 @@ _sv_ev_incoming_pgp(ProfChatWin *chatwin, gboolean new_win, ProfMessage *message if (message->plain) { message->enc = PROF_MSG_ENC_PGP; _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); chatwin_incoming_msg(chatwin, message, new_win); if (logit) { chat_log_pgp_msg_in(message); @@ -552,7 +552,7 @@ _sv_ev_incoming_pgp(ProfChatWin *chatwin, gboolean new_win, ProfMessage *message message->enc = PROF_MSG_ENC_PLAIN; message->plain = strdup(message->body); _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); chatwin_incoming_msg(chatwin, message, new_win); chat_log_msg_in(message); chatwin->pgp_recv = FALSE; @@ -575,7 +575,7 @@ _sv_ev_incoming_otr(ProfChatWin *chatwin, gboolean new_win, ProfMessage *message } _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); chatwin_incoming_msg(chatwin, message, new_win); chat_log_otr_msg_in(message); @@ -591,7 +591,7 @@ static void _sv_ev_incoming_omemo(ProfChatWin *chatwin, gboolean new_win, ProfMessage *message, gboolean logit) { _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); chatwin_incoming_msg(chatwin, message, new_win); if (logit) { chat_log_omemo_msg_in(message); @@ -607,7 +607,7 @@ _sv_ev_incoming_plain(ProfChatWin *chatwin, gboolean new_win, ProfMessage *messa message->enc = PROF_MSG_ENC_PLAIN; message->plain = strdup(message->body); _clean_incoming_message(message); - log_database_add(message); + log_database_add(message, FALSE); chatwin_incoming_msg(chatwin, message, new_win); if (logit) { chat_log_msg_in(message);