You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
3.7 KiB
JavaScript

'use strict';
var async = require('async'),
db = require('../database'),
user = require('../user'),
groups = require('../groups'),
meta = require('../meta'),
10 years ago
plugins = require('../plugins');
module.exports = function(Posts) {
Posts.getUserInfoForPosts = function(uids, uid, callback) {
async.parallel({
groups: function(next) {
groups.getUserGroups(uids, next);
},
10 years ago
userSettings: function(next){
user.getMultipleUserSettings(uids, next);
},
userData: function(next) {
user.getUsersFields(uids, ['uid', 'username', 'fullname', 'userslug', 'reputation', 'postcount', 'picture', 'signature', 'banned', 'status', 'lastonline'], next);
}
}, function(err, results) {
if (err) {
return callback(err);
}
var userData = results.userData;
10 years ago
userData.forEach(function(userData, i) {
10 years ago
userData.groups = [];
results.groups[i].forEach(function(group, index) {
userData.groups[index] = {
name: group.name,
slug: group.slug,
labelColor: group.labelColor,
icon: group.icon,
userTitle: group.userTitle
10 years ago
};
Squashed commit of the following: commit 56582bc9eee5d81a01f42a28808b617b9c96873a Author: Julian Lam <[email protected]> Date: Tue Oct 27 05:21:11 2015 -0400 added missing template commit 6462a1626e7d8d77210b6e10eace5c9214335f33 Author: Julian Lam <[email protected]> Date: Tue Oct 27 05:19:07 2015 -0400 sitemap index commit 3cfd56f1fbc8e03405dc394375bf5ff6eef21322 Author: Julian Lam <[email protected]> Date: Tue Oct 27 04:47:52 2015 -0400 sitemap routes, controllers, and library methods for pages, categories, and topics commit e58e07c0881bdbe16d503b4679b85f761b02163c Author: Julian Lam <[email protected]> Date: Tue Oct 27 04:07:39 2015 -0400 added groups to sitemap commit 7ee584b6327ea79f4b1f465c32da28d01c75908f Author: Julian Lam <[email protected]> Date: Tue Oct 27 01:43:06 2015 -0400 If notification dropdown is double-clicked, all notifications are marked read commit 488f147bef395233edb697a3895df0da7ee5ed0d Author: barisusakli <[email protected]> Date: Mon Oct 26 22:39:19 2015 -0400 closes #3781 commit 5e1bd58a022b1aaeedd7ab83c3655b3c16c611a0 Author: barisusakli <[email protected]> Date: Mon Oct 26 22:28:30 2015 -0400 closes #3782 commit 57d39802671612185e86977b5c237f850fe80206 Author: barisusakli <[email protected]> Date: Mon Oct 26 22:16:08 2015 -0400 closes #3790 commit 555c5b82da3ee30eab3fb21b2474eba834556741 Author: barisusakli <[email protected]> Date: Mon Oct 26 21:19:20 2015 -0400 check user settings commit 5454862c1c81525bb096466a547557cfb0f9a2b7 Author: barisusakli <[email protected]> Date: Mon Oct 26 20:26:02 2015 -0400 wait for all callbacks when creating tags commit 051c5077eb49937a8cac33b6b689c0902acfca51 Merge: 839fd93 e0e04ef Author: Barış Soner Uşaklı <[email protected]> Date: Mon Oct 26 09:54:12 2015 -0400 Merge pull request #3792 from drlogout/master Fixed wrong method name in socket.io/groups.js from isAdmin to isAdmi… commit e0e04ef8920e61f3bf411903b5a5c1f5198e1698 Author: Christian Nolte <[email protected]> Date: Mon Oct 26 14:50:32 2015 +0100 Fixed wrong method name in socket.io/groups.js from isAdmin to isAdministrator commit 839fd935ada8d6c88eb38adbd7435679a9103875 Author: barisusakli <[email protected]> Date: Sun Oct 25 21:54:35 2015 -0400 add back thread tools filter commit 37060bf1a3b75f6d74af9501344c4bd06d343db2 Merge: 5820a19 bf918bd Author: Barış Soner Uşaklı <[email protected]> Date: Sun Oct 25 18:13:06 2015 -0400 Merge pull request #3787 from cubehouse/patch-1 Upgrade script fails on some consoles commit 5820a193f60bcf0398ab1f981192cc1908f277cc Author: barisusakli <[email protected]> Date: Sun Oct 25 17:04:46 2015 -0400 closes #3789 commit 0d88d52557bf187c3b4d2b78f6da49d52952e9d1 Author: barisusakli <[email protected]> Date: Sun Oct 25 17:03:33 2015 -0400 up theme commit 9bc43ba5e1e8ca145615bd07fff1560bc7f3eb6e Author: barisusakli <[email protected]> Date: Sun Oct 25 16:57:42 2015 -0400 closes #3788 commit aafd4b698456864fb41c365d3202a7890643fd72 Author: barisusakli <[email protected]> Date: Sun Oct 25 15:56:17 2015 -0400 closes #3786 commit bf918bd016f645b9d307e4314943f787082b8627 Author: James Holding <[email protected]> Date: Sun Oct 25 10:14:00 2015 +0000 Upgrade script fails on some consoles The upgrade script errors/fails on some consoles if the stdout.columns isn't set (my console did this when upgrading a Docker instance of NodeBB). Checking for stdout.columns before using, falling back to a couple of spaces for slightly prettiness if we can't work out the console width.
9 years ago
if (results.userSettings[i] && group.name === results.userSettings[i].groupTitle && group.userTitleEnabled) {
userData.selectedGroup = userData.groups[index];
}
10 years ago
});
userData.status = user.getStatus(userData);
10 years ago
});
async.map(userData, function(userData, next) {
userData.uid = userData.uid || 0;
userData.username = userData.username || '[[global:guest]]';
userData.userslug = userData.userslug || '';
userData.reputation = userData.reputation || 0;
userData.postcount = userData.postcount || 0;
userData.banned = parseInt(userData.banned, 10) === 1;
10 years ago
userData.picture = userData.picture || '';
async.parallel({
signature: function(next) {
if (!userData.signature || parseInt(meta.config.disableSignatures, 10) === 1) {
userData.signature = '';
return next();
}
Posts.parseSignature(userData, uid, next);
},
customProfileInfo: function(next) {
plugins.fireHook('filter:posts.custom_profile_info', {profile: [], uid: userData.uid}, next);
}
}, function(err, results) {
if (err) {
return next(err);
}
userData.custom_profile_info = results.customProfileInfo.profile;
10 years ago
userData.signature = sanitizeSignature(userData.signature);
plugins.fireHook('filter:posts.modifyUserInfo', userData, next);
});
}, callback);
});
};
Posts.isOwner = function(pid, uid, callback) {
uid = parseInt(uid, 10);
if (Array.isArray(pid)) {
if (!uid) {
return callback(null, pid.map(function() {return false;}));
}
Posts.getPostsFields(pid, ['uid'], function(err, posts) {
if (err) {
return callback(err);
}
posts = posts.map(function(post) {
return post && parseInt(post.uid, 10) === uid;
});
callback(null, posts);
});
} else {
if (!uid) {
return callback(null, false);
}
Posts.getPostField(pid, 'uid', function(err, author) {
callback(err, parseInt(author, 10) === uid);
});
}
};
Posts.isModerator = function(pids, uid, callback) {
if (!parseInt(uid, 10)) {
return callback(null, pids.map(function() {return false;}));
}
Posts.getCidsByPids(pids, function(err, cids) {
if (err) {
return callback(err);
}
user.isModerator(uid, cids, callback);
});
};
};
10 years ago
function sanitizeSignature(signature) {
var string = require('string')(signature),
tagsToStrip = [];
if (parseInt(meta.config['signatures:disableLinks'], 10) === 1) {
tagsToStrip.push('a');
}
if (parseInt(meta.config['signatures:disableImages'], 10) === 1) {
tagsToStrip.push('img');
}
return tagsToStrip.length ? string.stripTags.apply(string, tagsToStrip).s : signature;
}