v1.18.x
Julian Lam 7 years ago
parent 6bb62a4728
commit 1e3cdc99ac

@ -0,0 +1,62 @@
'use strict';
var db = require('../../database');
var async = require('async');
var batch = require('../../batch');
var user = require('../../user');
module.exports = {
name: 'Record first entry in username/email history',
timestamp: Date.UTC(2018, 7, 28),
method: function (callback) {
batch.processSortedSet('users:joindate', function (ids, next) {
async.each(ids, function (uid, next) {
async.parallel([
function (next) {
// Username
async.waterfall([
async.apply(db.sortedSetCard, 'user:' + uid + ':usernames'),
(count, next) => {
if (count > 0) {
// User has changed their username before, no record of original username, skip.
return setImmediate(next, null, null);
}
user.getUserFields(uid, ['username', 'joindate'], next);
},
(userdata, next) => {
if (!userdata) {
return setImmediate(next);
}
db.sortedSetAdd('user:' + uid + ':usernames', userdata.joindate, [userdata.username, userdata.joindate].join(':'), next);
},
], next);
},
function (next) {
// Email
async.waterfall([
async.apply(db.sortedSetCard, 'user:' + uid + ':emails'),
(count, next) => {
if (count > 0) {
// User has changed their email before, no record of original email, skip.
return setImmediate(next, null, null);
}
user.getUserFields(uid, ['email', 'joindate'], next);
},
(userdata, next) => {
if (!userdata) {
return setImmediate(next);
}
db.sortedSetAdd('user:' + uid + ':emails', userdata.joindate, [userdata.email, userdata.joindate].join(':'), next);
},
], next);
},
], next);
}, next);
}, callback);
},
};

@ -93,6 +93,9 @@ module.exports = function (User) {
function (next) {
db.sortedSetsAdd(['users:postcount', 'users:reputation'], 0, userData.uid, next);
},
function (next) {
db.sortedSetAdd('user:' + userData.uid + ':usernames', timestamp, userData.username, next);
},
function (next) {
groups.join('registered-users', userData.uid, next);
},
@ -104,6 +107,7 @@ module.exports = function (User) {
async.parallel([
async.apply(db.sortedSetAdd, 'email:uid', userData.uid, userData.email.toLowerCase()),
async.apply(db.sortedSetAdd, 'email:sorted', 0, userData.email.toLowerCase() + ':' + userData.uid),
async.apply(db.sortedSetAdd, 'user:' + userData.uid + ':emails', timestamp, userData.email),
], next);
if (parseInt(userData.uid, 10) !== 1 && parseInt(meta.config.requireEmailConfirmation, 10) === 1) {

Loading…
Cancel
Save