commit 318528df4da90723328b82a4b89cc2cd639001bc
parent d07756d68d1b1797507333ee9be34b5d90c65663
Author: Dan Stillman <dstillman@zotero.org>
Date: Mon, 2 Nov 2015 03:23:15 -0500
Remove obsolete sync code
Diffstat:
1 file changed, 0 insertions(+), 488 deletions(-)
diff --git a/chrome/content/zotero/xpcom/sync.js b/chrome/content/zotero/xpcom/sync.js
@@ -95,112 +95,6 @@ Zotero.Sync = new function() {
/**
- * @param {Date} olderThanDate Retrieve objects last updated before this date
- * @param {Date} newerThanDate Retrieve objects last updated after this date
- * @param {Zotero.Sync.Server.ObjectKeySet}
- */
- this.getObjectsByDate = function (olderThanDate, newerThanDate, objectKeySet) {
- var funcName = "Zotero.Sync.getObjectsByDate()";
- if (olderThanDate && olderThanDate.constructor.name != 'Date') {
- throw ("olderThanDate must be a Date or FALSE in " + funcName)
- }
- if (newerThanDate && newerThanDate.constructor.name != 'Date') {
- throw ("newerThanDate must be a Date or FALSE in " + funcName)
- }
-
- // If either not set (first sync) or dates overlap, retrieve all objects
- if ((!olderThanDate || !newerThanDate) ||
- (olderThanDate && newerThanDate && olderThanDate > newerThanDate)) {
- olderThanDate = null;
- newerThanDate = null;
- var all = true;
- }
-
- for (var type in this.syncObjects) {
- if (type == 'setting' || type == 'fulltext') {
- continue;
- }
-
- var Types = this.syncObjects[type].plural; // 'Items'
- var types = Types.toLowerCase(); // 'items'
-
- Zotero.debug("Getting updated local " + types);
-
- if (olderThanDate) {
- var earlierIDs = Zotero[Types].getOlder(olderThanDate);
- if (earlierIDs) {
- objectKeySet.addIDs(type, earlierIDs);
- }
- }
-
- if (newerThanDate || all) {
- var laterIDs = Zotero[Types].getNewer(newerThanDate);
- if (laterIDs) {
- objectKeySet.addIDs(type, laterIDs);
- }
- }
- }
- }
-
-
- /**
- * @param {Date} lastSyncDate JS Date object
- * @param {Zotero.Sync.Server.ObjectKeySet}
- * @return TRUE if found, FALSE if none, or -1 if last sync time is before start of log
- */
- this.getDeletedObjects = function (lastSyncDate, objectKeySet) {
- if (lastSyncDate && lastSyncDate.constructor.name != 'Date') {
- throw ('lastSyncDate must be a Date or FALSE in '
- + 'Zotero.Sync.getDeletedObjects()')
- }
-
- var sql = "SELECT version FROM version WHERE schema='syncdeletelog'";
- var syncLogStart = Zotero.DB.valueQuery(sql);
- if (!syncLogStart) {
- throw ('syncLogStart not found in Zotero.Sync.getDeletedObjects()');
- }
-
- // Last sync time is before start of log
- if (lastSyncDate && new Date(syncLogStart * 1000) > lastSyncDate) {
- return -1;
- }
-
- var param = false;
- var sql = "SELECT syncObjectTypeID, libraryID, key FROM syncDeleteLog";
- if (lastSyncDate) {
- param = Zotero.Date.toUnixTimestamp(lastSyncDate);
- sql += " WHERE timestamp>?";
- }
- sql += " ORDER BY timestamp";
- var rows = Zotero.DB.query(sql, param);
-
- if (!rows) {
- return false;
- }
-
- var keys = {};
- for (var type in this.syncObjects) {
- keys[type] = [];
- }
-
- var type;
- for each(var row in rows) {
- type = this.getObjectTypeName(row.syncObjectTypeID);
- keys[type].push({
- libraryID: row.libraryID,
- key: row.key
- });
- }
-
- for (var type in keys) {
- objectKeySet.addLibraryKeyPairs(type, keys[type]);
- }
-
- return true;
- }
-
-
- /**
* @param int deleteOlderThan Unix timestamp
*/
this.purgeDeletedObjects = function (deleteOlderThan) {
@@ -229,134 +123,6 @@ Zotero.Sync = new function() {
}
-
-Zotero.Sync.ObjectKeySet = function () {
- // Set up key holders for different types
- var syncTypes = Zotero.Sync.syncObjects;
- for each(var type in syncTypes) {
- this[type.plural.toLowerCase()] = {};
- }
-}
-
-
-Zotero.Sync.ObjectKeySet.prototype.addIDs = function (type, ids) {
- var Types = Zotero.Sync.syncObjects[type].plural;
- var types = Types.toLowerCase();
-
- var obj, libraryID, key;
- for each(var id in ids) {
- obj = Zotero[Types].get(id);
- libraryID = obj.libraryID;
- if (!libraryID) {
- libraryID = 0; // current user
- }
- key = obj.key;
- if (!this[types][libraryID]) {
- this[types][libraryID] = {};
- }
- this[types][libraryID][key] = true;
- }
-}
-
-
-/**
- * @param {String} type Sync object type (e.g., 'item', 'collection')
- * @param {Object[]} keyPairs Array of objects with 'libraryID' and 'key'
- */
-Zotero.Sync.ObjectKeySet.prototype.addLibraryKeys = function (type, libraryID, keys) {
- var Types = Zotero.Sync.syncObjects[type].plural;
- var types = Types.toLowerCase();
-
- var key;
- for each(var key in keys) {
- if (!libraryID) {
- libraryID = 0; // current user
- }
- if (!this[types][libraryID]) {
- this[types][libraryID] = {};
- }
- this[types][libraryID][key] = true;
- }
-}
-
-
-/**
- * @param {String} type Sync object type (e.g., 'item', 'collection')
- * @param {Object[]} keyPairs Array of objects with 'libraryID' and 'key'
- */
-Zotero.Sync.ObjectKeySet.prototype.addLibraryKeyPairs = function (type, keyPairs) {
- var Types = Zotero.Sync.syncObjects[type].plural;
- var types = Types.toLowerCase();
-
- var libraryID, key;
- for each(var pair in keyPairs) {
- libraryID = pair.libraryID;
- if (!libraryID) {
- libraryID = 0; // current user
- }
- key = pair.key;
- if (!this[types][libraryID]) {
- this[types][libraryID] = {};
- }
- this[types][libraryID][key] = true;
- }
-}
-
-
-Zotero.Sync.ObjectKeySet.prototype.hasLibraryKey = function (type, libraryID, key) {
- var Types = Zotero.Sync.syncObjects[type].plural;
- var types = Types.toLowerCase();
-
- if (!libraryID) {
- libraryID = 0;
- }
-
- if (this[types] && this[types][libraryID] && this[types][libraryID][key]) {
- return true;
- }
-
- return false;
-}
-
-
-Zotero.Sync.ObjectKeySet.prototype.getKeys = function (type, libraryID) {
- var Types = Zotero.Sync.syncObjects[type].plural;
- var types = Types.toLowerCase();
-
- if (!libraryID) {
- libraryID = 0;
- }
-
- if (!this[types] || !this[types][libraryID]) {
- return [];
- }
-
- var keys = [];
- for (var key in this[types][libraryID]) {
- keys.push(key);
- }
- return keys;
-}
-
-
-Zotero.Sync.ObjectKeySet.prototype.removeLibraryKeyPairs = function (type, keyPairs) {
- var Types = Zotero.Sync.syncObjects[type].plural;
- var types = Types.toLowerCase();
-
- var libraryID, key;
- for each(var pair in keyPairs) {
- libraryID = pair.libraryID;
- if (!libraryID) {
- libraryID = 0; // current user
- }
- key = pair.key;
- if (this[types][libraryID]) {
- delete this[types][libraryID][key];
- }
- }
-}
-
-
/**
* Methods for syncing with the Zotero Server
*/
@@ -365,7 +131,6 @@ Zotero.Sync.Server = new function () {
this.sync = sync;
this.clear = clear;
this.resetClient = resetClient;
- this.logout = logout;
this.__defineGetter__('enabled', function () {
if (_throttleTimeout && new Date() < _throttleTimeout) {
@@ -375,96 +140,6 @@ Zotero.Sync.Server = new function () {
return this.username && this.password;
});
- this.__defineGetter__('username', function () {
- return Zotero.Prefs.get('sync.server.username');
- });
-
- this.__defineGetter__('password', function () {
- var username = this.username;
-
- if (!username) {
- return '';
- }
-
- if (_cachedCredentials.username == username && _cachedCredentials.password) {
- return _cachedCredentials.password;
- }
-
- Zotero.debug('Getting Zotero sync password');
- var loginManager = Components.classes["@mozilla.org/login-manager;1"]
- .getService(Components.interfaces.nsILoginManager);
- try {
- var logins = loginManager.findLogins({}, _loginManagerHost, _loginManagerURL, null);
- }
- catch (e) {
- Zotero.debug(e);
- if (Zotero.isStandalone) {
- var msg = Zotero.getString('sync.error.loginManagerCorrupted1', Zotero.appName) + "\n\n"
- + Zotero.getString('sync.error.loginManagerCorrupted2', [Zotero.appName, Zotero.appName]);
- }
- else {
- var msg = Zotero.getString('sync.error.loginManagerInaccessible') + "\n\n"
- + Zotero.getString('sync.error.checkMasterPassword', Zotero.appName) + "\n\n"
- + Zotero.getString('sync.error.corruptedLoginManager', Zotero.appName);
- }
- var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- ps.alert(null, Zotero.getString('general.error'), msg);
- return '';
- }
-
- // Find user from returned array of nsILoginInfo objects
- for (var i = 0; i < logins.length; i++) {
- if (logins[i].username == username) {
- _cachedCredentials = {
- username: username,
- password: logins[i].password
- };
- return logins[i].password;
- }
- }
-
- return '';
- });
-
- this.__defineSetter__('password', function (password) {
- _sessionID = null;
-
- var loginManager = Components.classes["@mozilla.org/login-manager;1"]
- .getService(Components.interfaces.nsILoginManager);
- var logins = loginManager.findLogins({}, _loginManagerHost, _loginManagerURL, null);
- for (var i = 0; i < logins.length; i++) {
- Zotero.debug('Clearing Zotero sync credentials');
- loginManager.removeLogin(logins[i]);
- break;
- }
-
- // Clear password for file sync
- Zotero.Sync.Storage.ZFS.clearCachedCredentials();
-
- _cachedCredentials = {};
-
- var username = this.username;
-
- if (!username) {
- return;
- }
-
- if (password) {
- var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
- Components.interfaces.nsILoginInfo, "init");
-
- Zotero.debug('Setting Zotero sync password');
- var loginInfo = new nsLoginInfo(_loginManagerHost, _loginManagerURL,
- null, username, password, "", "");
- loginManager.addLogin(loginInfo);
- _cachedCredentials = {
- username: username,
- password: password
- };
- }
- });
-
this.__defineGetter__("syncInProgress", function () _syncInProgress);
this.__defineGetter__("updatesInProgress", function () _updatesInProgress);
this.__defineGetter__("sessionIDComponent", function () {
@@ -479,15 +154,7 @@ Zotero.Sync.Server = new function () {
this.manualSyncRequired = false;
this.upgradeRequired = false;
this.nextLocalSyncDate = false;
- this.apiVersion = 9;
-
- var _loginManagerHost = 'chrome://zotero';
- var _loginManagerURL = 'Zotero Sync Server';
- var _serverURL = ZOTERO_CONFIG.SYNC_URL;
-
- var _apiVersionComponent = "version=" + this.apiVersion;
- var _cachedCredentials = {};
var _syncInProgress;
var _updatesInProgress;
var _sessionID;
@@ -1086,34 +753,6 @@ Zotero.Sync.Server = new function () {
}
- function logout(callback) {
- var url = _serverURL + "logout";
- var body = _apiVersionComponent
- + '&' + Zotero.Sync.Server.sessionIDComponent;
-
- _sessionID = null;
-
- Zotero.HTTP.doPost(url, body, function (xmlhttp) {
- _checkResponse(xmlhttp);
- Zotero.debug(xmlhttp.responseText);
-
- var response = xmlhttp.responseXML.childNodes[0];
-
- if (response.firstChild.tagName == 'error') {
- _error(response.firstChild.firstChild.nodeValue);
- }
-
- if (response.firstChild.tagName != 'loggedout') {
- _error('Invalid response from server', xmlhttp.responseText);
- }
-
- if (callback) {
- callback();
- }
- });
- }
-
-
function _checkResponse(xmlhttp, noReloadOnFailure) {
if (!xmlhttp.responseText) {
var channel = xmlhttp.channel;
@@ -2924,134 +2563,7 @@ Zotero.Sync.Server.Data = new function() {
}
- this.tagToXML = function (tag, doc) {
- var tagElem = doc.createElement('tag');
- tagElem.setAttribute('libraryID', tag.libraryID ? tag.libraryID : Zotero.libraryID);
- tagElem.setAttribute('key', tag.key);
- tagElem.setAttribute('name', _xmlize(tag.name));
- if (tag.type) {
- tagElem.setAttribute('type', tag.type);
- }
- tagElem.setAttribute('dateAdded', tag.dateAdded);
- tagElem.setAttribute('dateModified', tag.dateModified);
- var linkedItems = tag.getLinkedItems();
- if (linkedItems) {
- var linkedItemKeys = [];
- for each(var linkedItem in linkedItems) {
- linkedItemKeys.push(linkedItem.key);
- }
- var itemsElem = doc.createElement('items');
- itemsElem.appendChild(doc.createTextNode(linkedItemKeys.join(' ')));
- tagElem.appendChild(itemsElem);
- }
- return tagElem;
- }
-
-
- /**
- * Convert DOM <tag> node into an unsaved Zotero.Tag
- *
- * @param object tagNode DOM XML node with tag data
- * @param object tag (Optional) Existing Zotero.Tag to update
- * @param bool skipPrimary (Optional) Ignore passed primary fields
- */
- this.xmlToTag = function (tagNode, tag, skipPrimary, defaultLibraryID, deletedItemKeys) {
- if (!tag) {
- tag = new Zotero.Tag;
- }
- else if (skipPrimary) {
- throw ("Cannot use new id with existing tag in "
- + "Zotero.Sync.Server.Data.xmlToTag()");
- }
-
- if (!skipPrimary) {
- tag.libraryID = _getLibraryID(tagNode.getAttribute('libraryID'), defaultLibraryID);
- tag.key = tagNode.getAttribute('key');
- tag.dateAdded = tagNode.getAttribute('dateAdded');
- tag.dateModified = tagNode.getAttribute('dateModified');
- }
-
- tag.name = tagNode.getAttribute('name');
- var type = tagNode.getAttribute('type');
- tag.type = type ? parseInt(type) : 0;
-
- var keys = _getFirstChildContent(tagNode, 'items');
- if (keys) {
- keys = keys.split(' ');
- var ids = [];
- for each(var key in keys) {
- var item = Zotero.Items.getByLibraryAndKey(tag.libraryID, key);
- if (!item) {
- // See note in xmlToCollection()
- if (deletedItemKeys && deletedItemKeys.indexOf(key) != -1) {
- Zotero.debug("Ignoring deleted linked item '" + key + "'");
- continue;
- }
-
- var msg = "Linked item " + key + " doesn't exist in Zotero.Sync.Server.Data.xmlToTag()";
- var e = new Zotero.Error(msg, "MISSING_OBJECT");
- throw (e);
- }
- ids.push(item.id);
- }
- }
- else {
- var ids = [];
- }
- tag.linkedItems = ids;
-
- return tag;
- }
-
-
- /**
- * @param {String} name Tag name
- * @param {Integer} type Tag type
- * @return {Integer[]|FALSE} Array of itemIDs of items linked to
- * deleted tag, or FALSE if no
- * matching tag found
- */
- function _deleteConflictingTag(syncSession, name, type, libraryID) {
- var tagID = Zotero.Tags.getID(name, type, libraryID);
- if (tagID) {
- Zotero.debug("Deleting conflicting local '" + name + "' tag " + tagID);
- var tag = Zotero.Tags.get(tagID);
- // Tag has already been deleted, which can happen if the server has
- // two new tags that differ only in case, and one matches a local tag
- // with a different key, causing that tag to be deleted already.
- if (!tag) {
- Zotero.debug("Local tag " + tagID + " doesn't exist");
- return false;
- }
- var linkedItems = tag.getLinkedItems(true);
- Zotero.Tags.erase(tagID);
- Zotero.Tags.purge(tagID);
-
- syncSession.removeFromUpdated(tag);
- //syncSession.addToDeleted(tag);
-
- return linkedItems ? linkedItems : [];
- }
-
- return false;
- }
-
-
- function _getFirstChildContent(node, childName) {
- var elems = Zotero.Utilities.xpath(node, childName);
- return elems.length ? elems[0].textContent : "";
- }
-
-
function _xmlize(str) {
return str.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\ud800-\udfff\ufffe\uffff]/g, '\u2B1A');
}
-
-
- function _getLibraryID(libraryID, defaultLibraryID) {
- if (!libraryID) {
- return null;
- }
- return libraryID == defaultLibraryID ? null : parseInt(libraryID);
- }
}