2 This file is part of Telegram application for tizen
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 #include "tg_db_wrapper.h"
20 #include <mime_type.h>
21 #include <utils_i18n.h>
23 static const char* g_empty_char = "";
24 static const char* g_zero_char = "0.000";
25 static const int g_base_int = -1;
26 static const int g_zero_int = 0;
29 Eina_Bool insert_unsent_message_to_db(const char *app_name, const char *command, const char *buddy_id, const char *msg_id, const char *msg_type, const char *msg_data, const char *type_of_chat)
31 Eina_Bool ret = EINA_FALSE;
32 if (!app_name || !command || !buddy_id || !msg_id || !msg_type || !msg_data || !type_of_chat)
35 char *table_name = MESSAGE_TRANSPORT_TABLE_NAME;
36 Eina_List *col_names = NULL;
38 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_APP_NAME);
39 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_COMMAND);
40 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_BUDDY_ID);
41 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_MESSAGE_ID);
42 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_MESSAGE_TYPE);
43 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_MESSAGE_DATA);
44 col_names = eina_list_append(col_names, MESSAGE_TRANSPORT_TABLE_TYPE_OF_CHAT);
46 Eina_List *col_types = NULL;
47 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
48 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
49 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
50 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
51 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
52 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
53 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
56 Eina_List *col_values = NULL;
57 col_values = eina_list_append(col_values, app_name);
58 col_values = eina_list_append(col_values, command);
59 col_values = eina_list_append(col_values, buddy_id);
60 col_values = eina_list_append(col_values, msg_id);
61 col_values = eina_list_append(col_values, msg_type);
62 col_values = eina_list_append(col_values, msg_data);
63 col_values = eina_list_append(col_values, type_of_chat);
66 ret = insert_table(table_name, col_names, col_types, col_values);
68 LOGE("db table creation failed for %s", table_name);
70 eina_list_free(col_names);
71 eina_list_free(col_types);
72 eina_list_free(col_values);
76 Eina_Bool insert_unsent_media_message_to_db(const char *app_name, const char *command, const char *buddy_id, const char *msg_id, const char *media_id, const char *msg_type, const char *file_path, const char *type_of_chat)
78 Eina_Bool ret = EINA_FALSE;
80 if (!app_name || !command || !buddy_id || !msg_id || !media_id || !msg_type || !file_path || !type_of_chat)
84 char *table_name = MEDIA_TRANSPORT_TABLE_NAME;
85 Eina_List *col_names = NULL;
87 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_APP_NAME);
88 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_COMMAND);
89 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_BUDDY_ID);
90 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_MESSAGE_ID);
91 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_MEDIA_ID);
92 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_MESSAGE_TYPE);
93 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_FILE_PATH);
94 col_names = eina_list_append(col_names, MEDIA_TRANSPORT_TABLE_TYPE_OF_CHAT);
96 Eina_List *col_types = NULL;
97 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
98 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
99 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
100 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
101 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
102 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
103 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
104 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
106 Eina_List *col_values = NULL;
107 col_values = eina_list_append(col_values, app_name);
108 col_values = eina_list_append(col_values, command);
109 col_values = eina_list_append(col_values, buddy_id);
110 col_values = eina_list_append(col_values, msg_id);
111 col_values = eina_list_append(col_values, media_id);
112 col_values = eina_list_append(col_values, msg_type);
113 col_values = eina_list_append(col_values, file_path);
114 col_values = eina_list_append(col_values, type_of_chat);
116 ret = insert_table(table_name, col_names, col_types, col_values);
118 LOGE("db table creation failed for %s", table_name);
120 eina_list_free(col_names);
121 eina_list_free(col_types);
122 eina_list_free(col_values);
127 Eina_List *get_all_peer_details(char *start_name)
129 Eina_List *peer_details = NULL;
130 char *table_name = PEER_INFO_TABLE_NAME;
131 Eina_List *col_names = NULL;
133 col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
134 col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
135 col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
136 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
137 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
138 col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
139 col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
140 col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
141 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
142 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
143 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
144 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
146 Eina_List *col_types = NULL;
147 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
148 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
149 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
150 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
151 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
152 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
153 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
154 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
155 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
156 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
157 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
158 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
160 //peer_details = get_values_from_table_sync(db, table_name, col_names, col_types, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
161 char where_clause[1024] = { 0, };
164 snprintf(where_clause, sizeof(where_clause), PEER_INFO_TABLE_PRINT_NAME" LIKE '%s%s'", start_name, "%");
165 wh_cs = where_clause;
167 peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, wh_cs, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
169 eina_list_free(col_names);
170 eina_list_free(col_types);
174 peer_with_pic_s* get_peer_info(int peer_id)
176 Eina_List *peer_details = NULL;
177 char *table_name = PEER_INFO_TABLE_NAME;
178 Eina_List *col_names = NULL;
180 col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
181 col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
182 col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
183 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
184 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
185 col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
186 col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
187 col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
188 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
189 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
190 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
191 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
193 Eina_List *col_types = NULL;
194 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
195 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
196 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
197 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
198 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
199 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
200 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
201 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
202 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
203 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
204 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
205 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
207 char where_clause[1024];
208 sprintf(where_clause, PEER_INFO_TABLE_CHAT_ID" = %d", peer_id);
210 peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
212 peer_with_pic_s *item = NULL;
213 Eina_List *ts_msg = NULL;
216 EINA_LIST_FREE(peer_details, ts_msg) {
218 tg_peer_info_s* peer_info = (tg_peer_info_s*)malloc(sizeof(tg_peer_info_s));
220 int *temp_peer_id = (int *)eina_list_nth(ts_msg, 0);
222 peer_info->peer_id = *temp_peer_id;
226 int *temp_peer_type = (int *)eina_list_nth(ts_msg, 1);
227 if (temp_peer_type) {
228 peer_info->peer_type = *temp_peer_type;
229 free(temp_peer_type);
232 int *temp_flags = (int *)eina_list_nth(ts_msg, 2);
234 peer_info->flags = *temp_flags;
238 char *temp_msg_id = (char *)eina_list_nth(ts_msg, 3);
240 peer_info->last_msg_id = atoll(temp_msg_id);
243 peer_info->last_msg_id = 0;
246 int *temp_last_msg_date = (int *)eina_list_nth(ts_msg, 4);
247 if (temp_last_msg_date) {
248 peer_info->last_msg_date = *temp_last_msg_date;
249 free(temp_last_msg_date);
252 char *temp_print_name = (char *)eina_list_nth(ts_msg, 5);
253 if (temp_print_name) {
254 peer_info->print_name = strdup(temp_print_name);
255 free(temp_print_name);
257 peer_info->print_name = NULL;
260 int *temp_struct_ver = (int *)eina_list_nth(ts_msg, 6);
261 if (temp_struct_ver) {
262 peer_info->struct_version = *temp_struct_ver;
263 free(temp_struct_ver);
266 int *temp_no_unread = (int *)eina_list_nth(ts_msg, 7);
267 if (temp_no_unread) {
268 peer_info->no_of_unread_msgs = *temp_no_unread;
269 free(temp_no_unread);
272 int *temp_last_seen = (int *)eina_list_nth(ts_msg, 8);
273 if (temp_last_seen) {
274 peer_info->last_seen_time = *temp_last_seen;
275 free(temp_last_seen);
278 char *temp_pic_path = (char *)eina_list_nth(ts_msg, 9);
280 peer_info->photo_path = strdup(temp_pic_path);
283 peer_info->photo_path = NULL;
286 int *temp_pic_id = (int *)eina_list_nth(ts_msg, 10);
288 peer_info->photo_id = *temp_pic_id;
291 int *temp_unknown = (int *)eina_list_nth(ts_msg, 11);
293 peer_info->is_unknown = *temp_unknown;
297 eina_list_free(ts_msg);
299 item = (peer_with_pic_s*) malloc(sizeof(peer_with_pic_s));
300 item->use_data = peer_info;
301 item->contact_icon = NULL;
304 EINA_LIST_FREE(ts_msg, val) {
312 eina_list_free(col_names);
313 eina_list_free(col_types);
318 Eina_List *get_group_chat_details()
320 Eina_List *chat_details = NULL;
321 char *table_name = CHAT_INFO_TABLE_NAME;
322 Eina_List *col_names = NULL;
323 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
324 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
325 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
326 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
327 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
328 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
329 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
330 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
331 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
332 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
333 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
334 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
335 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
336 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
337 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
339 Eina_List *col_types = NULL;
340 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
341 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
342 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
343 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
344 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
345 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
346 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
347 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
348 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
349 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
350 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
351 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
352 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
353 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
354 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
356 chat_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
358 eina_list_free(col_names);
359 eina_list_free(col_types);
364 tg_chat_info_s* get_chat_info(int chat_id)
366 Eina_List *chat_details = NULL;
368 char *table_name = CHAT_INFO_TABLE_NAME;
369 Eina_List *col_names = NULL;
370 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
371 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
372 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
373 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
374 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
375 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
376 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
377 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
378 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
379 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
380 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
381 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
382 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
383 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
384 col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
386 Eina_List *col_types = NULL;
387 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
388 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
389 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
390 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
391 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
392 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
393 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
394 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
395 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
396 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
397 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
398 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
399 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
400 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
401 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
403 char where_clause[1024];
404 sprintf(where_clause, CHAT_INFO_TABLE_CHAT_ID" = %d", chat_id);
406 chat_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
408 eina_list_free(col_names);
409 eina_list_free(col_types);
411 tg_chat_info_s* chat_info = NULL;
412 if (chat_details && eina_list_count(chat_details) > 0) {
413 Eina_List *ts_msg = eina_list_nth(chat_details, 0);
415 chat_info = (tg_chat_info_s*)malloc(sizeof(tg_chat_info_s));
417 int *temp_chat_id = (int *)eina_list_nth(ts_msg, 0);
419 chat_info->chat_id = *temp_chat_id;
423 int *temp_flags = (int *)eina_list_nth(ts_msg, 1);
425 chat_info->flags = *temp_flags;
429 char *temp_print_title = (char *)eina_list_nth(ts_msg, 2);
430 if (temp_print_title) {
431 chat_info->print_title = strdup(temp_print_title);
432 free(temp_print_title);
435 int *temp_struct_ver = (int *)eina_list_nth(ts_msg, 3);
436 if (temp_struct_ver) {
437 chat_info->struct_version = *temp_struct_ver;
438 free(temp_struct_ver);
441 char *temp_photo_id = (char *)eina_list_nth(ts_msg, 4);
443 chat_info->photo_id = atoll(temp_photo_id);
447 char *temp_photo_path = (char *)eina_list_nth(ts_msg, 5);
448 if (temp_photo_path) {
449 chat_info->photo_path = strdup(temp_photo_path);
450 free(temp_photo_path);
453 char *temp_title = (char *)eina_list_nth(ts_msg, 6);
455 chat_info->title = strdup(temp_title);
459 int *temp_users_num = (int *)eina_list_nth(ts_msg, 7);
460 if (temp_users_num) {
461 chat_info->users_num = *temp_users_num;
462 free(temp_users_num);
465 int *temp_user_list_size = (int *)eina_list_nth(ts_msg, 8);
466 if (temp_user_list_size) {
467 chat_info->user_list_size = *temp_user_list_size;
468 free(temp_user_list_size);
471 int *temp_user_list_version = (int *)eina_list_nth(ts_msg, 9);
472 if (temp_user_list_version) {
473 chat_info->user_list_version = *temp_user_list_version;
474 free(temp_user_list_version);
477 int *temp_inviter_id = (int *)eina_list_nth(ts_msg, 10);
478 if (temp_inviter_id) {
479 chat_info->inviter_id = *temp_inviter_id;
480 free(temp_inviter_id);
483 char *temp_full_ids = (char *)eina_list_nth(ts_msg, 11);
485 char *item = strtok(temp_full_ids, ",");
487 chat_info->chat_users[count] = atoi(item);
489 while (item != NULL) {
491 item = strtok(NULL, ",");
493 chat_info->chat_users[count] = atoi(item);
499 int *temp_date = (int *)eina_list_nth(ts_msg, 12);
501 chat_info->date = *temp_date;
505 int *temp_version = (int *)eina_list_nth(ts_msg, 13);
507 chat_info->version = *temp_version;
511 int *temp_admin_id = (int *)eina_list_nth(ts_msg, 14);
513 chat_info->admin_id = *temp_admin_id;
516 eina_list_free(ts_msg);
517 eina_list_free(chat_details);
522 Eina_List *get_registered_user_info()
524 Eina_List *user_details = NULL;
526 char *table_name = USER_INFO_TABLE_NAME;
527 Eina_List *col_names = NULL;
528 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
529 col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
530 col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
531 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
532 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
533 col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
534 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
535 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
536 col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
537 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
538 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
539 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
540 col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
541 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
543 Eina_List *col_types = NULL;
544 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
545 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
546 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
547 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
548 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
549 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
550 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
551 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
552 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
553 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
554 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
555 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
556 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
557 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
559 user_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
561 eina_list_free(col_names);
562 eina_list_free(col_types);
567 Eina_List *get_buddy_list_info()
569 Eina_List *user_details = NULL;
571 char *table_name = BUDDY_INFO_TABLE_NAME;
572 Eina_List *col_names = NULL;
573 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
574 col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
575 col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
576 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
577 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
578 col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
579 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
580 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
581 col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
582 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
583 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
584 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
585 col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
586 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
587 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_BLOCKED);
588 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_DELETED);
589 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
592 Eina_List *col_types = NULL;
593 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
594 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
595 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
596 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
597 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
598 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
599 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
600 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
601 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
602 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
603 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
604 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
605 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
606 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
607 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
608 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
609 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
612 char where_clause[1024];
613 sprintf(where_clause, USER_INFO_TABLE_IS_UNKNOWN_PEER" = 0 OR "USER_INFO_TABLE_IS_DELETED" = 0");
615 user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_FIRST_NAME, EINA_TRUE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
617 eina_list_free(col_names);
618 eina_list_free(col_types);
623 Eina_List *get_unknown_buddy_list_info()
625 Eina_List *user_details = NULL;
627 char *table_name = BUDDY_INFO_TABLE_NAME;
628 Eina_List *col_names = NULL;
629 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
630 col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
631 col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
632 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
633 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
634 col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
635 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
636 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
637 col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
638 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
639 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
640 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
641 col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
642 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
643 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_BLOCKED);
644 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_DELETED);
645 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
648 Eina_List *col_types = NULL;
649 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
650 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
651 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
652 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
653 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
654 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
655 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
656 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
657 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
658 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
659 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
660 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
661 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
662 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
663 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
664 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
665 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
667 char where_clause[1024];
668 sprintf(where_clause, USER_INFO_TABLE_IS_UNKNOWN_PEER" = 1 OR "USER_INFO_TABLE_IS_DELETED" = 1");
670 user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_PRINT_NAME, EINA_TRUE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
672 eina_list_free(col_names);
673 eina_list_free(col_types);
678 char *get_profile_pic_path(int buddy_id)
680 Eina_List *buddy_details_array = NULL;
681 char *profile_pic_path = NULL;
683 char *table_name = BUDDY_INFO_TABLE_NAME;
684 Eina_List *col_names = NULL;
685 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
687 Eina_List *col_types = NULL;
688 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
691 char where_clause[1024];
692 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
694 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
696 // buddy id is uniqe, there will be only one value.
697 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
698 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
699 if (buddy_details && eina_list_count(buddy_details) > 0) {
700 char *pic_path = (char *)eina_list_nth(buddy_details, 0);
702 if (pic_path && strlen(pic_path) > 0) {
703 profile_pic_path = strdup(pic_path);
706 eina_list_free(buddy_details);
708 eina_list_free(buddy_details_array);
710 eina_list_free(col_names);
711 eina_list_free(col_types);
712 return profile_pic_path;
716 char *get_buddy_name_from_id(int buddy_id)
718 Eina_List *buddy_details_array = NULL;
719 char *profile_name = NULL;
721 char *table_name = BUDDY_INFO_TABLE_NAME;
722 Eina_List *col_names = NULL;
723 col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
725 Eina_List *col_types = NULL;
726 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
728 char where_clause[1024];
729 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
731 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
733 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
734 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
735 if (buddy_details && eina_list_count(buddy_details) > 0) {
736 char *name = (char *)eina_list_nth(buddy_details, 0);
737 if (name && strlen(name) > 0)
738 profile_name = strdup(name);
740 eina_list_free(buddy_details);
743 eina_list_free(buddy_details_array);
746 eina_list_free(col_names);
747 eina_list_free(col_types);
752 Eina_Bool is_phone_number_exists_in_buddy_list(const char *phone_num)
754 Eina_Bool is_exist = EINA_FALSE;
758 char *table_name = BUDDY_INFO_TABLE_NAME;
759 Eina_List *col_names = NULL;
760 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
762 Eina_List *col_types = NULL;
763 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
765 char where_clause[1024];
766 sprintf(where_clause, USER_INFO_TABLE_PHONE_NO" LIKE '%s%s%s'", "%", phone_num, "%");
767 Eina_List *buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
769 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
770 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
771 if (buddy_details && eina_list_count(buddy_details) > 0) {
772 char *name = (char *)eina_list_nth(buddy_details, 0);
774 if (name && strlen(name) > 0)
775 is_exist = EINA_TRUE;
777 eina_list_free(buddy_details);
780 eina_list_free(buddy_details_array);
783 eina_list_free(col_names);
784 eina_list_free(col_types);
788 char *get_buddy_phone_num_from_id(int buddy_id)
790 Eina_List *buddy_details_array = NULL;
791 char *phone_num = NULL;
793 char *table_name = BUDDY_INFO_TABLE_NAME;
794 Eina_List *col_names = NULL;
795 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
797 Eina_List *col_types = NULL;
798 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
800 char where_clause[1024];
801 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
803 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
805 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
806 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
807 if (buddy_details && eina_list_count(buddy_details) > 0) {
808 char *pn = (char *)eina_list_nth(buddy_details, 0);
809 if (pn && strlen(pn) > 0)
810 phone_num = strdup(pn);
812 eina_list_free(buddy_details);
815 eina_list_free(buddy_details_array);
818 eina_list_free(col_names);
819 eina_list_free(col_types);
824 int get_buddy_block_status(int buddy_id)
826 Eina_List *buddy_details_array = NULL;
828 char *table_name = BUDDY_INFO_TABLE_NAME;
829 Eina_List *col_names = NULL;
830 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_BLOCKED);
832 Eina_List *col_types = NULL;
833 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
835 char where_clause[1024];
836 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
838 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
842 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
843 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
844 if (buddy_details && eina_list_count(buddy_details) > 0) {
845 int *temp_unknown_status = (int *)eina_list_nth(buddy_details, 0);
846 if (temp_unknown_status) {
847 is_unknown = *temp_unknown_status;
848 free(temp_unknown_status);
850 eina_list_free(buddy_details);
852 eina_list_free(buddy_details_array);
855 eina_list_free(col_names);
856 eina_list_free(col_types);
861 int get_buddy_delete_status(int buddy_id)
863 Eina_List *buddy_details_array = NULL;
865 char *table_name = BUDDY_INFO_TABLE_NAME;
866 Eina_List *col_names = NULL;
867 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_DELETED);
869 Eina_List *col_types = NULL;
870 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
872 char where_clause[1024];
873 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
875 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
879 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
880 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
881 if (buddy_details && eina_list_count(buddy_details) > 0) {
883 int *temp_unknown_status = (int *)eina_list_nth(buddy_details, 0);
884 if (temp_unknown_status) {
885 is_unknown = *temp_unknown_status;
886 free(temp_unknown_status);
888 eina_list_free(buddy_details);
890 eina_list_free(buddy_details_array);
893 eina_list_free(col_names);
894 eina_list_free(col_types);
899 Eina_Bool is_telegram_account(int buddy_id)
901 if(buddy_id == 333000 || buddy_id == 777000)
906 int get_buddy_unknown_status(int buddy_id)
908 Eina_List *buddy_details_array = NULL;
910 char *table_name = BUDDY_INFO_TABLE_NAME;
911 Eina_List *col_names = NULL;
912 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
914 Eina_List *col_types = NULL;
915 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
917 char where_clause[1024];
918 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
920 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
924 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
925 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
926 if (buddy_details && eina_list_count(buddy_details) > 0) {
928 int *temp_unknown_status = (int *)eina_list_nth(buddy_details, 0);
929 if (temp_unknown_status) {
930 is_unknown = *temp_unknown_status;
931 free(temp_unknown_status);
933 eina_list_free(buddy_details);
935 eina_list_free(buddy_details_array);
938 eina_list_free(col_names);
939 eina_list_free(col_types);
944 int get_buddy_online_status(int buddy_id)
946 Eina_List *buddy_details_array = NULL;
948 char *table_name = BUDDY_INFO_TABLE_NAME;
949 Eina_List *col_names = NULL;
950 col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
952 Eina_List *col_types = NULL;
953 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
955 char where_clause[1024];
956 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
958 buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
962 if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
963 Eina_List *buddy_details = eina_list_nth(buddy_details_array, 0);
964 if (buddy_details && eina_list_count(buddy_details) > 0) {
966 int *temp_online_status = (int *)eina_list_nth(buddy_details, 0);
967 if (temp_online_status) {
968 is_online = *temp_online_status;
969 free(temp_online_status);
971 eina_list_free(buddy_details);
973 eina_list_free(buddy_details_array);
976 eina_list_free(col_names);
977 eina_list_free(col_types);
982 Eina_List *get_buddy_info(int buddy_id)
984 Eina_List *user_details = NULL;
986 char *table_name = BUDDY_INFO_TABLE_NAME;
987 Eina_List *col_names = NULL;
988 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
989 col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
990 col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
991 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
992 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
993 col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
994 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
995 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
996 col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
997 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
998 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
999 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
1000 col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
1001 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
1002 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_BLOCKED);
1003 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_DELETED);
1004 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
1006 Eina_List *col_types = NULL;
1007 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1008 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1009 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1010 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1011 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1012 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1013 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1014 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1015 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1016 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1017 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1018 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1019 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1020 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1021 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1022 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1023 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1025 char where_clause[1024];
1026 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
1028 user_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
1030 eina_list_free(col_names);
1031 eina_list_free(col_types);
1033 return user_details;
1036 int get_unread_message_count(char *table_name)
1038 /* number of rows, having out == 1 and unread == 0 */
1042 int num_of_rows = 0;
1043 char where_clause[1024];
1044 sprintf(where_clause, MESSAGE_INFO_TABLE_UNREAD " = 1 AND " MESSAGE_INFO_TABLE_OUT_MSG " != 1 AND " MESSAGE_INFO_TABLE_SERVICE " < 1 AND " MESSAGE_INFO_TABLE_MARKED_FOR_DELETE " != 1");
1046 num_of_rows = get_number_of_rows(table_name, where_clause);
1050 tg_message_s *get_latest_message_from_message_table(char *table_name, Eina_Bool is_for_date)
1052 tg_message_s *message = NULL;
1054 Eina_List *message_details = NULL;
1056 Eina_List *col_names = NULL;
1057 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
1058 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
1059 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
1060 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
1061 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
1062 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
1063 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
1064 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
1065 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
1066 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
1067 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
1068 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
1069 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
1070 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
1071 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
1072 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
1073 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MARKED_FOR_DELETE);
1075 Eina_List *col_types = NULL;
1076 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1077 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1078 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1079 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1080 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1081 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1082 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1083 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1084 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1085 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1086 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1087 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1088 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1089 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1090 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1091 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1092 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1094 char where_clause[1024] = { 0, };
1097 sprintf(where_clause, MESSAGE_INFO_TABLE_SERVICE " != 2 AND " MESSAGE_INFO_TABLE_MARKED_FOR_DELETE " != 1");
1098 wh_c = where_clause;
1101 message_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, MESSAGE_INFO_TABLE_DATE, EINA_FALSE, wh_c, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
1103 eina_list_free(col_types);
1104 eina_list_free(col_names);
1106 if (message_details && eina_list_count(message_details) > 0) {
1107 Eina_List *ts_msg = eina_list_nth(message_details, 0);
1108 message = (tg_message_s*)malloc(sizeof(tg_message_s));
1110 int *temp_msg_id = (int *)eina_list_nth(ts_msg, 0);
1112 message->msg_id = *temp_msg_id;
1116 int *temp_flags = (int *)eina_list_nth(ts_msg, 1);
1118 message->flags = *temp_flags;
1122 int *temp_fwd_from_id = (int *)eina_list_nth(ts_msg, 2);
1123 if (temp_fwd_from_id) {
1124 message->fwd_from_id = *temp_fwd_from_id;
1125 free(temp_fwd_from_id);
1128 int *temp_fwd_date = (int *)eina_list_nth(ts_msg, 3);
1129 if (temp_fwd_date) {
1130 message->fwd_date = *temp_fwd_date;
1131 free(temp_fwd_date);
1134 int *temp_from_id = (int *)eina_list_nth(ts_msg, 4);
1136 message->from_id = *temp_from_id;
1140 int *temp_to_id = (int *)eina_list_nth(ts_msg, 5);
1142 message->to_id = *temp_to_id;
1146 int *temp_out = (int *)eina_list_nth(ts_msg, 6);
1148 message->out = *temp_out;
1152 int *temp_unread = (int *)eina_list_nth(ts_msg, 7);
1154 message->unread = *temp_unread;
1158 int *temp_date = (int *)eina_list_nth(ts_msg, 8);
1160 message->date = *temp_date;
1164 int *temp_service = (int *)eina_list_nth(ts_msg, 9);
1166 message->service = *temp_service;
1170 char *temp_msg = (char *)eina_list_nth(ts_msg, 10);
1172 message->message = strdup(temp_msg);
1176 int *temp_message_state = (int *)eina_list_nth(ts_msg, 11);
1177 if (temp_message_state) {
1178 message->msg_state = *temp_message_state;
1179 free(temp_message_state);
1182 int *temp_message_len = (int *)eina_list_nth(ts_msg, 12);
1183 if (temp_message_len) {
1184 message->message_len = *temp_message_len;
1185 free(temp_message_len);
1188 int *temp_media_type = (int *)eina_list_nth(ts_msg, 13);
1189 if (temp_media_type) {
1190 message->media_type = *temp_media_type;
1191 free(temp_media_type);
1194 char *temp_media_id = (char *)eina_list_nth(ts_msg, 14);
1195 if (temp_media_id) {
1196 message->media_id = strdup(temp_media_id);
1197 free(temp_media_id);
1200 int *temp_unique_id = (int *)eina_list_nth(ts_msg, 15);
1201 if (temp_unique_id) {
1202 message->unique_id = *temp_unique_id;
1203 free(temp_unique_id);
1209 Eina_Bool set_all_rows_read(const char *table_name)
1214 Eina_List *col_names = NULL;
1215 Eina_List *col_types = NULL;
1216 Eina_List *col_values = NULL;
1217 int un_read_res = 0;
1219 Eina_Bool ret = EINA_FALSE;
1221 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
1222 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1223 col_values = eina_list_append(col_values, &(un_read_res));
1225 char where_clause[1024];
1226 sprintf(where_clause, MESSAGE_INFO_TABLE_UNREAD" = 1");
1228 ret = update_table(table_name, col_names, col_types, col_values, where_clause);
1230 eina_list_free(col_names);
1231 eina_list_free(col_types);
1232 eina_list_free(col_values);
1236 void update_msg_into_db(tg_message_s *M, char *table_name)
1241 Eina_List *col_names = NULL;
1242 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
1243 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
1244 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
1245 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
1246 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
1247 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
1248 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
1249 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
1250 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
1251 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
1252 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
1253 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
1254 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
1255 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
1256 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
1258 Eina_List *col_types = NULL;
1259 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1260 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1261 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1262 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1263 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1264 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1265 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1266 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1267 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1268 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1269 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1270 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1271 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1272 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1273 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1275 Eina_List *col_values = NULL;
1276 col_values = eina_list_append(col_values, &(M->msg_id));
1277 col_values = eina_list_append(col_values, &(M->flags));
1278 col_values = eina_list_append(col_values, &(M->fwd_from_id));
1279 col_values = eina_list_append(col_values, &(M->fwd_date));
1280 col_values = eina_list_append(col_values, &(M->from_id));
1281 col_values = eina_list_append(col_values, &(M->to_id));
1282 col_values = eina_list_append(col_values, &(M->out));
1283 col_values = eina_list_append(col_values, &(M->unread));
1284 col_values = eina_list_append(col_values, &(M->date));
1285 col_values = eina_list_append(col_values, &(M->service));
1288 col_values = eina_list_append(col_values, M->message);
1290 col_values = eina_list_append(col_values, " ");
1292 col_values = eina_list_append(col_values, &(M->msg_state));
1293 col_values = eina_list_append(col_values, &(M->message_len));
1294 col_values = eina_list_append(col_values, &(M->media_type));
1295 col_values = eina_list_append(col_values, (M->media_id));
1297 char where_clause[1024];
1298 sprintf(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID" = %d", M->msg_id);
1299 update_table(table_name, col_names, col_types, col_values, where_clause);
1300 eina_list_free(col_names);
1301 eina_list_free(col_types);
1302 eina_list_free(col_values);
1306 int insert_current_date_to_table(char *tb_name)
1308 tg_message_s *last_msg = get_latest_message_from_message_table(tb_name, EINA_TRUE);
1312 int old_date = last_msg->date;
1313 time_t old_t = old_date;
1314 (void) localtime_r(&old_t, &old_lt);
1315 time_t new_t = time(NULL);
1316 (void) localtime_r(&new_t, &new_lt);
1317 if (old_lt.tm_mday == new_lt.tm_mday && old_lt.tm_mon == new_lt.tm_mon && old_lt.tm_year == new_lt.tm_year) {
1318 // no need of new date
1321 tg_message_s date_msg;
1322 date_msg.msg_id = get_time_stamp_in_macro();
1323 date_msg.media_type = tgl_message_media_none;
1324 int cur_time = time(NULL);
1325 cur_time = cur_time - 10;
1326 // convert time to string
1328 sprintf(res, "%d", cur_time);
1329 date_msg.date = cur_time;
1330 date_msg.message = res;
1331 date_msg.message_len = strlen(res);
1332 date_msg.service = 2;
1333 date_msg.unread = 0;
1335 date_msg.media_id = g_empty_char;
1336 date_msg.is_marked_for_delete = 0;
1337 insert_msg_into_db(&date_msg, tb_name, date_msg.msg_id);
1338 if (date_msg.msg_id < 0) {
1339 date_msg.msg_id = -1 * date_msg.msg_id;
1341 return date_msg.msg_id;
1345 tg_message_s date_msg;
1346 date_msg.msg_id = get_time_stamp_in_macro();
1347 date_msg.media_type = tgl_message_media_none;
1348 int cur_time = time(NULL);
1349 cur_time = cur_time - 10;
1350 // convert time to string
1352 sprintf(res, "%d", cur_time);
1353 date_msg.date = cur_time;
1354 date_msg.message = res;
1355 date_msg.message_len = strlen(res);
1356 date_msg.service = 2;
1357 date_msg.unread = 0;
1359 date_msg.media_id = g_empty_char;
1360 date_msg.is_marked_for_delete = 0;
1361 insert_msg_into_db(&date_msg, tb_name, date_msg.msg_id);
1362 if (date_msg.msg_id < 0) {
1363 date_msg.msg_id = -1 * date_msg.msg_id;
1365 return date_msg.msg_id;
1371 tg_message_s *get_message_from_message_table(long long msg_id, char *table_name)
1373 tg_message_s *message = NULL;
1374 Eina_List *message_details = NULL;
1376 Eina_List *col_names = NULL;
1377 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
1378 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
1379 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
1380 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
1381 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
1382 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
1383 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
1384 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
1385 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
1386 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
1387 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
1388 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
1389 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
1390 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
1391 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
1392 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
1394 Eina_List *col_types = NULL;
1395 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1396 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1397 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1398 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1399 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1400 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1401 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1402 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1403 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1404 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1405 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1406 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1407 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1408 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1409 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1410 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1412 char where_clause[1024];
1413 sprintf(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID" = %lld", msg_id);
1415 message_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
1417 eina_list_free(col_names);
1418 eina_list_free(col_types);
1420 if (message_details && eina_list_count(message_details) > 0) {
1421 Eina_List *ts_msg = eina_list_nth(message_details, 0);
1422 message = (tg_message_s*)malloc(sizeof(tg_message_s));
1423 int *temp_msg_id = (int *)eina_list_nth(ts_msg, 0);
1425 message->msg_id = *temp_msg_id;
1429 int *temp_flags = (int *)eina_list_nth(ts_msg, 1);
1431 message->flags = *temp_flags;
1435 int *temp_fwd_from_id = (int *)eina_list_nth(ts_msg, 2);
1436 if (temp_fwd_from_id) {
1437 message->fwd_from_id = *temp_fwd_from_id;
1438 free(temp_fwd_from_id);
1442 int *temp_fwd_date = (int *)eina_list_nth(ts_msg, 3);
1443 if (temp_fwd_date) {
1444 message->fwd_date = *temp_fwd_date;
1445 free(temp_fwd_date);
1448 int *temp_from_id = (int *)eina_list_nth(ts_msg, 4);
1450 message->from_id = *temp_from_id;
1454 int *temp_to_id = (int *)eina_list_nth(ts_msg, 5);
1456 message->to_id = *temp_to_id;
1460 int *temp_out = (int *)eina_list_nth(ts_msg, 6);
1462 message->out = *temp_out;
1466 int *temp_unread = (int *)eina_list_nth(ts_msg, 7);
1468 message->unread = *temp_unread;
1472 int *temp_date = (int *)eina_list_nth(ts_msg, 8);
1474 message->date = *temp_date;
1478 int *temp_service = (int *)eina_list_nth(ts_msg, 9);
1480 message->service = *temp_service;
1484 char *temp_msg = (char *)eina_list_nth(ts_msg, 10);
1486 message->message = strdup(temp_msg);
1490 int *temp_message_state = (int *)eina_list_nth(ts_msg, 11);
1491 if (temp_message_state) {
1492 message->msg_state = *temp_message_state;
1493 free(temp_message_state);
1496 int *temp_message_len = (int *)eina_list_nth(ts_msg, 12);
1497 if (temp_message_len) {
1498 message->message_len = *temp_message_len;
1499 free(temp_message_len);
1502 int *temp_media_type = (int *)eina_list_nth(ts_msg, 13);
1503 if (temp_media_type) {
1504 message->media_type = *temp_media_type;
1505 free(temp_media_type);
1508 char *temp_media_id = (char *)eina_list_nth(ts_msg, 14);
1509 if (temp_media_id) {
1510 message->media_id = strdup(temp_media_id);
1511 free(temp_media_id);
1514 int *temp_unique_id = (int *)eina_list_nth(ts_msg, 15);
1515 if (temp_unique_id) {
1516 message->unique_id = *temp_unique_id;
1517 free(temp_unique_id);
1523 Eina_List *get_messages_from_message_table_order_by(char *table_name, const char *order_column, Eina_Bool is_asc, unsigned int limit, unsigned int offset)
1525 tg_message_s *message = NULL;
1526 Eina_List *message_list = NULL;
1527 Eina_List *message_details = NULL;
1528 Eina_List *col_names = NULL;
1529 Eina_List *col_types = NULL;
1532 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
1533 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
1534 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
1535 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
1536 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
1537 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
1538 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
1539 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
1540 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
1541 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
1542 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
1543 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
1544 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
1545 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
1546 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
1547 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
1550 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1551 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1552 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1553 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1554 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1555 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1556 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1557 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1558 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1559 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1560 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1561 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1562 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1563 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1564 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1565 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1567 char where_clause[1024];
1568 sprintf(where_clause, MESSAGE_INFO_TABLE_MARKED_FOR_DELETE " != 1");
1570 message_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, order_column, is_asc, where_clause, limit, offset);
1572 eina_list_free(col_names);
1573 eina_list_free(col_types);
1575 Eina_List *ts_msg = NULL;
1577 EINA_LIST_FREE(message_details, ts_msg) {
1578 message = (tg_message_s*)malloc(sizeof(tg_message_s));
1579 message_list = eina_list_append(message_list, message);
1581 int *temp_msg_id = (int *)eina_list_nth(ts_msg, 0);
1583 message->msg_id = *temp_msg_id;
1587 int *temp_flags = (int *)eina_list_nth(ts_msg, 1);
1589 message->flags = *temp_flags;
1593 int *temp_fwd_from_id = (int *)eina_list_nth(ts_msg, 2);
1594 if (temp_fwd_from_id) {
1595 message->fwd_from_id = *temp_fwd_from_id;
1596 free(temp_fwd_from_id);
1599 int *temp_fwd_date = (int *)eina_list_nth(ts_msg, 3);
1600 if (temp_fwd_date) {
1601 message->fwd_date = *temp_fwd_date;
1602 free(temp_fwd_date);
1605 int *temp_from_id = (int *)eina_list_nth(ts_msg, 4);
1607 message->from_id = *temp_from_id;
1611 int *temp_to_id = (int *)eina_list_nth(ts_msg, 5);
1613 message->to_id = *temp_to_id;
1617 int *temp_out = (int *)eina_list_nth(ts_msg, 6);
1619 message->out = *temp_out;
1623 int *temp_unread = (int *)eina_list_nth(ts_msg, 7);
1625 message->unread = *temp_unread;
1629 int *temp_date = (int *)eina_list_nth(ts_msg, 8);
1631 message->date = *temp_date;
1635 int *temp_service = (int *)eina_list_nth(ts_msg, 9);
1637 message->service = *temp_service;
1641 char *temp_msg = (char *)eina_list_nth(ts_msg, 10);
1643 message->message = strdup(temp_msg);
1647 int *temp_message_state = (int *)eina_list_nth(ts_msg, 11);
1648 if (temp_message_state) {
1649 message->msg_state = *temp_message_state;
1650 free(temp_message_state);
1653 int *temp_message_len = (int *)eina_list_nth(ts_msg, 12);
1654 if (temp_message_len) {
1655 message->message_len = *temp_message_len;
1656 free(temp_message_len);
1659 int *temp_media_type = (int *)eina_list_nth(ts_msg, 13);
1660 if (temp_media_type) {
1661 message->media_type = *temp_media_type;
1662 free(temp_media_type);
1665 char *temp_media_id = (char *)eina_list_nth(ts_msg, 14);
1666 if (temp_media_id) {
1667 message->media_id = strdup(temp_media_id);
1668 free(temp_media_id);
1671 int *temp_unique_id = (int *)eina_list_nth(ts_msg, 15);
1672 if (temp_unique_id) {
1673 message->unique_id = *temp_unique_id;
1674 free(temp_unique_id);
1677 return message_list;
1682 void insert_or_update_peer_into_database(tg_peer_info_s* UC)
1688 char *table_name = PEER_INFO_TABLE_NAME;
1689 Eina_List *col_names = NULL;
1691 col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
1692 col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
1693 col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
1694 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
1695 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
1696 col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
1697 col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
1698 col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
1699 col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
1700 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
1701 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
1702 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
1705 Eina_List *col_types = NULL;
1706 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1707 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1708 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1709 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1710 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1711 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1712 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1713 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1714 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1715 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1716 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1717 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1720 Eina_List *col_values = NULL;
1721 col_values = eina_list_append(col_values, &(UC->peer_id));
1722 col_values = eina_list_append(col_values, &(UC->peer_type));
1723 col_values = eina_list_append(col_values, &(UC->flags));
1724 char last_msg_id_str[50];
1725 sprintf(last_msg_id_str, "%lld", UC->last_msg_id);
1726 col_values = eina_list_append(col_values, last_msg_id_str);
1728 // last message date
1730 col_values = eina_list_append(col_values, &(UC->last_msg_date));
1733 if (UC->print_name) {
1734 col_values = eina_list_append(col_values, UC->print_name);
1736 col_values = eina_list_append(col_values, g_empty_char);
1739 col_values = eina_list_append(col_values, &(UC->struct_version));
1740 col_values = eina_list_append(col_values, &(UC->no_of_unread_msgs));
1741 col_values = eina_list_append(col_values, &(UC->last_seen_time));
1742 col_values = eina_list_append(col_values, UC->photo_path);
1744 col_values = eina_list_append(col_values, &(UC->photo_id));
1745 col_values = eina_list_append(col_values, &(UC->is_unknown));
1747 Eina_Bool ret = insert_table(table_name, col_names, col_types, col_values);
1749 // already exist. So update the table
1750 char where_clause[1024];
1751 sprintf(where_clause, PEER_INFO_TABLE_CHAT_ID" = %d", UC->peer_id);
1752 ret = update_table(table_name, col_names, col_types, col_values, where_clause);
1756 eina_list_free(col_names);
1757 eina_list_free(col_types);
1758 eina_list_free(col_values);
1762 void insert_msg_into_db(tg_message_s *M, char *table_name, int unique_id)
1768 Eina_List *col_names = NULL;
1769 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
1770 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
1771 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
1772 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
1773 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
1774 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
1775 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
1776 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
1777 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
1778 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
1779 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
1780 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
1781 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
1782 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
1783 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
1784 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
1785 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MARKED_FOR_DELETE);
1787 Eina_List *col_types = NULL;
1788 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
1789 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1790 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1791 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1792 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1793 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1794 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1795 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1796 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1797 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1798 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1799 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1800 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1801 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1802 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1803 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1804 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1807 Eina_List *col_values = NULL;
1808 col_values = eina_list_append(col_values, &(M->msg_id));
1809 col_values = eina_list_append(col_values, &(M->flags));
1810 col_values = eina_list_append(col_values, &(M->fwd_from_id));
1811 col_values = eina_list_append(col_values, &(M->fwd_date));
1812 col_values = eina_list_append(col_values, &(M->from_id));
1813 col_values = eina_list_append(col_values, &(M->to_id));
1814 col_values = eina_list_append(col_values, &(M->out));
1815 col_values = eina_list_append(col_values, &(M->unread));
1816 col_values = eina_list_append(col_values, &(M->date));
1817 col_values = eina_list_append(col_values, &(M->service));
1820 col_values = eina_list_append(col_values, M->message);
1822 col_values = eina_list_append(col_values, " ");
1824 col_values = eina_list_append(col_values, &(M->msg_state));
1825 col_values = eina_list_append(col_values, &(M->message_len));
1826 col_values = eina_list_append(col_values, &(M->media_type));
1828 col_values = eina_list_append(col_values, M->media_id);
1830 col_values = eina_list_append(col_values, &unique_id);
1832 col_values = eina_list_append(col_values, &(M->is_marked_for_delete));
1834 Eina_Bool ret = insert_table(table_name, col_names, col_types, col_values);
1836 //("error: database creation failed");
1840 eina_list_free(col_names);
1841 eina_list_free(col_types);
1842 eina_list_free(col_values);
1846 void insert_media_info_to_db(tg_message_s *M, char *file_path, int width, int height, int size, char *latitude, char *longitude, char *first_name, char *last_name, char *phone_number)
1852 char *table_name = MEDIA_INFO_TABLE_NAME;
1853 Eina_List *col_names = NULL;
1854 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
1855 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
1856 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
1857 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
1858 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
1859 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
1860 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
1861 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
1862 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
1865 /********************************************************************/
1867 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
1868 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
1869 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
1870 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
1871 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
1872 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
1873 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
1874 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
1875 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
1877 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
1878 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
1879 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
1880 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
1881 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
1882 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
1883 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
1884 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
1885 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
1887 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
1888 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
1889 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
1890 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
1891 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
1892 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
1893 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
1894 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
1895 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
1897 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
1898 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
1899 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
1900 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
1901 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
1902 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
1903 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
1904 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
1905 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
1908 /********************************************************************/
1910 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
1911 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
1912 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
1913 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
1915 /****************************NEW****************************************/
1917 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MIME_TYPE);
1918 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_TYPE);
1919 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_WIDTH);
1920 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_HEIGHT);
1921 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_DURATION);
1922 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_SIZE);
1923 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_DC);
1924 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE);
1926 /****************************NEW****************************************/
1929 Eina_List *col_types = NULL;
1930 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1931 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1932 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1933 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1934 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1935 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1936 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1937 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1938 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1941 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1942 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1943 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1944 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1945 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1946 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1947 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1948 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1949 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1951 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1952 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1953 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1954 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1955 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1956 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1957 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1958 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1959 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1961 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1962 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1963 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1964 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1965 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1966 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1967 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1968 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1969 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1971 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1972 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1973 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1974 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1975 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1976 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1977 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1978 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1979 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1981 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1982 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1983 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1984 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1985 /****************************NEW****************************************/
1987 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1988 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1989 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1990 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1991 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1992 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1993 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
1994 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
1996 /****************************NEW****************************************/
1998 Eina_List *col_values = NULL;
2000 int media_type = M->media_type;
2002 col_values = eina_list_append(col_values, M->media_id);
2003 col_values = eina_list_append(col_values, &(media_type));
2005 if (media_type == tgl_message_media_photo) {
2009 * Should implement this to get the temp_val.
2010 * Currently it is ZERO always.
2013 col_values = eina_list_append(col_values, g_zero_char);
2014 col_values = eina_list_append(col_values, &g_zero_int);
2015 col_values = eina_list_append(col_values, &(M->date));
2016 col_values = eina_list_append(col_values, g_empty_char);
2019 col_values = eina_list_append(col_values, longitude);
2021 col_values = eina_list_append(col_values, g_zero_char);
2024 col_values = eina_list_append(col_values, latitude);
2026 col_values = eina_list_append(col_values, g_zero_char);
2030 col_values = eina_list_append(col_values, &temp_sizes);
2031 for (int j = 0; j < 4; j++) {
2032 col_values = eina_list_append(col_values, g_empty_char);
2033 col_values = eina_list_append(col_values, &g_base_int);
2034 col_values = eina_list_append(col_values, g_empty_char);
2035 col_values = eina_list_append(col_values, &g_base_int);
2036 col_values = eina_list_append(col_values, g_empty_char);
2037 col_values = eina_list_append(col_values, &width);
2038 col_values = eina_list_append(col_values, &height);
2039 col_values = eina_list_append(col_values, &size);
2040 col_values = eina_list_append(col_values, g_empty_char);
2042 } else if (media_type == tgl_message_media_document) {
2044 col_values = eina_list_append(col_values, &(temp_val));
2045 col_values = eina_list_append(col_values, &(temp_val));
2046 col_values = eina_list_append(col_values, &(temp_val));
2047 col_values = eina_list_append(col_values, g_empty_char);
2050 col_values = eina_list_append(col_values, longitude);
2052 col_values = eina_list_append(col_values, g_zero_char);
2055 col_values = eina_list_append(col_values, latitude);
2057 col_values = eina_list_append(col_values, g_zero_char);
2059 col_values = eina_list_append(col_values, &(temp_val));
2062 for (int j = 0; j < 4; j++) {
2064 col_values = eina_list_append(col_values, g_empty_char);
2065 col_values = eina_list_append(col_values, &g_base_int);
2066 col_values = eina_list_append(col_values, g_empty_char);
2067 col_values = eina_list_append(col_values, &g_base_int);
2068 col_values = eina_list_append(col_values, g_empty_char);
2069 col_values = eina_list_append(col_values, &width);
2070 col_values = eina_list_append(col_values, &height);
2071 col_values = eina_list_append(col_values, &size);
2072 col_values = eina_list_append(col_values, g_empty_char);
2075 } else if (media_type == tgl_message_media_geo) {
2077 col_values = eina_list_append(col_values, &g_zero_int);
2078 col_values = eina_list_append(col_values, &g_zero_int);
2079 col_values = eina_list_append(col_values, &g_zero_int);
2081 col_values = eina_list_append(col_values, g_empty_char);
2084 col_values = eina_list_append(col_values, longitude);
2086 col_values = eina_list_append(col_values, g_zero_char);
2089 col_values = eina_list_append(col_values, latitude);
2091 col_values = eina_list_append(col_values, g_zero_char);
2093 col_values = eina_list_append(col_values, &g_zero_int);
2095 for (int j = 0; j < 4; j++) {
2097 col_values = eina_list_append(col_values, g_empty_char);
2098 col_values = eina_list_append(col_values, &g_base_int);
2099 col_values = eina_list_append(col_values, g_empty_char);
2100 col_values = eina_list_append(col_values, &g_base_int);
2101 col_values = eina_list_append(col_values, g_empty_char);
2102 col_values = eina_list_append(col_values, &width);
2103 col_values = eina_list_append(col_values, &height);
2104 col_values = eina_list_append(col_values, &size);
2105 col_values = eina_list_append(col_values, g_empty_char);
2109 col_values = eina_list_append(col_values, &g_zero_int);
2110 col_values = eina_list_append(col_values, &g_zero_int);
2111 col_values = eina_list_append(col_values, &g_zero_int);
2113 col_values = eina_list_append(col_values, g_empty_char);
2116 col_values = eina_list_append(col_values, longitude);
2118 col_values = eina_list_append(col_values, g_zero_char);
2121 col_values = eina_list_append(col_values, latitude);
2123 col_values = eina_list_append(col_values, g_zero_char);
2125 col_values = eina_list_append(col_values, &g_zero_int);
2127 for (int j = 0; j < 4; j++) {
2129 col_values = eina_list_append(col_values, g_empty_char);
2130 col_values = eina_list_append(col_values, &g_base_int);
2131 col_values = eina_list_append(col_values, g_empty_char);
2132 col_values = eina_list_append(col_values, &g_base_int);
2133 col_values = eina_list_append(col_values, g_empty_char);
2134 col_values = eina_list_append(col_values, &width);
2135 col_values = eina_list_append(col_values, &height);
2136 col_values = eina_list_append(col_values, &size);
2137 col_values = eina_list_append(col_values, g_empty_char);
2142 col_values = eina_list_append(col_values, phone_number);
2144 col_values = eina_list_append(col_values, g_empty_char);
2148 col_values = eina_list_append(col_values, first_name);
2150 col_values = eina_list_append(col_values, g_empty_char);
2154 col_values = eina_list_append(col_values, last_name);
2156 col_values = eina_list_append(col_values, g_empty_char);
2163 col_values = eina_list_append(col_values, file_path);
2165 col_values = eina_list_append(col_values, g_empty_char);
2169 /*****************************************/
2170 col_values = eina_list_append(col_values, g_empty_char);
2172 char *mime_type = NULL;
2174 char *extn = strrchr(file_path, '.');
2177 extn = replace(extn, '.', "");
2182 mime_type_get_mime_type(extn, &mime_type);
2186 col_values = eina_list_append(col_values, mime_type);
2188 char *doc_type = "none";
2189 col_values = eina_list_append(col_values, doc_type);
2193 col_values = eina_list_append(col_values, &doc_width);
2196 col_values = eina_list_append(col_values, &doc_height);
2198 int doc_duration = 0;
2199 col_values = eina_list_append(col_values, &doc_duration);
2202 col_values = eina_list_append(col_values, &doc_size);
2205 col_values = eina_list_append(col_values, &doc_dc);
2207 const char *doc_thumb = NULL;
2208 get_thumbnail_from_video_url(file_path, &doc_thumb);
2211 doc_thumb = g_empty_char;
2214 col_values = eina_list_append(col_values, doc_thumb);
2216 /*****************************************/
2220 Eina_Bool ret = insert_table(table_name, col_names, col_types, col_values);
2222 //("error: database creation failed");
2226 eina_list_free(col_names);
2227 eina_list_free(col_types);
2228 eina_list_free(col_values);
2232 int get_media_size_from_db(long long media_id)
2235 char *table_name = MEDIA_INFO_TABLE_NAME;
2237 char where_clause[1024];
2238 sprintf(where_clause, MEDIA_INFO_TABLE_MEDIA_ID" = '%lld'", media_id);
2240 Eina_List *col_types = NULL;
2241 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2243 Eina_List *col_names = NULL;
2244 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_SIZE);
2246 Eina_List *vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
2250 eina_list_free(col_names);
2253 Eina_List *row_vals = NULL;
2256 EINA_LIST_FREE(vals, row_vals) {
2258 int *temp_video_size = (int *)eina_list_nth(row_vals, 0);
2259 if (temp_video_size) {
2260 video_size = *temp_video_size;
2263 EINA_LIST_FREE(row_vals, val) {
2272 eina_list_free(col_names);
2276 char *get_video_thumb_path_from_db(long long media_id)
2278 char *file_path = NULL;
2279 char *table_name = MEDIA_INFO_TABLE_NAME;
2281 char where_clause[1024];
2282 sprintf(where_clause, MEDIA_INFO_TABLE_MEDIA_ID" = '%lld'", media_id);
2284 Eina_List *col_types = NULL;
2285 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2287 Eina_List *col_names = NULL;
2288 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE);
2290 Eina_List *vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
2295 //free(where_clause);
2296 eina_list_free(col_names);
2299 Eina_List *row_vals = NULL;
2302 EINA_LIST_FREE(vals, row_vals) {
2304 char *temp_file_path = (char *)eina_list_nth(row_vals, 0);
2305 if (temp_file_path) {
2306 file_path = strdup(temp_file_path);
2310 EINA_LIST_FREE(row_vals, val) {
2320 //free(where_clause);
2321 eina_list_free(col_names);
2325 char *get_media_path_from_db(long long media_id)
2327 char *file_path = NULL;
2328 char *table_name = MEDIA_INFO_TABLE_NAME;
2330 char where_clause[1024];
2331 sprintf(where_clause, MEDIA_INFO_TABLE_MEDIA_ID" = '%lld'", media_id);
2333 Eina_List *col_types = NULL;
2334 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2336 Eina_List *col_names = NULL;
2337 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
2339 Eina_List *vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
2344 eina_list_free(col_names);
2347 // there will be only one item and one row
2348 Eina_List *first_row = eina_list_nth(vals, 0);
2349 char *temp_file_path = (char *)eina_list_nth(first_row, 0);
2351 file_path = strdup(temp_file_path);
2353 Eina_List *row_vals = NULL;
2355 EINA_LIST_FREE(vals, row_vals) {
2356 EINA_LIST_FREE(row_vals, val) {
2364 eina_list_free(col_names);
2368 Eina_List *get_image_sizes_from_db(long long media_id)
2370 Eina_List *vals = NULL;
2372 char *table_name = MEDIA_INFO_TABLE_NAME;
2373 char where_clause[1024];
2374 sprintf(where_clause, MEDIA_INFO_TABLE_MEDIA_ID" = '%lld'", media_id);
2376 Eina_List *col_types = NULL;
2377 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2378 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2379 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2380 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2381 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2382 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2383 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2384 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2385 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2386 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2387 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2388 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2390 Eina_List *col_names = NULL;
2391 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
2392 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
2393 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
2394 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
2395 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
2396 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
2397 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
2398 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
2399 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
2400 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
2401 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
2402 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
2403 vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
2404 eina_list_free(col_types);
2405 eina_list_free(col_names);
2409 Eina_List *get_image_details_from_db(long long media_id)
2411 Eina_List *vals = NULL;
2412 char *table_name = MEDIA_INFO_TABLE_NAME;
2414 char where_clause[1024];
2415 sprintf(where_clause, MEDIA_INFO_TABLE_MEDIA_ID" = '%lld'", media_id);
2417 Eina_List *col_types = NULL;
2418 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2419 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2420 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2421 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2422 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2423 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2424 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2425 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2426 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2428 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2429 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2430 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2431 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2432 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2433 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2434 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2435 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2436 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2439 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2440 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2441 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2442 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2443 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2444 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2445 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2446 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2447 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2450 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2451 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2452 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2453 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2454 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2455 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2456 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2457 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2458 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2461 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2462 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2463 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2464 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2465 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2466 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2467 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2468 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2469 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2471 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2472 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2473 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2474 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2476 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2477 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2478 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2479 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2480 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2481 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2482 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2483 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2485 Eina_List *col_names = NULL;
2486 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
2487 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
2488 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
2489 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
2490 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
2491 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
2492 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
2493 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
2494 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
2496 /********************************************************************/
2498 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
2499 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
2500 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
2501 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
2502 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
2503 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
2504 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
2505 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
2506 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
2508 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
2509 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
2510 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
2511 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
2512 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
2513 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
2514 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
2515 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
2516 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
2518 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
2519 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
2520 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
2521 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
2522 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
2523 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
2524 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
2525 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
2526 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
2528 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
2529 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
2530 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
2531 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
2532 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
2533 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
2534 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
2535 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
2536 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
2538 /********************************************************************/
2540 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
2541 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
2542 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
2543 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
2545 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MIME_TYPE);
2546 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_TYPE);
2547 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_WIDTH);
2548 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_HEIGHT);
2549 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_DURATION);
2550 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_SIZE);
2551 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_DC);
2552 col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE);
2554 vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
2555 eina_list_free(col_types);
2556 eina_list_free(col_names);
2560 Eina_List *get_all_buddy_details(char *start_name)
2562 Eina_List *user_details = NULL;
2563 const char* _name = start_name;
2565 _name = g_empty_char;
2568 char *table_name = BUDDY_INFO_TABLE_NAME;
2569 Eina_List *col_names = NULL;
2570 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
2571 col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
2572 col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
2573 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
2574 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
2575 col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
2576 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
2577 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
2578 col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
2579 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
2580 col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
2581 col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
2582 col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
2583 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
2584 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_BLOCKED);
2585 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_DELETED);
2586 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
2589 Eina_List *col_types = NULL;
2590 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
2591 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2592 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2593 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2594 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2595 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2596 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2597 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2598 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2599 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2600 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2601 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
2602 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2603 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2604 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2605 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2606 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
2608 char where_clause[1024];
2609 sprintf(where_clause, " ( "USER_INFO_TABLE_LAST_SEEN_TIME " > 0 AND "USER_INFO_TABLE_USER_ID " != 333000 AND "USER_INFO_TABLE_USER_ID " != 777000 AND "USER_INFO_TABLE_IS_UNKNOWN_PEER" = 0 AND "USER_INFO_TABLE_IS_DELETED" = 0 ) AND ("USER_INFO_TABLE_PRINT_NAME" LIKE '%s%s' )", _name, "%");
2611 user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_FIRST_NAME, EINA_TRUE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
2613 eina_list_free(col_names);
2614 eina_list_free(col_types);
2615 return user_details;
2618 Eina_List *load_buddy_data_by_name(int current_user, char *name)
2620 Eina_List *buddy_list = NULL;
2621 Eina_List *user_info = get_all_buddy_details(name);
2627 Eina_List *row_vals = NULL;
2628 EINA_LIST_FREE(user_info, row_vals) {
2632 int *temp_user_id = (int *)eina_list_nth(row_vals, 0);
2633 if (current_user == (*temp_user_id)) {
2635 EINA_LIST_FREE(row_vals, val) {
2642 user_data_s* user_data = (user_data_s*)malloc(sizeof(user_data_s));
2643 user_data->is_selected = EINA_FALSE;
2646 user_data->user_id.id = *temp_user_id;
2647 user_data->user_id.type = TGL_PEER_USER;
2651 char *print_name = (char *)eina_list_nth(row_vals, 1);
2653 user_data->print_name = strdup(print_name);
2656 user_data->print_name = NULL;
2659 int *temp_struct_ver = (int *)eina_list_nth(row_vals, 2);
2660 if (temp_struct_ver) {
2661 user_data->structure_version = *temp_struct_ver;
2662 free(temp_struct_ver);
2665 char *photo_path = (char *)eina_list_nth(row_vals, 3);
2667 user_data->photo_path = strdup(photo_path);
2670 user_data->photo_path = NULL;
2674 int *temp_photo_id = (int *)eina_list_nth(row_vals, 4);
2675 if (temp_photo_id) {
2676 user_data->photo_id = *temp_photo_id;
2677 free(temp_photo_id);
2680 char *first_name = (char *)eina_list_nth(row_vals, 5);
2682 user_data->first_name = strdup(first_name);
2685 user_data->first_name = NULL;
2688 char *last_name = (char *)eina_list_nth(row_vals, 6);
2690 user_data->last_name = strdup(last_name);
2693 user_data->last_name = NULL;
2696 char *phone_no = (char *)eina_list_nth(row_vals, 7);
2698 user_data->phone = strdup(phone_no);
2701 user_data->phone = NULL;
2704 int *temp_access_hash = (int *)eina_list_nth(row_vals, 8);
2705 if (temp_access_hash) {
2706 user_data->access_hash = *temp_access_hash;
2707 free(temp_access_hash);
2710 char *real_first_name = (char *)eina_list_nth(row_vals, 9);
2711 if (real_first_name) {
2712 user_data->real_first_name = strdup(real_first_name);
2713 free(real_first_name);
2715 user_data->real_first_name = NULL;
2718 char *real_last_name = (char *)eina_list_nth(row_vals, 10);
2719 if (real_last_name) {
2720 user_data->real_last_name = strdup(real_last_name);
2721 free(real_last_name);
2723 user_data->real_last_name = NULL;
2726 char *user_name = (char *)eina_list_nth(row_vals, 11);
2728 user_data->username = strdup(user_name);
2731 user_data->username = NULL;
2734 int *temp_online_status = (int *)eina_list_nth(row_vals, 12);
2735 if (temp_online_status) {
2736 user_data->online = *temp_online_status;
2737 free(temp_online_status);
2740 int *temp_last_seen = (int *)eina_list_nth(row_vals, 13);
2741 if (temp_last_seen) {
2742 user_data->last_seen = *temp_last_seen;
2743 free(temp_last_seen);
2746 int *temp_is_blocked = (int *)eina_list_nth(row_vals, 14);
2747 if (temp_is_blocked) {
2748 user_data->is_blocked = *temp_is_blocked;
2749 free(temp_is_blocked);
2752 int *temp_is_deleted = (int *)eina_list_nth(row_vals, 15);
2753 if (temp_is_deleted) {
2754 user_data->is_deleted = *temp_is_deleted;
2755 free(temp_is_deleted);
2758 int *temp_is_unknown = (int *)eina_list_nth(row_vals, 16);
2759 if (temp_is_unknown) {
2760 user_data->is_unknown = *temp_is_unknown;
2761 free(temp_is_unknown);
2764 user_data_with_pic_s *item = (user_data_with_pic_s*) malloc(sizeof(user_data_with_pic_s));
2765 item->use_data = user_data;
2766 item->contact_icon = NULL;
2767 buddy_list = eina_list_append(buddy_list, item);
2768 eina_list_free(row_vals);
2774 Eina_List *load_peer_data_by_name(char *name)
2776 Eina_List *peer_list = NULL;
2777 Eina_List *peer_details = get_all_peer_details(name);
2779 Eina_List *ts_msg = NULL;
2780 EINA_LIST_FREE(peer_details, ts_msg) {
2781 tg_peer_info_s* peer_info = (tg_peer_info_s*)malloc(sizeof(tg_peer_info_s));
2782 int *temp_peer_id = (int *)eina_list_nth(ts_msg, 0);
2784 peer_info->peer_id = *temp_peer_id;
2788 int *temp_peer_type = (int *)eina_list_nth(ts_msg, 1);
2789 if (temp_peer_type) {
2790 peer_info->peer_type = *temp_peer_type;
2791 free(temp_peer_type);
2794 int *temp_flags = (int *)eina_list_nth(ts_msg, 2);
2796 peer_info->flags = *temp_flags;
2800 char *temp_msg_id = (char *)eina_list_nth(ts_msg, 3);
2802 peer_info->last_msg_id = atoll(temp_msg_id);
2805 peer_info->last_msg_id = 0;
2808 int *temp_last_msg_date = (int *)eina_list_nth(ts_msg, 4);
2809 if (temp_last_msg_date) {
2810 peer_info->last_msg_date = *temp_last_msg_date;
2811 free(temp_last_msg_date);
2814 char *temp_print_name = (char *)eina_list_nth(ts_msg, 5);
2815 if (temp_print_name) {
2816 peer_info->print_name = strdup(temp_print_name);
2817 free(temp_print_name);
2819 peer_info->print_name = NULL;
2822 int *temp_struct_ver = (int *)eina_list_nth(ts_msg, 6);
2823 if (temp_struct_ver) {
2824 peer_info->struct_version = *temp_struct_ver;
2825 free(temp_struct_ver);
2828 int *temp_no_unread = (int *)eina_list_nth(ts_msg, 7);
2829 if (temp_no_unread) {
2830 peer_info->no_of_unread_msgs = *temp_no_unread;
2831 free(temp_no_unread);
2834 int *temp_last_seen = (int *)eina_list_nth(ts_msg, 8);
2835 if (temp_last_seen) {
2836 peer_info->last_seen_time = *temp_last_seen;
2837 free(temp_last_seen);
2840 char *temp_pic_path = (char *)eina_list_nth(ts_msg, 9);
2841 if (temp_pic_path) {
2842 peer_info->photo_path = strdup(temp_pic_path);
2843 free(temp_pic_path);
2845 peer_info->photo_path = NULL;
2848 int *temp_pic_id = (int *)eina_list_nth(ts_msg, 10);
2850 peer_info->photo_id = *temp_pic_id;
2854 int *temp_unknown = (int *)eina_list_nth(ts_msg, 11);
2856 peer_info->is_unknown = *temp_unknown;
2860 eina_list_free(ts_msg);
2861 peer_with_pic_s *item = (peer_with_pic_s*) malloc(sizeof(peer_with_pic_s));
2862 item->use_data = peer_info;
2863 item->contact_icon = NULL;
2864 peer_list = eina_list_append(peer_list, item);
2869 void free_media_details(tgl_media_s *media_msg)
2872 if (media_msg->caption) {
2873 free(media_msg->caption);
2875 if (media_msg->longitude) {
2876 free(media_msg->longitude);
2878 if (media_msg->latitude) {
2879 free(media_msg->latitude);
2881 if (media_msg->phone_no) {
2882 free(media_msg->phone_no);
2884 if (media_msg->first_name) {
2885 free(media_msg->first_name);
2887 if (media_msg->last_name) {
2888 free(media_msg->last_name);
2890 if (media_msg->file_path) {
2891 free(media_msg->file_path);
2893 if (media_msg->photo_type1) {
2894 free(media_msg->photo_type1);
2896 if (media_msg->photo_data1) {
2897 free(media_msg->photo_data1);
2899 if (media_msg->photo_type2) {
2900 free(media_msg->photo_type2);
2902 if (media_msg->photo_data2) {
2903 free(media_msg->photo_data2);
2905 if (media_msg->photo_type3) {
2906 free(media_msg->photo_type3);
2908 if (media_msg->photo_data3) {
2909 free(media_msg->photo_data3);
2911 if (media_msg->photo_type4) {
2912 free(media_msg->photo_type4);
2914 if (media_msg->photo_data4) {
2915 free(media_msg->photo_data4);
2917 if (media_msg->mime_type) {
2918 free(media_msg->mime_type);
2920 if (media_msg->doc_type) {
2921 free(media_msg->doc_type);
2926 tgl_media_s *get_media_details_from_db(long long media_id)
2928 Eina_List *img_details = get_image_details_from_db(media_id);
2934 tgl_media_s* media_info = (tgl_media_s*)malloc(sizeof(tgl_media_s));
2936 Eina_List *row_vals = eina_list_nth(img_details, 0);
2938 char *temp_media_id = (char *)eina_list_nth(row_vals, 0);
2940 if (temp_media_id) {
2941 media_info->media_id = atoll(temp_media_id);
2942 free(temp_media_id);
2944 media_info->media_id = 0;
2947 int* temp_media_type = (int *)eina_list_nth(row_vals, 1);
2949 if (temp_media_type) {
2950 media_info->media_type = *temp_media_type;
2951 free(temp_media_type);
2953 media_info->media_type = -1;
2956 char *temp_access_hash = (char *)eina_list_nth(row_vals, 2);
2958 if (temp_access_hash) {
2959 media_info->access_hash = atoll(temp_access_hash);
2960 free(temp_access_hash);
2962 media_info->access_hash = 0;
2965 int* temp_user_id = (int *)eina_list_nth(row_vals, 3);
2968 media_info->user_id = *temp_user_id;
2971 media_info->user_id = 0;
2974 int* temp_date = (int *)eina_list_nth(row_vals, 4);
2977 media_info->date = *temp_date;
2980 media_info->date = 0;
2983 char *temp_caption = (char *)eina_list_nth(row_vals, 5);
2986 media_info->caption = strdup(temp_caption);
2990 char *temp_longitude = (char *)eina_list_nth(row_vals, 6);
2992 if (temp_longitude) {
2993 media_info->longitude = strdup(temp_longitude);
2994 free(temp_longitude);
2996 media_info->longitude = 0;
2999 char *temp_latitude = (char *)eina_list_nth(row_vals, 7);
3001 if (temp_latitude) {
3002 media_info->latitude = strdup(temp_latitude);
3003 free(temp_latitude);
3005 media_info->latitude = 0;
3008 int* temp_sizes = (int *)eina_list_nth(row_vals, 8);
3011 media_info->sizes = *temp_sizes;
3014 media_info->sizes = 0;
3017 /***************************************************************/
3019 char *temp_photo_type1 = (char *)eina_list_nth(row_vals, 9);
3020 if (temp_photo_type1 && strlen(temp_photo_type1) > 0) {
3021 media_info->photo_type1 = strdup(temp_photo_type1);
3022 free(temp_photo_type1);
3024 media_info->photo_type1 = 0;
3028 int* temp_photo_loc_dc1 = (int *)eina_list_nth(row_vals, 10);
3029 if (temp_photo_loc_dc1) {
3030 media_info->photo_loc_dc1 = *temp_photo_loc_dc1;
3031 free(temp_photo_loc_dc1);
3033 media_info->photo_loc_dc1 = 0;
3037 char *temp_photo_loc_vol1 = (char *)eina_list_nth(row_vals, 11);
3038 if (temp_photo_loc_vol1 && strlen(temp_photo_loc_vol1) > 0) {
3039 media_info->photo_loc_vol1 = atoll(temp_photo_loc_vol1);
3040 free(temp_photo_loc_vol1);
3042 media_info->photo_loc_vol1 = 0;
3046 int* temp_photo_loc_id1 = (int *)eina_list_nth(row_vals, 12);
3047 if (temp_photo_loc_id1) {
3048 media_info->photo_loc_id1 = *temp_photo_loc_id1;
3049 free(temp_photo_loc_id1);
3051 media_info->photo_loc_id1 = 0;
3054 char *temp_photo_loc_sec1 = (char *)eina_list_nth(row_vals, 13);
3055 if (temp_photo_loc_sec1 && strlen(temp_photo_loc_sec1) > 0) {
3056 media_info->photo_loc_sec1 = atoll(temp_photo_loc_sec1);
3057 free(temp_photo_loc_sec1);
3059 media_info->photo_loc_sec1 = 0;
3063 int* temp_photo_width1 = (int *)eina_list_nth(row_vals, 14);
3064 if (temp_photo_width1) {
3065 media_info->photo_width1 = *temp_photo_width1;
3066 free(temp_photo_width1);
3068 media_info->photo_width1 = 0;
3072 int* temp_photo_height1 = (int *)eina_list_nth(row_vals, 15);
3073 if (temp_photo_height1) {
3074 media_info->photo_height1 = *temp_photo_height1;
3075 free(temp_photo_height1);
3077 media_info->photo_height1 = 0;
3080 int* temp_photo_size1 = (int *)eina_list_nth(row_vals, 16);
3081 if (temp_photo_size1) {
3082 media_info->photo_size1 = *temp_photo_size1;
3083 free(temp_photo_size1);
3085 media_info->photo_size1 = 0;
3089 char *temp_photo_data1 = (char *)eina_list_nth(row_vals, 17);
3090 if (temp_photo_data1 && strlen(temp_photo_data1) > 0) {
3091 media_info->photo_data1 = strdup(temp_photo_data1);
3092 free(temp_photo_data1);
3094 media_info->photo_data1 = 0;
3098 char *temp_photo_type2 = (char *)eina_list_nth(row_vals, 18);
3099 if (temp_photo_type2 && strlen(temp_photo_type2) > 0) {
3100 media_info->photo_type2 = strdup(temp_photo_type2);
3101 free(temp_photo_type2);
3103 media_info->photo_type2 = 0;
3107 int* temp_photo_loc_dc2 = (int *)eina_list_nth(row_vals, 19);
3108 if (temp_photo_loc_dc2) {
3109 media_info->photo_loc_dc2 = *temp_photo_loc_dc2;
3110 free(temp_photo_loc_dc2);
3112 media_info->photo_loc_dc2 = 0;
3116 char *temp_photo_loc_vol2 = (char *)eina_list_nth(row_vals, 20);
3117 if (temp_photo_loc_vol2 && strlen(temp_photo_loc_vol2) > 0) {
3118 media_info->photo_loc_vol2 = atoll(temp_photo_loc_vol2);
3119 free(temp_photo_loc_vol2);
3121 media_info->photo_loc_vol2 = 0;
3125 int* temp_photo_loc_id2 = (int *)eina_list_nth(row_vals, 21);
3126 if (temp_photo_loc_id2) {
3127 media_info->photo_loc_id2 = *temp_photo_loc_id2;
3128 free(temp_photo_loc_id2);
3130 media_info->photo_loc_id2 = 0;
3133 char *temp_photo_loc_sec2 = (char *)eina_list_nth(row_vals, 22);
3134 if (temp_photo_loc_sec2 && strlen(temp_photo_loc_sec2) > 0) {
3135 media_info->photo_loc_sec2 = atoll(temp_photo_loc_sec2);
3136 free(temp_photo_loc_sec2);
3138 media_info->photo_loc_sec2 = 0;
3142 int* temp_photo_width2 = (int *)eina_list_nth(row_vals, 23);
3143 if (temp_photo_width2) {
3144 media_info->photo_width2 = *temp_photo_width2;
3145 free(temp_photo_width2);
3147 media_info->photo_width2 = 0;
3151 int* temp_photo_height2 = (int *)eina_list_nth(row_vals, 24);
3152 if (temp_photo_height2) {
3153 media_info->photo_height2 = *temp_photo_height2;
3154 free(temp_photo_height2);
3156 media_info->photo_height2 = 0;
3159 int* temp_photo_size2 = (int *)eina_list_nth(row_vals, 25);
3160 if (temp_photo_size2) {
3161 media_info->photo_size2 = *temp_photo_size2;
3162 free(temp_photo_size2);
3164 media_info->photo_size2 = 0;
3168 char *temp_photo_data2 = (char *)eina_list_nth(row_vals, 26);
3169 if (temp_photo_data2 && strlen(temp_photo_data2) > 0) {
3170 media_info->photo_data2 = strdup(temp_photo_data2);
3171 free(temp_photo_data2);
3173 media_info->photo_data2 = 0;
3176 char *temp_photo_type3 = (char *)eina_list_nth(row_vals, 27);
3177 if (temp_photo_type3 && strlen(temp_photo_type3) > 0) {
3178 media_info->photo_type3 = strdup(temp_photo_type3);
3179 free(temp_photo_type3);
3181 media_info->photo_type3 = 0;
3185 int* temp_photo_loc_dc3 = (int *)eina_list_nth(row_vals, 28);
3186 if (temp_photo_loc_dc3) {
3187 media_info->photo_loc_dc3 = *temp_photo_loc_dc3;
3188 free(temp_photo_loc_dc3);
3190 media_info->photo_loc_dc3 = 0;
3194 char *temp_photo_loc_vol3 = (char *)eina_list_nth(row_vals, 29);
3195 if (temp_photo_loc_vol3 && strlen(temp_photo_loc_vol3) > 0) {
3196 media_info->photo_loc_vol3 = atoll(temp_photo_loc_vol3);
3197 free(temp_photo_loc_vol3);
3199 media_info->photo_loc_vol3 = 0;
3203 int* temp_photo_loc_id3 = (int *)eina_list_nth(row_vals, 30);
3204 if (temp_photo_loc_id3) {
3205 media_info->photo_loc_id3 = *temp_photo_loc_id3;
3206 free(temp_photo_loc_id3);
3208 media_info->photo_loc_id3 = 0;
3211 char *temp_photo_loc_sec3 = (char *)eina_list_nth(row_vals, 31);
3212 if (temp_photo_loc_sec3 && strlen(temp_photo_loc_sec3) > 0) {
3213 media_info->photo_loc_sec3 = atoll(temp_photo_loc_sec3);
3214 free(temp_photo_loc_sec3);
3216 media_info->photo_loc_sec3 = 0;
3220 int* temp_photo_width3 = (int *)eina_list_nth(row_vals, 32);
3221 if (temp_photo_width3) {
3222 media_info->photo_width3 = *temp_photo_width3;
3223 free(temp_photo_width3);
3225 media_info->photo_width3 = 0;
3229 int* temp_photo_height3 = (int *)eina_list_nth(row_vals, 33);
3230 if (temp_photo_height3) {
3231 media_info->photo_height3 = *temp_photo_height3;
3232 free(temp_photo_height3);
3234 media_info->photo_height3 = 0;
3237 int* temp_photo_size3 = (int *)eina_list_nth(row_vals, 34);
3238 if (temp_photo_size3) {
3239 media_info->photo_size3 = *temp_photo_size3;
3240 free(temp_photo_size3);
3242 media_info->photo_size3 = 0;
3246 char *temp_photo_data3 = (char *)eina_list_nth(row_vals, 35);
3247 if (temp_photo_data3 && strlen(temp_photo_data3) > 0) {
3248 media_info->photo_data3 = strdup(temp_photo_data3);
3249 free(temp_photo_data3);
3251 media_info->photo_data3 = 0;
3254 char *temp_photo_type4 = (char *)eina_list_nth(row_vals, 36);
3255 if (temp_photo_type4 && strlen(temp_photo_type4) > 0) {
3256 media_info->photo_type4 = strdup(temp_photo_type4);
3257 free(temp_photo_type4);
3259 media_info->photo_type4 = 0;
3263 int* temp_photo_loc_dc4 = (int *)eina_list_nth(row_vals, 37);
3264 if (temp_photo_loc_dc4) {
3265 media_info->photo_loc_dc4 = *temp_photo_loc_dc4;
3266 free(temp_photo_loc_dc4);
3268 media_info->photo_loc_dc4 = 0;
3272 char *temp_photo_loc_vol4 = (char *)eina_list_nth(row_vals, 38);
3273 if (temp_photo_loc_vol4 && strlen(temp_photo_loc_vol4) > 0) {
3274 media_info->photo_loc_vol4 = atoll(temp_photo_loc_vol4);
3275 free(temp_photo_loc_vol4);
3277 media_info->photo_loc_vol4 = 0;
3281 int* temp_photo_loc_id4 = (int *)eina_list_nth(row_vals, 39);
3282 if (temp_photo_loc_id4) {
3283 media_info->photo_loc_id4 = *temp_photo_loc_id4;
3284 free(temp_photo_loc_id4);
3286 media_info->photo_loc_id4 = 0;
3289 char *temp_photo_loc_sec4 = (char *)eina_list_nth(row_vals, 40);
3290 if (temp_photo_loc_sec4 && strlen(temp_photo_loc_sec4) > 0) {
3291 media_info->photo_loc_sec4 = atoll(temp_photo_loc_sec4);
3292 free(temp_photo_loc_sec4);
3294 media_info->photo_loc_sec4 = 0;
3298 int* temp_photo_width4 = (int *)eina_list_nth(row_vals, 41);
3299 if (temp_photo_width4) {
3300 media_info->photo_width4 = *temp_photo_width4;
3301 free(temp_photo_width4);
3303 media_info->photo_width4 = 0;
3307 int* temp_photo_height4 = (int *)eina_list_nth(row_vals, 42);
3308 if (temp_photo_height4) {
3309 media_info->photo_height4 = *temp_photo_height4;
3310 free(temp_photo_height4);
3312 media_info->photo_height4 = 0;
3315 int* temp_photo_size4 = (int *)eina_list_nth(row_vals, 43);
3316 if (temp_photo_size4) {
3317 media_info->photo_size4 = *temp_photo_size4;
3318 free(temp_photo_size4);
3320 media_info->photo_size4 = 0;
3324 char *temp_photo_data4 = (char *)eina_list_nth(row_vals, 44);
3325 if (temp_photo_data4 && strlen(temp_photo_data4) > 0) {
3326 media_info->photo_data4 = strdup(temp_photo_data4);
3327 free(temp_photo_data4);
3329 media_info->photo_data4 = 0;
3333 /**************************************************************/
3335 char *temp_phone_no = (char *)eina_list_nth(row_vals, 45);
3337 if (temp_phone_no && strlen(temp_phone_no) > 0) {
3338 media_info->phone_no = strdup(temp_phone_no);
3339 free(temp_phone_no);
3341 media_info->phone_no = 0;
3344 char *temp_first_name = (char *)eina_list_nth(row_vals, 46);
3346 if (temp_first_name && strlen(temp_first_name) > 0) {
3347 media_info->first_name = strdup(temp_first_name);
3348 free(temp_first_name);
3350 media_info->first_name = 0;
3353 char *temp_last_name = (char *)eina_list_nth(row_vals, 47);
3355 if (temp_last_name && strlen(temp_last_name) > 0) {
3356 media_info->last_name = strdup(temp_last_name);
3357 free(temp_last_name);
3359 media_info->last_name = 0;
3362 char *temp_file_path = (char *)eina_list_nth(row_vals, 48);
3364 if (temp_file_path && strlen(temp_file_path) > 0) {
3365 media_info->file_path = strdup(temp_file_path);
3366 free(temp_file_path);
3368 media_info->file_path = 0;
3371 char *temp_mime_type = (char *)eina_list_nth(row_vals, 49);
3373 if (temp_mime_type && strlen(temp_mime_type) > 0) {
3374 media_info->mime_type = strdup(temp_mime_type);
3375 free(temp_mime_type);
3377 media_info->mime_type = 0;
3380 char *temp_doc_type = (char *)eina_list_nth(row_vals, 50);
3382 if (temp_doc_type && strlen(temp_doc_type) > 0) {
3383 media_info->doc_type = strdup(temp_doc_type);
3384 free(temp_doc_type);
3386 media_info->doc_type = 0;
3389 int* temp_doc_width = (int *)eina_list_nth(row_vals, 51);
3390 if (temp_doc_width) {
3391 media_info->doc_width = *temp_doc_width;
3392 free(temp_doc_width);
3394 media_info->doc_width = 0;
3397 int* temp_doc_height = (int *)eina_list_nth(row_vals, 52);
3398 if (temp_doc_height) {
3399 media_info->doc_height = *temp_doc_height;
3400 free(temp_doc_height);
3402 media_info->doc_height = 0;
3405 int* temp_doc_duration = (int *)eina_list_nth(row_vals, 53);
3406 if (temp_doc_duration) {
3407 media_info->doc_duration = *temp_doc_duration;
3408 free(temp_doc_duration);
3410 media_info->doc_duration = 0;
3413 int* temp_doc_size = (int *)eina_list_nth(row_vals, 54);
3414 if (temp_doc_size) {
3415 media_info->doc_size = *temp_doc_size;
3416 free(temp_doc_size);
3418 media_info->doc_size = 0;
3421 eina_list_free(row_vals);
3427 Eina_List *get_all_peer_ids()
3429 Eina_List *peer_details = NULL;
3430 char *table_name = PEER_INFO_TABLE_NAME;
3431 Eina_List *col_names = NULL;
3432 Eina_List *col_types = NULL;
3434 col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
3435 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
3436 peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
3438 eina_list_free(col_names);
3439 eina_list_free(col_types);
3440 return peer_details;
3443 int get_number_of_unread_messages()
3445 int no_of_unread = 0;
3446 Eina_List *peer_details = get_all_peer_ids();
3448 Eina_List *ts_msg = NULL;
3450 EINA_LIST_FREE(peer_details, ts_msg) {
3451 int *temp_peer_id = (int *)eina_list_nth(ts_msg, 0);
3453 peer_id = *temp_peer_id;
3455 temp_peer_id = NULL;
3457 char *msg_table = get_table_name_from_number(peer_id);
3460 count = get_unread_message_count(msg_table);
3462 no_of_unread = no_of_unread + count;
3464 eina_list_free(ts_msg);
3466 return no_of_unread;
3469 void create_buddy_msg_table(const char *table_name)
3474 // create user info table
3475 Eina_List *col_names = NULL;
3476 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
3477 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
3478 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
3479 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
3480 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
3481 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
3482 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
3483 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
3484 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
3485 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
3486 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
3487 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
3488 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
3489 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
3490 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
3491 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
3492 col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MARKED_FOR_DELETE);
3495 Eina_List *col_types = NULL;
3496 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
3497 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3498 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3499 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3500 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3501 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3502 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3503 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3504 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3505 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3506 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
3507 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3508 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3509 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3510 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
3511 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3512 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3514 Eina_Bool ret = create_table(table_name, col_names, col_types);
3516 DBG("create_table failed");
3519 /* Create index only when creating a table is suceeded */
3520 create_index(table_name, "date");
3522 eina_list_free(col_names);
3523 eina_list_free(col_types);
3527 Eina_Bool mark_all_records_for_deletion(char *tablename)
3532 char var_query[1024];
3533 sprintf(var_query, "UPDATE %s SET "MESSAGE_INFO_TABLE_MARKED_FOR_DELETE" = 1 WHERE "MESSAGE_INFO_TABLE_MARKED_FOR_DELETE" = 0;", tablename);
3537 sqlite3* db = create_database();
3538 ret = sqlite3_exec(db, var_query, NULL, NULL, &err_msg);
3540 if (ret != SQLITE_OK) {
3541 sqlite3_free(err_msg);
3549 void get_buddy_contact_details_from_db(int buddy_id, char **first_name, char **last_name, char **phone_number)
3551 char *file_path = NULL;
3552 char *table_name = BUDDY_INFO_TABLE_NAME;
3554 char where_clause[1024];
3555 sprintf(where_clause, USER_INFO_TABLE_USER_ID" = %d", buddy_id);
3557 Eina_List *col_types = NULL;
3558 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
3559 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
3560 col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
3562 Eina_List *col_names = NULL;
3563 col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
3564 col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
3565 col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
3567 Eina_List *vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
3569 eina_list_free(col_names);
3574 Eina_List *row_vals = NULL;
3576 EINA_LIST_FREE(vals, row_vals) {
3578 char *temp_fname = (char *)eina_list_nth(row_vals, 0);
3579 *first_name = strdup(temp_fname);
3580 char *temp_lname = (char *)eina_list_nth(row_vals, 1);
3581 *last_name = strdup(temp_lname);
3582 char *temp_pnumber = (char *)eina_list_nth(row_vals, 2);
3583 *phone_number = strdup(temp_pnumber);
3586 EINA_LIST_FREE(row_vals, val) {
3592 eina_list_free(vals);
3597 Eina_Bool delete_date_messages_from_table(char *tablename)
3603 char var_query[1024];
3604 sprintf(var_query, "DELETE FROM %s WHERE "MESSAGE_INFO_TABLE_SERVICE" = 2;", tablename);
3608 sqlite3* db = create_database();
3609 ret = sqlite3_exec(db, var_query, NULL, NULL, &err_msg);
3611 if (ret != SQLITE_OK) {
3612 sqlite3_free(err_msg);
3618 Eina_Bool mark_group_chat_as_unknown(int chat_id)
3620 char *table_name = PEER_INFO_TABLE_NAME;
3621 Eina_List *col_types = NULL;
3622 Eina_List *col_names = NULL;
3623 Eina_List *col_values = NULL;
3624 //char *where_clause = NULL;
3625 int un_read_res = 1;
3629 col_names = eina_list_append(col_names, USER_INFO_TABLE_IS_UNKNOWN_PEER);
3630 col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
3631 col_values = eina_list_append(col_values, &(un_read_res));
3633 char where_clause[1024];
3634 sprintf(where_clause, PEER_INFO_TABLE_CHAT_ID" = %d", chat_id);
3636 ret = update_table(table_name, col_names, col_types, col_values, where_clause);
3638 eina_list_free(col_names);
3639 eina_list_free(col_types);
3640 eina_list_free(col_values);