summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-10 13:27:00 +0000
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-10 17:03:36 +0000
commit6f8bc371ce28e125366dd0a7dca323c7ba5eddc2 (patch)
treeee5bb1eaa4519cbda073987d79e94bb7abf4e8b8
parentbbff08720f78a90de3adf536cdc5ddc165a73c13 (diff)
Implement clear_entity in XML log store
-rw-r--r--telepathy-logger/log-store-xml.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c
index 04e7871a0..fce35395e 100644
--- a/telepathy-logger/log-store-xml.c
+++ b/telepathy-logger/log-store-xml.c
@@ -1401,6 +1401,38 @@ log_store_xml_clear_account (TplLogStore *store,
static void
+log_store_xml_clear_entity (TplLogStore *store,
+ TpAccount *account,
+ TplEntity *entity)
+{
+ TplLogStoreXml *self = TPL_LOG_STORE_XML (store);
+ gchar *entity_id;
+ gchar *entity_dir;
+
+ entity_id = g_strdup (tpl_entity_get_identifier (entity));
+ entity_id = g_strdelimit (entity_id, "/", '_');
+ entity_dir = log_store_xml_get_dir (self, account, entity_id,
+ tpl_entity_get_entity_type (entity) == TPL_ENTITY_ROOM ?
+ TPL_EVENT_SEARCH_TEXT_ROOM : TPL_EVENT_SEARCH_TEXT);
+
+ if (entity_dir)
+ {
+ DEBUG ("Clear entity logs from XML store in: %s",
+ entity_dir);
+
+ _tpl_rmdir_recursively (entity_dir);
+ g_free (entity_dir);
+ }
+ else
+ DEBUG ("Nothing to clear for account/entity: %s/%s",
+ tp_proxy_get_object_path (TP_PROXY (account)),
+ entity_id);
+
+ g_free (entity_id);
+}
+
+
+static void
log_store_iface_init (gpointer g_iface,
gpointer iface_data)
{
@@ -1418,4 +1450,5 @@ log_store_iface_init (gpointer g_iface,
iface->get_filtered_events = log_store_xml_get_filtered_events;
iface->clear = log_store_xml_clear;
iface->clear_account = log_store_xml_clear_account;
+ iface->clear_entity = log_store_xml_clear_entity;
}