From 7eb1231a5d73633215af19ea499f5cf302aa9220 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Thu, 10 May 2007 11:16:02 +0000 Subject: [PATCH] Added 'keep original entry ID' for XML import SVN revision: 1861 --- src/elogd.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index adeed192..402c42f3 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -13119,6 +13119,12 @@ void show_import_page_xml(LOGBOOK * lbs) rsprintf("\n"); rsprintf("
\n", loc("Derive attributes from XML file")); + if (isparam("keep")) + rsprintf("\n"); + else + rsprintf("\n"); + rsprintf("
\n", loc("Keep original entry IDs (may overwrite existing entries, but is required if imported entries contain replies)")); + rsprintf("\n"); rsprintf("
\n", loc("Preview import")); @@ -13375,7 +13381,8 @@ void xml_import(LOGBOOK * lbs, char *xml, char *xmlfile) in_reply_to[80], reply_to[MAX_REPLY_TO * 10], attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH], attachment_all[64 * MAX_ATTACHMENTS]; - int i, j, index, n_attr, iline, n_imported, textcol, i_line, line_len; + int i, j, index, n_attr, iline, n_imported, textcol, i_line, line_len, + message_id, bedit; PMXML_NODE root, entry; iline = n_imported = 0; @@ -13433,6 +13440,8 @@ void xml_import(LOGBOOK * lbs, char *xml, char *xmlfile) /* hidden fields */ if (isparam("head")) rsprintf("\n", getparam("head")); + if (isparam("keep")) + rsprintf("\n", getparam("keep")); rsprintf("\n", xmlfile); rsprintf("\n\n"); @@ -13553,6 +13562,10 @@ void xml_import(LOGBOOK * lbs, char *xml, char *xmlfile) } else { + message_id = 0; + if (isparam("keep")) + message_id = atoi(mxml_get_value(mxml_find_node(entry, "MID"))); + for (i = 0; i < n_attr; i++) { strlcpy(str, attr_list[i], sizeof(str)); if (mxml_find_node(entry, str) == NULL) @@ -13601,8 +13614,17 @@ void xml_import(LOGBOOK * lbs, char *xml, char *xmlfile) else p = str; + bedit = FALSE; + if (isparam("keep")) { + for (i = 0; i < *lbs->n_el_index; i++) + if (lbs->el_index[i].message_id == message_id) + break; + if (lbs->el_index[i].message_id == message_id) + bedit = TRUE; + } + /* submit entry */ - if (el_submit(lbs, 0, FALSE, date, attr_list, (char (*)[NAME_LENGTH]) list, + if (el_submit(lbs, message_id, bedit, date, attr_list, (char (*)[NAME_LENGTH]) list, n_attr, p, in_reply_to, reply_to, encoding, attachment, FALSE, NULL)) n_imported++; }