newPrefs.save(function(err, res) { if (err) { Logger.error('could not update preference set for user %s', this.userId, err); } else { Logger.debug('successfully updated preference set for user %s', this.userId, res); } }.bind(this));
_.each(events, function(event) { // If event doesn't have a start time, then give up :( if (!event.start_time) return []; // Only check for similar events close in time to the current event. let tolerableStartTime = new Date(event.start_time.getTime() - (60 * 60 * 24 * 7 * 1000)); let tolerableEndTime = new Date(event.start_time.getTime() + (60 * 60 * 24 * 7 * 1000)); // Get all the similar events to this event based on time and edit distance between title and description. let similarEvents = _.filter(events, function(possibleSimilarEvent) { if (possibleSimilarEvent.id == event.id) return false; // Make sure this event has a start time. if (!possibleSimilarEvent.start_time) return false; // Check if this event's start time is within the tolerance. if (possibleSimilarEvent.start_time.getTime() > tolerableEndTime.getTime() || possibleSimilarEvent.start_time.getTime() < tolerableStartTime.getTime()) { return false; } let descriptionsMatch = possibleSimilarEvent.description && event.description && stringSimilarity.compareTwoStrings(possibleSimilarEvent.description, event.description) > 0.5; return ( stringSimilarity.compareTwoStrings(possibleSimilarEvent.title, event.title) > 0.5 && descriptionsMatch ); }); similarEvents = _.map(similarEvents, function(event) { return event.id; }); // If the similar events are different then the current similar events, update it. if (!_.isEqual(similarEvents, event.similar_events)) { if (similarEvents.length > 0) { Logger.debug('Found similar events for event %s', event.id, similarEvents); } event.similar_events = similarEvents; event.save(function(err, res) { if (err) { Logger.error('error occurred while saving similar events for event %s', event.id, err); } }); } });
Events.before.remove(function(userId, doc) { Logger.debug('Removing event %s', doc._id, {expires: doc.expires}); if (Raccoon) { if (doc.likes && doc.likes.length > 0) { _.each(doc.likes, function(userId) { Raccoon.unliked(userId, doc._id); }); } if (doc.dislikes && doc.dislikes.length > 0) { _.each(doc.dislikes, function(userId) { Raccoon.undisliked(userId, doc._id); }); } } });
Events.before.update(function(userId, doc, fieldNames, modifier, options) { let now = new Date(); modifier.$set = modifier.$set || {}; modifier.$set.expires = new Date(now.getTime() + (3600000 * (Meteor.settings.hoursEventsExpiresIn || 24))); Logger.debug('Updating event %s', doc._id); });
Events.before.insert(function(userId, doc) { let now = new Date(); doc.expires = new Date(now.getTime() + (3600000 * (Meteor.settings.hoursEventsExpiresIn || 24))); Logger.debug('Inserting event %s', doc._id); });