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:
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);