www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 7cd3479094e6f05a52e8ccc3c0d8ccb7a7d17563
parent 56bb5b17ad386d67a1ef52987a4ead38a862f47f
Author: Dan Stillman <dstillman@zotero.org>
Date:   Tue, 29 Jan 2013 04:03:56 -0500

Use eraseByURI() instead of eraseByURIPrefix(), and fix params

Diffstat:
Mchrome/content/zotero/xpcom/data/collection.js | 2+-
Mchrome/content/zotero/xpcom/data/item.js | 2+-
Mchrome/content/zotero/xpcom/data/relations.js | 19++++++++++++++-----
3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/chrome/content/zotero/xpcom/data/collection.js b/chrome/content/zotero/xpcom/data/collection.js @@ -966,7 +966,7 @@ Zotero.Collection.prototype.erase = function(deleteItems) { // Remove relations var uri = Zotero.URI.getCollectionURI(this); - Zotero.Relations.eraseByURIPrefix(uri); + Zotero.Relations.eraseByURI(uri); var placeholders = collections.map(function () '?').join(); diff --git a/chrome/content/zotero/xpcom/data/item.js b/chrome/content/zotero/xpcom/data/item.js @@ -4170,7 +4170,7 @@ Zotero.Item.prototype.erase = function() { // Remove relations (except for merge tracker) var uri = Zotero.URI.getItemURI(this); - Zotero.Relations.eraseByURIPrefix(uri, [Zotero.Relations.deletedItemPredicate]); + Zotero.Relations.eraseByURI(uri, [Zotero.Relations.deletedItemPredicate]); Zotero.DB.query('DELETE FROM annotations WHERE itemID=?', this.id); Zotero.DB.query('DELETE FROM highlights WHERE itemID=?', this.id); diff --git a/chrome/content/zotero/xpcom/data/relations.js b/chrome/content/zotero/xpcom/data/relations.js @@ -185,8 +185,10 @@ Zotero.Relations = new function () { var sql = "SELECT ROWID FROM relations WHERE (subject LIKE ? OR object LIKE ?)"; var params = [prefix, prefix]; if (ignorePredicates) { - sql += " AND predicate != ?"; - params = params.concat(ignorePredicates); + for each(var ignorePredicate in ignorePredicates) { + sql += " AND predicate != ?"; + params.push(ignorePredicate); + } } var ids = Zotero.DB.columnQuery(sql, params); @@ -199,11 +201,18 @@ Zotero.Relations = new function () { } - this.eraseByURI = function (uri) { + this.eraseByURI = function (uri, ignorePredicates) { Zotero.DB.beginTransaction(); - var sql = "SELECT ROWID FROM relations WHERE subject=? OR object=?"; - var ids = Zotero.DB.columnQuery(sql, [uri, uri]); + var sql = "SELECT ROWID FROM relations WHERE (subject=? OR object=?)"; + var params = [uri, uri]; + if (ignorePredicates) { + for each(var ignorePredicate in ignorePredicates) { + sql += " AND predicate != ?"; + params.push(ignorePredicate); + } + } + var ids = Zotero.DB.columnQuery(sql, params); for each(var id in ids) { var relation = this.get(id);