}\r
\r
void linphone_sql_request_message(sqlite3 *db,const char *stmt,LinphoneChatRoom *cr){\r
- char* errmsg;\r
+ char* errmsg=NULL;\r
int ret;\r
ret=sqlite3_exec(db,stmt,callback,cr,&errmsg);\r
if(ret != SQLITE_OK) {\r
printf("Error in creation: %s.\n", errmsg);\r
+ sqlite3_free(errmsg);\r
}\r
}\r
\r
void linphone_chat_message_store(LinphoneChatMessage *msg){\r
LinphoneCore *lc=linphone_chat_room_get_lc(msg->chat_room);\r
if (lc->db){\r
- const char *peer=msg->chat_room->peer;\r
+ char *peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(msg->chat_room));\r
char *local_contact=linphone_address_as_string_uri_only(linphone_chat_message_get_local_address(msg));\r
char datebuf[26];\r
char *buf=sqlite3_mprintf("insert into history values(NULL,%Q,%Q,%i,%Q,%Q,%i,%i);",\r
linphone_sql_request(lc->db,buf);\r
sqlite3_free(buf);\r
ms_free(local_contact);\r
+ ms_free(peer);\r
}\r
}\r
\r
\r
if (lc->db==NULL) return ;\r
\r
+ char *peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(cr));\r
char *buf=sqlite3_mprintf("update history set read=%i where remoteContact = %Q;",\r
- read,cr->peer);\r
+ read,peer);\r
linphone_sql_request(lc->db,buf);\r
sqlite3_free(buf);\r
+ ms_free(peer);\r
+}\r
+\r
+int linphone_chat_room_get_unread_messages_count(LinphoneChatRoom *cr){\r
+ LinphoneCore *lc=linphone_chat_room_get_lc(cr);\r
+ int numrows=0;\r
+ \r
+ if (lc->db==NULL) return 0;\r
+ \r
+ char *peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(cr));\r
+ char *buf=sqlite3_mprintf("select count(*) from history where remoteContact = %Q and read = 0;",peer);\r
+ sqlite3_stmt *selectStatement;\r
+ int returnValue = sqlite3_prepare_v2(lc->db,buf,-1,&selectStatement,NULL);\r
+ if (returnValue == SQLITE_OK){\r
+ if(sqlite3_step(selectStatement) == SQLITE_ROW){\r
+ numrows= sqlite3_column_int(selectStatement, 0);\r
+ }\r
+ }\r
+ sqlite3_finalize(selectStatement);\r
+ sqlite3_free(buf);\r
+ ms_free(peer);\r
+ return numrows;\r
}\r
\r
void linphone_chat_room_delete_history(LinphoneChatRoom *cr){\r
LinphoneCore *lc=cr->lc;\r
\r
if (lc->db==NULL) return ;\r
- char *buf=sqlite3_mprintf("delete from history where remoteContact = %Q;",cr->peer);\r
+ \r
+ char *peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(cr));\r
+ char *buf=sqlite3_mprintf("delete from history where remoteContact = %Q;",peer);\r
linphone_sql_request(lc->db,buf);\r
sqlite3_free(buf);\r
+ ms_free(peer);\r
}\r
\r
MSList *linphone_chat_room_get_history(LinphoneChatRoom *cr,int nb_message){\r
MSList *ret;\r
\r
if (lc->db==NULL) return NULL;\r
- \r
+ char *peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(cr));\r
cr->messages_hist = NULL;\r
- char *buf=sqlite3_mprintf("select * from history where remoteContact = %Q order by id DESC limit %i ;",cr->peer,nb_message);\r
+ char *buf=sqlite3_mprintf("select * from history where remoteContact = %Q order by id DESC limit %i ;",peer,nb_message);\r
linphone_sql_request_message(lc->db,buf,cr);\r
sqlite3_free(buf);\r
ret=cr->messages_hist;\r
cr->messages_hist=NULL;\r
+ ms_free(peer);\r
return ret;\r
}\r
\r
}\r
\r
void linphone_create_table(sqlite3* db){\r
- char* errmsg;\r
+ char* errmsg=NULL;\r
int ret;\r
ret=sqlite3_exec(db,"CREATE TABLE if not exists history (id INTEGER PRIMARY KEY AUTOINCREMENT, localContact TEXT NOT NULL, remoteContact TEXT NOT NULL, direction INTEGER, message TEXT, time TEXT NOT NULL, read INTEGER, status INTEGER);",\r
0,0,&errmsg);\r
if(ret != SQLITE_OK) {\r
printf("Error in creation: %s.\n", errmsg);\r
+ sqlite3_free(errmsg);\r
}\r
}\r
\r
void linphone_core_message_storage_close(LinphoneCore *lc){\r
}\r
\r
+int linphone_chat_room_get_unread_messages_count(LinphoneChatRoom *cr){\r
+ return 0;\r
+}\r
+\r
#endif\r