commit 2f9306598660923ed4bbaf8ed06896dbb928bea5
parent 8de0b024f03f7a9852292a9bdb598a7c9c3589a5
Author: Dan Stillman <dstillman@zotero.org>
Date: Fri, 16 Jun 2017 01:56:43 -0400
Fix skipClientDateModifiedUpdate DataObject save option
Diffstat:
4 files changed, 56 insertions(+), 50 deletions(-)
diff --git a/chrome/content/zotero/xpcom/data/collection.js b/chrome/content/zotero/xpcom/data/collection.js
@@ -286,20 +286,22 @@ Zotero.Collection.prototype._saveData = Zotero.Promise.coroutine(function* (env)
env.parent ? env.parent : null
);
- if (isNew) {
- env.sqlColumns.unshift('collectionID');
- env.sqlValues.unshift(collectionID ? { int: collectionID } : null);
-
- let placeholders = env.sqlColumns.map(() => '?').join();
- let sql = "INSERT INTO collections (" + env.sqlColumns.join(', ') + ") "
- + "VALUES (" + placeholders + ")";
- yield Zotero.DB.queryAsync(sql, env.sqlValues);
- }
- else {
- let sql = 'UPDATE collections SET '
- + env.sqlColumns.map(x => x + '=?').join(', ') + ' WHERE collectionID=?';
- env.sqlValues.push(collectionID ? { int: collectionID } : null);
- yield Zotero.DB.queryAsync(sql, env.sqlValues);
+ if (env.sqlColumns.length) {
+ if (isNew) {
+ env.sqlColumns.unshift('collectionID');
+ env.sqlValues.unshift(collectionID ? { int: collectionID } : null);
+
+ let placeholders = env.sqlColumns.map(() => '?').join();
+ let sql = "INSERT INTO collections (" + env.sqlColumns.join(', ') + ") "
+ + "VALUES (" + placeholders + ")";
+ yield Zotero.DB.queryAsync(sql, env.sqlValues);
+ }
+ else {
+ let sql = 'UPDATE collections SET '
+ + env.sqlColumns.map(x => x + '=?').join(', ') + ' WHERE collectionID=?';
+ env.sqlValues.push(collectionID ? { int: collectionID } : null);
+ yield Zotero.DB.queryAsync(sql, env.sqlValues);
+ }
}
if (this._changed.parentKey) {
diff --git a/chrome/content/zotero/xpcom/data/dataObject.js b/chrome/content/zotero/xpcom/data/dataObject.js
@@ -959,7 +959,7 @@ Zotero.DataObject.prototype._saveData = function (env) {
env.sqlValues.push(0);
}
- if (env.isNew || !env.options.skipClientDateModified) {
+ if (env.isNew || !env.options.skipClientDateModifiedUpdate) {
env.sqlColumns.push('clientDateModified');
env.sqlValues.push(Zotero.DB.transactionDateTime);
}
diff --git a/chrome/content/zotero/xpcom/data/item.js b/chrome/content/zotero/xpcom/data/item.js
@@ -1268,28 +1268,30 @@ Zotero.Item.prototype._saveData = Zotero.Promise.coroutine(function* (env) {
env.sqlValues.push(this.dateModified);
}
- if (isNew) {
- env.sqlColumns.push('dateAdded');
- env.sqlValues.push(this.dateAdded ? this.dateAdded : Zotero.DB.transactionDateTime);
-
- env.sqlColumns.unshift('itemID');
- env.sqlValues.unshift(parseInt(itemID));
-
- let sql = "INSERT INTO items (" + env.sqlColumns.join(", ") + ") "
- + "VALUES (" + env.sqlValues.map(() => "?").join() + ")";
- yield Zotero.DB.queryAsync(sql, env.sqlValues);
-
- if (!env.options.skipNotifier) {
- Zotero.Notifier.queue('add', 'item', itemID, env.notifierData, env.options.notifierQueue);
+ if (env.sqlColumns.length) {
+ if (isNew) {
+ env.sqlColumns.push('dateAdded');
+ env.sqlValues.push(this.dateAdded ? this.dateAdded : Zotero.DB.transactionDateTime);
+
+ env.sqlColumns.unshift('itemID');
+ env.sqlValues.unshift(parseInt(itemID));
+
+ let sql = "INSERT INTO items (" + env.sqlColumns.join(", ") + ") "
+ + "VALUES (" + env.sqlValues.map(() => "?").join() + ")";
+ yield Zotero.DB.queryAsync(sql, env.sqlValues);
+
+ if (!env.options.skipNotifier) {
+ Zotero.Notifier.queue('add', 'item', itemID, env.notifierData, env.options.notifierQueue);
+ }
}
- }
- else {
- let sql = "UPDATE items SET " + env.sqlColumns.join("=?, ") + "=? WHERE itemID=?";
- env.sqlValues.push(parseInt(itemID));
- yield Zotero.DB.queryAsync(sql, env.sqlValues);
-
- if (!env.options.skipNotifier) {
- Zotero.Notifier.queue('modify', 'item', itemID, env.notifierData, env.options.notifierQueue);
+ else {
+ let sql = "UPDATE items SET " + env.sqlColumns.join("=?, ") + "=? WHERE itemID=?";
+ env.sqlValues.push(parseInt(itemID));
+ yield Zotero.DB.queryAsync(sql, env.sqlValues);
+
+ if (!env.options.skipNotifier) {
+ Zotero.Notifier.queue('modify', 'item', itemID, env.notifierData, env.options.notifierQueue);
+ }
}
}
diff --git a/chrome/content/zotero/xpcom/data/search.js b/chrome/content/zotero/xpcom/data/search.js
@@ -171,20 +171,22 @@ Zotero.Search.prototype._saveData = Zotero.Promise.coroutine(function* (env) {
{ string: this.name }
);
- if (isNew) {
- env.sqlColumns.unshift('savedSearchID');
- env.sqlValues.unshift(searchID ? { int: searchID } : null);
-
- let placeholders = env.sqlColumns.map(() => '?').join();
- let sql = "INSERT INTO savedSearches (" + env.sqlColumns.join(', ') + ") "
- + "VALUES (" + placeholders + ")";
- yield Zotero.DB.queryAsync(sql, env.sqlValues);
- }
- else {
- let sql = 'UPDATE savedSearches SET '
- + env.sqlColumns.map(x => x + '=?').join(', ') + ' WHERE savedSearchID=?';
- env.sqlValues.push(searchID ? { int: searchID } : null);
- yield Zotero.DB.queryAsync(sql, env.sqlValues);
+ if (env.sqlColumns.length) {
+ if (isNew) {
+ env.sqlColumns.unshift('savedSearchID');
+ env.sqlValues.unshift(searchID ? { int: searchID } : null);
+
+ let placeholders = env.sqlColumns.map(() => '?').join();
+ let sql = "INSERT INTO savedSearches (" + env.sqlColumns.join(', ') + ") "
+ + "VALUES (" + placeholders + ")";
+ yield Zotero.DB.queryAsync(sql, env.sqlValues);
+ }
+ else {
+ let sql = 'UPDATE savedSearches SET '
+ + env.sqlColumns.map(x => x + '=?').join(', ') + ' WHERE savedSearchID=?';
+ env.sqlValues.push(searchID ? { int: searchID } : null);
+ yield Zotero.DB.queryAsync(sql, env.sqlValues);
+ }
}
if (this._changed.conditions) {