Actually load from and store form history in the database
This commit is contained in:
parent
76b575e42f
commit
cc810f374d
1 changed files with 72 additions and 8 deletions
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2009 Alexander Butenko <a.butenka@gmail.com>
|
Copyright (C) 2009 Alexander Butenko <a.butenka@gmail.com>
|
||||||
|
Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -108,8 +109,21 @@ formhistory_update_database (gpointer db,
|
||||||
const gchar* value)
|
const gchar* value)
|
||||||
{
|
{
|
||||||
#if HAVE_SQLITE
|
#if HAVE_SQLITE
|
||||||
/* FIXME: Write keys to the database */
|
gchar* sqlcmd;
|
||||||
/* g_print (":: %s= %s\n", key, value); */
|
gchar* errmsg;
|
||||||
|
gint success;
|
||||||
|
|
||||||
|
sqlcmd = sqlite3_mprintf ("INSERT INTO forms VALUES"
|
||||||
|
"('%q', '%q', '%q')",
|
||||||
|
NULL, key, value);
|
||||||
|
success = sqlite3_exec (db, sqlcmd, NULL, NULL, &errmsg);
|
||||||
|
sqlite3_free (sqlcmd);
|
||||||
|
if (success != SQLITE_OK)
|
||||||
|
{
|
||||||
|
g_printerr (_("Failed to add form value: %s\n"), errmsg);
|
||||||
|
g_free (errmsg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +154,7 @@ formhistory_update_main_hash (GHashTable* keys,
|
||||||
G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY))
|
G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY))
|
||||||
{
|
{
|
||||||
gchar* new_value = g_strdup_printf ("%s%s,", tmp, rvalue);
|
gchar* new_value = g_strdup_printf ("%s%s,", tmp, rvalue);
|
||||||
g_hash_table_replace (global_keys, key, new_value);
|
g_hash_table_insert (global_keys, g_strdup (key), new_value);
|
||||||
formhistory_update_database (db, key, value);
|
formhistory_update_database (db, key, value);
|
||||||
}
|
}
|
||||||
g_free (rvalue);
|
g_free (rvalue);
|
||||||
|
@ -148,7 +162,7 @@ formhistory_update_main_hash (GHashTable* keys,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gchar* new_value = g_strdup_printf ("\"%s\",",value);
|
gchar* new_value = g_strdup_printf ("\"%s\",",value);
|
||||||
g_hash_table_insert (global_keys, key, new_value);
|
g_hash_table_replace (global_keys, g_strdup (key), new_value);
|
||||||
formhistory_update_database (db, key, value);
|
formhistory_update_database (db, key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,7 +189,7 @@ formhistory_session_request_queued_cb (SoupSession* session,
|
||||||
db = g_object_get_data (G_OBJECT (extension), "formhistory-db");
|
db = g_object_get_data (G_OBJECT (extension), "formhistory-db");
|
||||||
formhistory_update_main_hash (keys, db);
|
formhistory_update_main_hash (keys, db);
|
||||||
soup_buffer_free (buffer);
|
soup_buffer_free (buffer);
|
||||||
/* FIXME: g_hash_table_destroy (keys); */
|
g_hash_table_destroy (keys);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_free (method);
|
g_free (method);
|
||||||
|
@ -271,6 +285,37 @@ formhistory_deactivate_cb (MidoriExtension* extension,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if HAVE_SQLITE
|
||||||
|
static int
|
||||||
|
formhistory_add_field (gpointer data,
|
||||||
|
int argc,
|
||||||
|
char** argv,
|
||||||
|
char** colname)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
gint ncols = 3;
|
||||||
|
|
||||||
|
/* Test whether have the right number of columns */
|
||||||
|
g_return_val_if_fail (argc % ncols == 0, 1);
|
||||||
|
|
||||||
|
for (i = 0; i < (argc - ncols) + 1; i++)
|
||||||
|
{
|
||||||
|
if (argv[i])
|
||||||
|
{
|
||||||
|
if (colname[i] && !g_ascii_strcasecmp (colname[i], "domain")
|
||||||
|
&& colname[i + 1] && !g_ascii_strcasecmp (colname[i + 1], "field")
|
||||||
|
&& colname[i + 2] && !g_ascii_strcasecmp (colname[i + 2], "value"))
|
||||||
|
{
|
||||||
|
gchar* key = argv[i + 1];
|
||||||
|
gchar* new_value = g_strdup_printf ("\"%s\",", argv[i + 2]);
|
||||||
|
g_hash_table_replace (global_keys, g_strdup (key), new_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
formhistory_activate_cb (MidoriExtension* extension,
|
formhistory_activate_cb (MidoriExtension* extension,
|
||||||
MidoriApp* app)
|
MidoriApp* app)
|
||||||
|
@ -279,6 +324,7 @@ formhistory_activate_cb (MidoriExtension* extension,
|
||||||
const gchar* config_dir;
|
const gchar* config_dir;
|
||||||
gchar* filename;
|
gchar* filename;
|
||||||
sqlite3* db;
|
sqlite3* db;
|
||||||
|
char* errmsg = NULL, *errmsg2 = NULL;
|
||||||
#endif
|
#endif
|
||||||
KatzeArray* browsers;
|
KatzeArray* browsers;
|
||||||
MidoriBrowser* browser;
|
MidoriBrowser* browser;
|
||||||
|
@ -297,9 +343,27 @@ formhistory_activate_cb (MidoriExtension* extension,
|
||||||
sqlite3_close (db);
|
sqlite3_close (db);
|
||||||
}
|
}
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
/* FIXME: Load keys from the database */
|
if ((sqlite3_exec (db, "CREATE TABLE IF NOT EXISTS "
|
||||||
|
"forms (domain text, field text, value text)",
|
||||||
|
NULL, NULL, &errmsg) == SQLITE_OK)
|
||||||
|
&& (sqlite3_exec (db, "SELECT domain, field, value FROM forms ",
|
||||||
|
formhistory_add_field,
|
||||||
|
NULL, &errmsg2) == SQLITE_OK))
|
||||||
g_object_set_data (G_OBJECT (extension), "formhistory-db", db);
|
g_object_set_data (G_OBJECT (extension), "formhistory-db", db);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (errmsg)
|
||||||
|
{
|
||||||
|
g_critical (_("Failed to execute database statement: %s\n"), errmsg);
|
||||||
|
sqlite3_free (errmsg);
|
||||||
|
if (errmsg2)
|
||||||
|
{
|
||||||
|
g_critical (_("Failed to execute database statement: %s\n"), errmsg2);
|
||||||
|
sqlite3_free (errmsg2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sqlite3_close (db);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
browsers = katze_object_get_object (app, "browsers");
|
browsers = katze_object_get_object (app, "browsers");
|
||||||
|
|
Loading…
Reference in a new issue