/*
* Copyright (C) 2010 Ixonos Plc.
- * Copyright (C) 2011-2017 Philipp Spitzer, gregor herrmann, Stefan Stahl
+ * Copyright (C) 2011-2024 Philipp Spitzer, gregor herrmann, Stefan Stahl
*
* This file is part of ConfClerk.
*
conference["utc_offset"] = QString();
conference["display_time_shift"] = QString();
conference["url"] = url;
- sqlEngine->addConferenceToDB(conference, conferenceId);
+ sqlEngine->addConferenceToDB(conference, conferenceId, conferenceId != 0);
conferenceId = conference["id"].toInt();
conference_title = conference["title"];
conference_day_change = QTime(0, 0).addSecs(conference["day_change"].toInt());
// we need to get count of all events in order to emit 'progressStatus' signal
int totalEventsCount = scheduleElement.elementsByTagName("event").count();
+ // collect all event IDs so that we can identify previously existing events that were deleted
+ // when refreshing the conference
+ QSet<QString> importedEventIds;
+
// parsing day elements
int currentEvent = 0; // hold global idx of processed event
QDomNodeList dayList = scheduleElement.elementsByTagName("day");
// process event's nodes
QHash<QString,QString> event;
event["id"] = eventElement.attribute("id");
+ importedEventIds.insert(event["id"]);
event["conference_id"] = QString::number(conferenceId, 10);
QTime event_start = QTime::fromString(eventElement.firstChildElement("start").text(), sqlEngine->TIME_FORMAT);
event["start"] = event_start.toString(sqlEngine->TIME_FORMAT); // time eg. 10:00
} // parsing room elements
} // parsing day elements
+ // Delete events that exist from a previous import but have not been imported again
+ sqlEngine->deleteStaleEvents(conferenceId, importedEventIds);
+
// Re-write conference as utc_offset was not known previously
if (!conference.value("utc_offset").isEmpty()) {
- sqlEngine->addConferenceToDB(conference, conferenceId);
+ sqlEngine->addConferenceToDB(conference, conferenceId, conferenceId != 0);
}
} // schedule element