gravatars will be generated on demand

changing the setting in ACP will affect all default gravatars now.
v1.18.x
barisusakli 11 years ago
parent ac9bd0859f
commit 8afcf44732

@ -283,7 +283,7 @@ var db = require('./database'),
async.parallel({
user: function(next) {
user.getNameSlugPicture(post.uid, next);
user.getUserFields(post.uid, ['username', 'userslug', 'picture'], next);
},
topicCategory: function(next) {
topics.getTopicFields(post.tid, ['title', 'cid', 'slug', 'deleted'], function(err, topicData) {

@ -10,6 +10,7 @@
meta = require('./../meta'),
user = require('./../user'),
plugins = require('./../plugins'),
db = require('../database'),
utils = require('./../../public/src/utils'),
login_strategies = [];
@ -174,7 +175,7 @@
return next(null, false, '[[error:no-user]]');
}
user.getUserFields(uid, ['password', 'banned'], function(err, userData) {
db.getObjectFields('user:' + uid, ['password', 'banned'], function(err, userData) {
if (err) {
return next(err);
}

@ -62,13 +62,13 @@ var async = require('async'),
return callback(err || new Error('[[error:no-topic]]'));
}
user.getNameSlugPicture(topic.uid, function(err, userData) {
user.getUserFields(topic.uid, ['username', 'userslug', 'picture'], function(err, userData) {
if (err) {
return callback(err);
}
topic.user = userData;
callback(err, topic);
callback(null, topic);
});
});
};
@ -211,8 +211,7 @@ var async = require('async'),
if (userCache[topicData.uid]) {
return next(null, userCache[topicData.uid]);
}
user.getNameSlugPicture(topicData.uid, next);
user.getUserFields(topicData.uid, ['username', 'userslug', 'picture'], next);
}
}, function(err, topicInfo) {
if(err) {
@ -325,7 +324,7 @@ var async = require('async'),
return callback(new Error('[[error:no-teaser]]'));
}
user.getNameSlugPicture(postData.uid, function(err, userData) {
user.getUserFields(postData.uid, ['username', 'userslug', 'picture'], function(err, userData) {
if (err) {
return callback(err);
}

@ -33,14 +33,25 @@ var bcrypt = require('bcryptjs'),
require('./user/jobs')(User);
User.getUserField = function(uid, field, callback) {
db.getObjectField('user:' + uid, field, callback);
User.getUserFields(uid, [field], function(err, user) {
callback(err, user ? user[field] : null);
});
};
User.getUserFields = function(uid, fields, callback) {
db.getObjectFields('user:' + uid, fields, callback);
User.getMultipleUserFields([uid], fields, function(err, users) {
callback(err, users ? users[0] : null);
});
};
User.getMultipleUserFields = function(uids, fields, callback) {
var fieldsToRemove = [];
function addField(field) {
if (fields.indexOf(field) === -1) {
fields.push(field);
fieldsToRemove.push(field);
}
}
if (!Array.isArray(uids) || !uids.length) {
return callback(null, []);
@ -50,7 +61,21 @@ var bcrypt = require('bcryptjs'),
return 'user:' + uid;
});
db.getObjectsFields(keys, fields, callback);
addField('uid');
if (fields.indexOf('picture') !== -1) {
addField('email');
addField('gravatarpicture');
addField('uploadedpicture');
}
db.getObjectsFields(keys, fields, function(err, users) {
if (err) {
return callback(err);
}
callback(null, modifyUserData(users, fieldsToRemove));
});
};
User.getUserData = function(uid, callback) {
@ -74,24 +99,42 @@ var bcrypt = require('bcryptjs'),
return callback(err);
}
users.forEach(function(user) {
if (user) {
if (user.password) {
user.password = null;
user.hasPassword = true;
} else {
user.hasPassword = false;
}
callback(null, modifyUserData(users, []));
});
};
if (user.picture === user.uploadedpicture) {
user.picture = nconf.get('relative_path') + user.picture;
}
function modifyUserData(users, fieldsToRemove) {
users.forEach(function(user) {
if (!user) {
return;
}
user.hasPassword = !!user.password;
if (user.password) {
user.password = null;
}
if (parseInt(user.uid, 10) === 0) {
user.username = '[[global:guest]]';
user.userslug = '';
}
if (user.picture) {
if (user.picture === user.uploadedpicture) {
user.picture = nconf.get('relative_path') + user.picture;
} else {
user.picture = User.createGravatarURLFromEmail(user.email);
}
});
} else {
user.picture = User.createGravatarURLFromEmail('');
}
callback(null, users);
for(var i=0; i<fieldsToRemove.length; ++i) {
user[fieldsToRemove[i]] = undefined;
}
});
};
return users;
}
User.updateLastOnlineTime = function(uid, callback) {
User.getUserField(uid, 'status', function(err, status) {
@ -177,7 +220,7 @@ var bcrypt = require('bcryptjs'),
User.decrementUserFieldBy = function(uid, field, value, callback) {
db.incrObjectFieldBy('user:' + uid, field, -value, function(err, value) {
plugins.fireHook('action:user.set', field, value, 'decrement');
if (typeof callback === 'function') {
callback(err, value);
}
@ -304,20 +347,6 @@ var bcrypt = require('bcryptjs'),
});
};
User.getNameSlugPicture = function(uid, callback) {
User.getUserFields(uid, ['username', 'userslug', 'picture'], function(err, data) {
if (err) {
return callback(err);
}
callback(null, {
username: data.username || '[[global:guest]]',
userslug: data.userslug || '',
picture: data.picture || User.createGravatarURLFromEmail('')
});
});
};
User.getUidByUsername = function(username, callback) {
db.getObjectField('username:uid', username, callback);
};

@ -234,7 +234,7 @@ module.exports = function(User) {
hashAndSetPassword(callback);
});
} else {
User.getUserField(uid, 'password', function(err, currentPassword) {
db.getObjectField('user:' + uid, 'password', function(err, currentPassword) {
if(err) {
return callback(err);
}

Loading…
Cancel
Save