mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +01:00
renamed end to stop globally
fixed getting favourites for admins
This commit is contained in:
@@ -19,6 +19,7 @@ define('forum/account/favourites', ['forum/account/header', 'forum/infinitescrol
|
|||||||
}
|
}
|
||||||
|
|
||||||
infinitescroll.loadMore('posts.loadMoreFavourites', {
|
infinitescroll.loadMore('posts.loadMoreFavourites', {
|
||||||
|
uid: ajaxify.variables.get('theirid'),
|
||||||
after: $('.user-favourite-posts').attr('data-nextstart')
|
after: $('.user-favourite-posts').attr('data-nextstart')
|
||||||
}, function(data, done) {
|
}, function(data, done) {
|
||||||
if (data.posts && data.posts.length) {
|
if (data.posts && data.posts.length) {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ var async = require('async'),
|
|||||||
|
|
||||||
var batch = options.batch || DEFAULT_BATCH_SIZE;
|
var batch = options.batch || DEFAULT_BATCH_SIZE;
|
||||||
var start = 0;
|
var start = 0;
|
||||||
var end = batch;
|
var stop = batch;
|
||||||
var done = false;
|
var done = false;
|
||||||
|
|
||||||
async.whilst(
|
async.whilst(
|
||||||
@@ -36,11 +36,11 @@ var async = require('async'),
|
|||||||
return !done;
|
return !done;
|
||||||
},
|
},
|
||||||
function(next) {
|
function(next) {
|
||||||
db.getSortedSetRange(setKey, start, end, function(err, ids) {
|
db.getSortedSetRange(setKey, start, stop, function(err, ids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
if (!ids.length || options.doneIf(start, end, ids)) {
|
if (!ids.length || options.doneIf(start, stop, ids)) {
|
||||||
done = true;
|
done = true;
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ var async = require('async'),
|
|||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
start += utils.isNumber(options.alwaysStartAt) ? options.alwaysStartAt : batch + 1;
|
start += utils.isNumber(options.alwaysStartAt) ? options.alwaysStartAt : batch + 1;
|
||||||
end = start + batch;
|
stop = start + batch;
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -179,19 +179,19 @@ adminController.flags.get = function(req, res, next) {
|
|||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
res.render('admin/manage/flags', {posts: posts, next: end + 1, byUsername: byUsername});
|
res.render('admin/manage/flags', {posts: posts, next: stop + 1, byUsername: byUsername});
|
||||||
}
|
}
|
||||||
var uid = req.user ? parseInt(req.user.uid, 10) : 0;
|
var uid = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
var sortBy = req.query.sortBy || 'count';
|
var sortBy = req.query.sortBy || 'count';
|
||||||
var byUsername = req.query.byUsername || '';
|
var byUsername = req.query.byUsername || '';
|
||||||
var start = 0;
|
var start = 0;
|
||||||
var end = 19;
|
var stop = 19;
|
||||||
|
|
||||||
if (byUsername) {
|
if (byUsername) {
|
||||||
posts.getUserFlags(byUsername, sortBy, uid, start, end, done);
|
posts.getUserFlags(byUsername, sortBy, uid, start, stop, done);
|
||||||
} else {
|
} else {
|
||||||
var set = sortBy === 'count' ? 'posts:flags:count' : 'posts:flagged';
|
var set = sortBy === 'count' ? 'posts:flags:count' : 'posts:flagged';
|
||||||
posts.getFlags(set, uid, start, end, done);
|
posts.getFlags(set, uid, start, stop, done);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ var categoriesController = {},
|
|||||||
|
|
||||||
categoriesController.recent = function(req, res, next) {
|
categoriesController.recent = function(req, res, next) {
|
||||||
var uid = req.user ? req.user.uid : 0;
|
var uid = req.user ? req.user.uid : 0;
|
||||||
var end = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
|
var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
|
||||||
topics.getTopicsFromSet('topics:recent', uid, 0, end, function(err, data) {
|
topics.getTopicsFromSet('topics:recent', uid, 0, stop, function(err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
@@ -72,8 +72,8 @@ categoriesController.popular = function(req, res, next) {
|
|||||||
|
|
||||||
categoriesController.unread = function(req, res, next) {
|
categoriesController.unread = function(req, res, next) {
|
||||||
var uid = req.user ? req.user.uid : 0;
|
var uid = req.user ? req.user.uid : 0;
|
||||||
var end = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
|
var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
|
||||||
topics.getUnreadTopics(uid, 0, end, function (err, data) {
|
topics.getUnreadTopics(uid, 0, stop, function (err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ var tagsController = {},
|
|||||||
tagsController.getTag = function(req, res, next) {
|
tagsController.getTag = function(req, res, next) {
|
||||||
var tag = validator.escape(req.params.tag);
|
var tag = validator.escape(req.params.tag);
|
||||||
var uid = req.user ? req.user.uid : 0;
|
var uid = req.user ? req.user.uid : 0;
|
||||||
var end = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
|
var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
|
||||||
|
|
||||||
topics.getTagTids(tag, 0, end, function(err, tids) {
|
topics.getTagTids(tag, 0, stop, function(err, tids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@ tagsController.getTag = function(req, res, next) {
|
|||||||
var data = {
|
var data = {
|
||||||
topics: topics,
|
topics: topics,
|
||||||
tag: tag,
|
tag: tag,
|
||||||
nextStart: end + 1,
|
nextStart: stop + 1,
|
||||||
breadcrumbs: helpers.buildBreadcrumbs([{text: '[[tags:tags]]', url: '/tags'}, {text: tag}])
|
breadcrumbs: helpers.buildBreadcrumbs([{text: '[[tags:tags]]', url: '/tags'}, {text: tag}])
|
||||||
};
|
};
|
||||||
res.render('tag', data);
|
res.render('tag', data);
|
||||||
|
|||||||
@@ -106,9 +106,9 @@ topicsController.get = function(req, res, next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var start = (page - 1) * settings.postsPerPage + postIndex,
|
var start = (page - 1) * settings.postsPerPage + postIndex,
|
||||||
end = start + settings.postsPerPage - 1;
|
stop = start + settings.postsPerPage - 1;
|
||||||
|
|
||||||
topics.getTopicWithPosts(tid, set, uid, start, end, reverse, function (err, topicData) {
|
topics.getTopicWithPosts(tid, set, uid, start, stop, reverse, function (err, topicData) {
|
||||||
if (err && err.message === '[[error:no-topic]]' && !topicData) {
|
if (err && err.message === '[[error:no-topic]]' && !topicData) {
|
||||||
return helpers.notFound(req, res);
|
return helpers.notFound(req, res);
|
||||||
}
|
}
|
||||||
@@ -255,7 +255,7 @@ topicsController.get = function(req, res, next) {
|
|||||||
data['reputation:disabled'] = parseInt(meta.config['reputation:disabled'], 10) === 1;
|
data['reputation:disabled'] = parseInt(meta.config['reputation:disabled'], 10) === 1;
|
||||||
data['downvote:disabled'] = parseInt(meta.config['downvote:disabled'], 10) === 1;
|
data['downvote:disabled'] = parseInt(meta.config['downvote:disabled'], 10) === 1;
|
||||||
data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1;
|
data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1;
|
||||||
data['rssFeedUrl'] = nconf.get('relative_path') + '/topic/' + data.tid + '.rss';
|
data.rssFeedUrl = nconf.get('relative_path') + '/topic/' + data.tid + '.rss';
|
||||||
data.pagination = pagination.create(data.currentPage, data.pageCount);
|
data.pagination = pagination.create(data.currentPage, data.pageCount);
|
||||||
data.pagination.rel.forEach(function(rel) {
|
data.pagination.rel.forEach(function(rel) {
|
||||||
res.locals.linkTags.push(rel);
|
res.locals.linkTags.push(rel);
|
||||||
@@ -280,25 +280,23 @@ topicsController.teaser = function(req, res, next) {
|
|||||||
return next(new Error('[[error:invalid-tid]]'));
|
return next(new Error('[[error:invalid-tid]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
privileges.topics.can('read', tid, uid, function(err, canRead) {
|
async.waterfall([
|
||||||
if (err) {
|
function(next) {
|
||||||
return next(err);
|
privileges.topics.can('read', tid, uid, next);
|
||||||
}
|
},
|
||||||
|
function(canRead, next) {
|
||||||
if (!canRead) {
|
if (!canRead) {
|
||||||
return res.status(403).json('[[error:no-privileges]]');
|
return res.status(403).json('[[error:no-privileges]]');
|
||||||
}
|
}
|
||||||
|
topics.getLatestUndeletedPid(tid, next);
|
||||||
topics.getLatestUndeletedPid(tid, function(err, pid) {
|
},
|
||||||
if (err) {
|
function(pid, next) {
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pid) {
|
if (!pid) {
|
||||||
return res.status(404).json('not-found');
|
return res.status(404).json('not-found');
|
||||||
}
|
}
|
||||||
|
posts.getPostSummaryByPids([pid], uid, {stripTags: false}, next);
|
||||||
posts.getPostSummaryByPids([pid], uid, {stripTags: false}, function(err, posts) {
|
}
|
||||||
|
], function(err, posts) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
@@ -306,11 +304,8 @@ topicsController.teaser = function(req, res, next) {
|
|||||||
if (!Array.isArray(posts) || !posts.length) {
|
if (!Array.isArray(posts) || !posts.length) {
|
||||||
return res.status(404).json('not-found');
|
return res.status(404).json('not-found');
|
||||||
}
|
}
|
||||||
|
|
||||||
res.json(posts[0]);
|
res.json(posts[0]);
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = topicsController;
|
module.exports = topicsController;
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Groups.getGroups = function(start, end, callback) {
|
Groups.getGroups = function(start, stop, callback) {
|
||||||
db.getSortedSetRevRange('groups:createtime', start, end, callback);
|
db.getSortedSetRevRange('groups:createtime', start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Groups.get = function(groupName, options, callback) {
|
Groups.get = function(groupName, options, callback) {
|
||||||
@@ -315,8 +315,8 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Groups.getMembers = function(groupName, start, end, callback) {
|
Groups.getMembers = function(groupName, start, stop, callback) {
|
||||||
db.getSortedSetRevRange('group:' + groupName + ':members', start, end, callback);
|
db.getSortedSetRevRange('group:' + groupName + ':members', start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Groups.getMembersOfGroups = function(groupNames, callback) {
|
Groups.getMembersOfGroups = function(groupNames, callback) {
|
||||||
|
|||||||
@@ -225,10 +225,10 @@ var db = require('./database'),
|
|||||||
db.sortedSetAdd('uid:' + uid + ':chats', Date.now(), toUid, callback);
|
db.sortedSetAdd('uid:' + uid + ':chats', Date.now(), toUid, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Messaging.getRecentChats = function(uid, start, end, callback) {
|
Messaging.getRecentChats = function(uid, start, stop, callback) {
|
||||||
var websockets = require('./socket.io');
|
var websockets = require('./socket.io');
|
||||||
|
|
||||||
db.getSortedSetRevRange('uid:' + uid + ':chats', start, end, function(err, uids) {
|
db.getSortedSetRevRange('uid:' + uid + ':chats', start, stop, function(err, uids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@@ -250,7 +250,7 @@ var db = require('./database'),
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!results.users.length) {
|
if (!results.users.length) {
|
||||||
return callback(null, {users: [], nextStart: end + 1});
|
return callback(null, {users: [], nextStart: stop + 1});
|
||||||
}
|
}
|
||||||
|
|
||||||
results.users.forEach(function(user, index) {
|
results.users.forEach(function(user, index) {
|
||||||
@@ -260,7 +260,7 @@ var db = require('./database'),
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
callback(null, {users: results.users, nextStart: end + 1});
|
callback(null, {users: results.users, nextStart: stop + 1});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
12
src/posts.js
12
src/posts.js
@@ -26,11 +26,11 @@ var async = require('async'),
|
|||||||
db.isSortedSetMember('posts:pid', pid, callback);
|
db.isSortedSetMember('posts:pid', pid, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.getPidsFromSet = function(set, start, end, reverse, callback) {
|
Posts.getPidsFromSet = function(set, start, stop, reverse, callback) {
|
||||||
if (isNaN(start) || isNaN(end)) {
|
if (isNaN(start) || isNaN(stop)) {
|
||||||
return callback(null, []);
|
return callback(null, []);
|
||||||
}
|
}
|
||||||
db[reverse ? 'getSortedSetRevRange' : 'getSortedSetRange'](set, start, end, callback);
|
db[reverse ? 'getSortedSetRevRange' : 'getSortedSetRange'](set, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.getPostsByPids = function(pids, uid, callback) {
|
Posts.getPostsByPids = function(pids, uid, callback) {
|
||||||
@@ -73,10 +73,10 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.getPostsFromSet = function(set, uid, start, end, callback) {
|
Posts.getPostsFromSet = function(set, uid, start, stop, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
db.getSortedSetRevRange(set, start, end, next);
|
db.getSortedSetRevRange(set, start, stop, next);
|
||||||
},
|
},
|
||||||
function(pids, next) {
|
function(pids, next) {
|
||||||
privileges.posts.filter('read', pids, uid, next);
|
privileges.posts.filter('read', pids, uid, next);
|
||||||
@@ -85,7 +85,7 @@ var async = require('async'),
|
|||||||
Posts.getPostSummaryByPids(pids, uid, {stripTags: false}, next);
|
Posts.getPostSummaryByPids(pids, uid, {stripTags: false}, next);
|
||||||
},
|
},
|
||||||
function(posts, next) {
|
function(posts, next) {
|
||||||
next(null, {posts: posts, nextStart: end + 1});
|
next(null, {posts: posts, nextStart: stop + 1});
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -90,8 +90,8 @@ module.exports = function(Posts) {
|
|||||||
db.delete('posts:flagged', callback);
|
db.delete('posts:flagged', callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.getFlags = function(set, uid, start, end, callback) {
|
Posts.getFlags = function(set, uid, start, stop, callback) {
|
||||||
db.getSortedSetRevRange(set, start, end, function(err, pids) {
|
db.getSortedSetRevRange(set, start, stop, function(err, pids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ module.exports = function(Posts) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.getUserFlags = function(byUsername, sortBy, callerUID, start, end, callback) {
|
Posts.getUserFlags = function(byUsername, sortBy, callerUID, start, stop, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
user.getUidByUsername(byUsername, next);
|
user.getUidByUsername(byUsername, next);
|
||||||
@@ -120,7 +120,7 @@ module.exports = function(Posts) {
|
|||||||
return b.flags - a.flags;
|
return b.flags - a.flags;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
next(null, posts.slice(start, end));
|
next(null, posts.slice(start, stop));
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ module.exports = function(Posts) {
|
|||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.getRecentPosterUids = function(start, end, callback) {
|
Posts.getRecentPosterUids = function(start, stop, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
db.getSortedSetRevRange('posts:pid', start, end, next);
|
db.getSortedSetRevRange('posts:pid', start, stop, next);
|
||||||
},
|
},
|
||||||
function(pids, next) {
|
function(pids, next) {
|
||||||
Posts.getPostsFields(pids, ['uid'], next);
|
Posts.getPostsFields(pids, ['uid'], next);
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ var async = require('async'),
|
|||||||
|
|
||||||
module.exports = function(Posts) {
|
module.exports = function(Posts) {
|
||||||
|
|
||||||
Posts.getPostsByTid = function(tid, set, start, end, uid, reverse, callback) {
|
Posts.getPostsByTid = function(tid, set, start, stop, uid, reverse, callback) {
|
||||||
Posts.getPidsFromSet(set, start, end, reverse, function(err, pids) {
|
Posts.getPidsFromSet(set, start, stop, reverse, function(err, pids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -304,12 +304,12 @@ SocketAdmin.getMoreEvents = function(socket, next, callback) {
|
|||||||
if (start < 0) {
|
if (start < 0) {
|
||||||
return callback(null, {data: [], next: next});
|
return callback(null, {data: [], next: next});
|
||||||
}
|
}
|
||||||
var end = start + 10;
|
var stop = start + 10;
|
||||||
events.getEvents(start, end, function(err, events) {
|
events.getEvents(start, stop, function(err, events) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
callback(null, {events: events, next: end + 1});
|
callback(null, {events: events, next: stop + 1});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -336,15 +336,15 @@ SocketAdmin.getMoreFlags = function(socket, data, callback) {
|
|||||||
var sortBy = data.sortBy || 'count';
|
var sortBy = data.sortBy || 'count';
|
||||||
var byUsername = data.byUsername || '';
|
var byUsername = data.byUsername || '';
|
||||||
var start = parseInt(data.after, 10);
|
var start = parseInt(data.after, 10);
|
||||||
var end = start + 19;
|
var stop = start + 19;
|
||||||
if (byUsername) {
|
if (byUsername) {
|
||||||
posts.getUserFlags(byUsername, sortBy, socket.uid, start, end, function(err, posts) {
|
posts.getUserFlags(byUsername, sortBy, socket.uid, start, stop, function(err, posts) {
|
||||||
callback(err, {posts: posts, next: end + 1});
|
callback(err, {posts: posts, next: stop + 1});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
var set = sortBy === 'count' ? 'posts:flags:count' : 'posts:flagged';
|
var set = sortBy === 'count' ? 'posts:flags:count' : 'posts:flagged';
|
||||||
posts.getFlags(set, socket.uid, start, end, function(err, posts) {
|
posts.getFlags(set, socket.uid, start, stop, function(err, posts) {
|
||||||
callback(err, {posts: posts, next: end + 1});
|
callback(err, {posts: posts, next: stop + 1});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ SocketCategories.loadMore = function(socket, data, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var start = parseInt(data.after, 10),
|
var start = parseInt(data.after, 10),
|
||||||
end = start + results.settings.topicsPerPage - 1;
|
stop = start + results.settings.topicsPerPage - 1;
|
||||||
|
|
||||||
if (results.targetUid) {
|
if (results.targetUid) {
|
||||||
set = 'cid:' + data.cid + ':uid:' + results.targetUid + ':tids';
|
set = 'cid:' + data.cid + ':uid:' + results.targetUid + ':tids';
|
||||||
@@ -69,7 +69,7 @@ SocketCategories.loadMore = function(socket, data, callback) {
|
|||||||
set: set,
|
set: set,
|
||||||
reverse: reverse,
|
reverse: reverse,
|
||||||
start: start,
|
start: start,
|
||||||
stop: end,
|
stop: stop,
|
||||||
uid: socket.uid,
|
uid: socket.uid,
|
||||||
targetUid: results.targetUid
|
targetUid: results.targetUid
|
||||||
}, function(err, data) {
|
}, function(err, data) {
|
||||||
|
|||||||
@@ -249,9 +249,9 @@ SocketModules.chats.getRecentChats = function(socket, data, callback) {
|
|||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
var start = parseInt(data.after, 10),
|
var start = parseInt(data.after, 10),
|
||||||
end = start + 9;
|
stop = start + 9;
|
||||||
|
|
||||||
Messaging.getRecentChats(socket.uid, start, end, callback);
|
Messaging.getRecentChats(socket.uid, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -511,27 +511,23 @@ SocketPosts.flag = function(socket, pid, callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketPosts.loadMoreFavourites = function(socket, data, callback) {
|
SocketPosts.loadMoreFavourites = function(socket, data, callback) {
|
||||||
if(!data || !data.after) {
|
loadMorePosts('uid:' + data.uid + ':favourites', socket.uid, data, callback);
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
|
||||||
}
|
|
||||||
|
|
||||||
var start = parseInt(data.after, 10),
|
|
||||||
end = start + 9;
|
|
||||||
|
|
||||||
posts.getPostsFromSet('uid:' + socket.uid + ':favourites', socket.uid, start, end, callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketPosts.loadMoreUserPosts = function(socket, data, callback) {
|
SocketPosts.loadMoreUserPosts = function(socket, data, callback) {
|
||||||
if(!data || !data.uid || !utils.isNumber(data.after)) {
|
loadMorePosts('uid:' + data.uid + ':posts', socket.uid, data, callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
function loadMorePosts(set, uid, data, callback) {
|
||||||
|
if (!data || !utils.isNumber(data.uid) || !utils.isNumber(data.after)) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var start = Math.max(0, parseInt(data.after, 10)),
|
var start = Math.max(0, parseInt(data.after, 10)),
|
||||||
end = start + 9;
|
stop = start + 9;
|
||||||
|
|
||||||
posts.getPostsFromSet('uid:' + data.uid + ':posts', socket.uid, start, end, callback);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
posts.getPostsFromSet(set, uid, start, stop, callback);
|
||||||
|
}
|
||||||
|
|
||||||
SocketPosts.getRecentPosts = function(socket, data, callback) {
|
SocketPosts.getRecentPosts = function(socket, data, callback) {
|
||||||
if(!data || !data.count) {
|
if(!data || !data.count) {
|
||||||
|
|||||||
@@ -470,11 +470,11 @@ SocketTopics.loadMore = function(socket, data, callback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var end = start + results.settings.postsPerPage - 1;
|
var stop = start + results.settings.postsPerPage - 1;
|
||||||
|
|
||||||
async.parallel({
|
async.parallel({
|
||||||
posts: function(next) {
|
posts: function(next) {
|
||||||
topics.getTopicPosts(data.tid, set, start, end, socket.uid, reverse, next);
|
topics.getTopicPosts(data.tid, set, start, stop, socket.uid, reverse, next);
|
||||||
},
|
},
|
||||||
privileges: function(next) {
|
privileges: function(next) {
|
||||||
next(null, results.privileges);
|
next(null, results.privileges);
|
||||||
@@ -490,33 +490,33 @@ SocketTopics.loadMore = function(socket, data, callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.loadMoreUnreadTopics = function(socket, data, callback) {
|
SocketTopics.loadMoreUnreadTopics = function(socket, data, callback) {
|
||||||
if(!data || !data.after) {
|
if (!data || !data.after) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var start = parseInt(data.after, 10),
|
var start = parseInt(data.after, 10),
|
||||||
end = start + 9;
|
stop = start + 9;
|
||||||
|
|
||||||
topics.getUnreadTopics(socket.uid, start, end, callback);
|
topics.getUnreadTopics(socket.uid, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.loadMoreFromSet = function(socket, data, callback) {
|
SocketTopics.loadMoreFromSet = function(socket, data, callback) {
|
||||||
if(!data || !data.after || !data.set) {
|
if (!data || !data.after || !data.set) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var start = parseInt(data.after, 10),
|
var start = parseInt(data.after, 10),
|
||||||
end = start + 9;
|
stop = start + 9;
|
||||||
|
|
||||||
topics.getTopicsFromSet(data.set, socket.uid, start, end, callback);
|
topics.getTopicsFromSet(data.set, socket.uid, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.loadTopics = function(socket, data, callback) {
|
SocketTopics.loadTopics = function(socket, data, callback) {
|
||||||
if(!data || !data.set || !utils.isNumber(data.start) || !utils.isNumber(data.end)) {
|
if (!data || !data.set || !utils.isNumber(data.start) || !utils.isNumber(data.stop)) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
topics.getTopicsFromSet(data.set, socket.uid, data.start, data.end, callback);
|
topics.getTopicsFromSet(data.set, socket.uid, data.start, data.stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.getPageCount = function(socket, tid, callback) {
|
SocketTopics.getPageCount = function(socket, tid, callback) {
|
||||||
@@ -544,14 +544,14 @@ SocketTopics.loadMoreTags = function(socket, data, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var start = parseInt(data.after, 10),
|
var start = parseInt(data.after, 10),
|
||||||
end = start + 99;
|
stop = start + 99;
|
||||||
|
|
||||||
topics.getTags(start, end, function(err, tags) {
|
topics.getTags(start, stop, function(err, tags) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(null, {tags: tags, nextStart: end + 1});
|
callback(null, {tags: tags, nextStart: stop + 1});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ SocketUser.getUnreadChatCount = function(socket, data, callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketUser.loadMore = function(socket, data, callback) {
|
SocketUser.loadMore = function(socket, data, callback) {
|
||||||
if(!data || !data.set || parseInt(data.after, 10) < 0) {
|
if (!data || !data.set || parseInt(data.after, 10) < 0) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,28 +406,30 @@ SocketUser.loadMore = function(socket, data, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var start = parseInt(data.after, 10),
|
var start = parseInt(data.after, 10),
|
||||||
end = start + 19;
|
stop = start + 19;
|
||||||
|
|
||||||
user.getUsersFromSet(data.set, socket.uid, start, end, function(err, userData) {
|
async.parallel({
|
||||||
|
isAdmin: function(next) {
|
||||||
|
user.isAdministrator(socket.uid, next);
|
||||||
|
},
|
||||||
|
users: function(next) {
|
||||||
|
user.getUsersFromSet(data.set, socket.uid, start, stop, next);
|
||||||
|
}
|
||||||
|
}, function(err, results) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
user.isAdministrator(socket.uid, function (err, isAdministrator) {
|
|
||||||
if (err) {
|
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isAdministrator && data.set === 'users:online') {
|
if (!results.isAdmin && data.set === 'users:online') {
|
||||||
userData = userData.filter(function(item) {
|
results.users = results.users.filter(function(user) {
|
||||||
return item.status !== 'offline';
|
return user.status !== 'offline';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(null, {
|
callback(null, {
|
||||||
users: userData,
|
users: results.users,
|
||||||
nextStart: end + 1
|
nextStart: stop + 1
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -112,16 +112,16 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicsFromSet = function(set, uid, start, end, callback) {
|
Topics.getTopicsFromSet = function(set, uid, start, stop, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
db.getSortedSetRevRange(set, start, end, next);
|
db.getSortedSetRevRange(set, start, stop, next);
|
||||||
},
|
},
|
||||||
function(tids, next) {
|
function(tids, next) {
|
||||||
Topics.getTopics(tids, uid, next);
|
Topics.getTopics(tids, uid, next);
|
||||||
},
|
},
|
||||||
function(topics, next) {
|
function(topics, next) {
|
||||||
next(null, {topics: topics, nextStart: end + 1});
|
next(null, {topics: topics, nextStart: stop + 1});
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
@@ -209,14 +209,14 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicWithPosts = function(tid, set, uid, start, end, reverse, callback) {
|
Topics.getTopicWithPosts = function(tid, set, uid, start, stop, reverse, callback) {
|
||||||
Topics.getTopicData(tid, function(err, topicData) {
|
Topics.getTopicData(tid, function(err, topicData) {
|
||||||
if (err || !topicData) {
|
if (err || !topicData) {
|
||||||
return callback(err || new Error('[[error:no-topic]]'));
|
return callback(err || new Error('[[error:no-topic]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
async.parallel({
|
async.parallel({
|
||||||
posts: async.apply(getMainPostAndReplies, topicData, set, uid, start, end, reverse),
|
posts: async.apply(getMainPostAndReplies, topicData, set, uid, start, stop, reverse),
|
||||||
category: async.apply(Topics.getCategoryData, tid),
|
category: async.apply(Topics.getCategoryData, tid),
|
||||||
threadTools: async.apply(plugins.fireHook, 'filter:topic.thread_tools', {topic: topicData, uid: uid, tools: []}),
|
threadTools: async.apply(plugins.fireHook, 'filter:topic.thread_tools', {topic: topicData, uid: uid, tools: []}),
|
||||||
tags: async.apply(Topics.getTopicTagsObjects, tid),
|
tags: async.apply(Topics.getTopicTagsObjects, tid),
|
||||||
@@ -244,10 +244,10 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function getMainPostAndReplies(topic, set, uid, start, end, reverse, callback) {
|
function getMainPostAndReplies(topic, set, uid, start, stop, reverse, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
posts.getPidsFromSet(set, start, end, reverse, next);
|
posts.getPidsFromSet(set, start, stop, reverse, next);
|
||||||
},
|
},
|
||||||
function(pids, next) {
|
function(pids, next) {
|
||||||
if ((!Array.isArray(pids) || !pids.length) && !topic.mainPid) {
|
if ((!Array.isArray(pids) || !pids.length) && !topic.mainPid) {
|
||||||
@@ -268,7 +268,7 @@ var async = require('async'),
|
|||||||
posts[0].index = 0;
|
posts[0].index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
var indices = Topics.calculatePostIndices(start, end, topic.postcount, reverse);
|
var indices = Topics.calculatePostIndices(start, stop, topic.postcount, reverse);
|
||||||
for (var i=1; i<posts.length; ++i) {
|
for (var i=1; i<posts.length; ++i) {
|
||||||
if (posts[i]) {
|
if (posts[i]) {
|
||||||
posts[i].index = indices[i - 1];
|
posts[i].index = indices[i - 1];
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ module.exports = function(Topics) {
|
|||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicPosts = function(tid, set, start, end, uid, reverse, callback) {
|
Topics.getTopicPosts = function(tid, set, start, stop, uid, reverse, callback) {
|
||||||
callback = callback || function() {};
|
callback = callback || function() {};
|
||||||
async.parallel({
|
async.parallel({
|
||||||
posts: function(next) {
|
posts: function(next) {
|
||||||
posts.getPostsByTid(tid, set, start, end, uid, reverse, next);
|
posts.getPostsByTid(tid, set, start, stop, uid, reverse, next);
|
||||||
},
|
},
|
||||||
postCount: function(next) {
|
postCount: function(next) {
|
||||||
Topics.getTopicField(tid, 'postcount', next);
|
Topics.getTopicField(tid, 'postcount', next);
|
||||||
@@ -43,7 +43,7 @@ module.exports = function(Topics) {
|
|||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var indices = Topics.calculatePostIndices(start, end, results.postCount, reverse);
|
var indices = Topics.calculatePostIndices(start, stop, results.postCount, reverse);
|
||||||
results.posts.forEach(function(post, index) {
|
results.posts.forEach(function(post, index) {
|
||||||
if (post) {
|
if (post) {
|
||||||
post.index = indices[index];
|
post.index = indices[index];
|
||||||
@@ -150,9 +150,9 @@ module.exports = function(Topics) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.calculatePostIndices = function(start, end, postCount, reverse) {
|
Topics.calculatePostIndices = function(start, stop, postCount, reverse) {
|
||||||
var indices = [];
|
var indices = [];
|
||||||
var count = end - start + 1;
|
var count = stop - start + 1;
|
||||||
for(var i=0; i<count; ++i) {
|
for(var i=0; i<count; ++i) {
|
||||||
if (reverse) {
|
if (reverse) {
|
||||||
indices.push(postCount - (start + i + 1));
|
indices.push(postCount - (start + i + 1));
|
||||||
|
|||||||
@@ -14,32 +14,32 @@ module.exports = function(Topics) {
|
|||||||
year: 31104000000
|
year: 31104000000
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getLatestTopics = function(uid, start, end, term, callback) {
|
Topics.getLatestTopics = function(uid, start, stop, term, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
Topics.getLatestTidsFromSet('topics:recent', start, end, term, next);
|
Topics.getLatestTidsFromSet('topics:recent', start, stop, term, next);
|
||||||
},
|
},
|
||||||
function(tids, next) {
|
function(tids, next) {
|
||||||
Topics.getTopics(tids, uid, next);
|
Topics.getTopics(tids, uid, next);
|
||||||
},
|
},
|
||||||
function(topics, next) {
|
function(topics, next) {
|
||||||
next(null, {topics: topics, nextStart: end + 1});
|
next(null, {topics: topics, nextStart: stop + 1});
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getLatestTids = function(start, end, term, callback) {
|
Topics.getLatestTids = function(start, stop, term, callback) {
|
||||||
winston.warn('[deprecation warning] please use Topics.getLatestTidsFromSet("topics:recent")');
|
winston.warn('[deprecation warning] please use Topics.getLatestTidsFromSet("topics:recent")');
|
||||||
Topics.getLatestTidsFromSet('topics:recent', start, end, term, callback);
|
Topics.getLatestTidsFromSet('topics:recent', start, stop, term, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getLatestTidsFromSet = function(set, start, end, term, callback) {
|
Topics.getLatestTidsFromSet = function(set, start, stop, term, callback) {
|
||||||
var since = terms.day;
|
var since = terms.day;
|
||||||
if (terms[term]) {
|
if (terms[term]) {
|
||||||
since = terms[term];
|
since = terms[term];
|
||||||
}
|
}
|
||||||
|
|
||||||
var count = parseInt(end, 10) === -1 ? end : end - start + 1;
|
var count = parseInt(stop, 10) === -1 ? stop : stop - start + 1;
|
||||||
|
|
||||||
db.getSortedSetRevRangeByScore(set, start, count, '+inf', Date.now() - since, callback);
|
db.getSortedSetRevRangeByScore(set, start, count, '+inf', Date.now() - since, callback);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var async = require('async'),
|
|||||||
|
|
||||||
module.exports = function(Topics) {
|
module.exports = function(Topics) {
|
||||||
|
|
||||||
Topics.getSuggestedTopics = function(tid, uid, start, end, callback) {
|
Topics.getSuggestedTopics = function(tid, uid, start, stop, callback) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
tagTids: function(next) {
|
tagTids: function(next) {
|
||||||
getTidsWithSameTags(tid, next);
|
getTidsWithSameTags(tid, next);
|
||||||
@@ -29,7 +29,7 @@ module.exports = function(Topics) {
|
|||||||
var tids = results.tagTids.concat(results.searchTids).concat(results.categoryTids);
|
var tids = results.tagTids.concat(results.searchTids).concat(results.categoryTids);
|
||||||
tids = tids.filter(function(_tid, index, array) {
|
tids = tids.filter(function(_tid, index, array) {
|
||||||
return parseInt(_tid, 10) !== parseInt(tid, 10) && array.indexOf(_tid) === index;
|
return parseInt(_tid, 10) !== parseInt(tid, 10) && array.indexOf(_tid) === index;
|
||||||
}).slice(start, end + 1);
|
}).slice(start, stop + 1);
|
||||||
|
|
||||||
Topics.getTopics(tids, uid, callback);
|
Topics.getTopics(tids, uid, callback);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -72,8 +72,8 @@ module.exports = function(Topics) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Topics.getTagTids = function(tag, start, end, callback) {
|
Topics.getTagTids = function(tag, start, stop, callback) {
|
||||||
db.getSortedSetRevRange('tag:' + tag + ':topics', start, end, callback);
|
db.getSortedSetRevRange('tag:' + tag + ':topics', start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTagTopicCount = function(tag, callback) {
|
Topics.getTagTopicCount = function(tag, callback) {
|
||||||
@@ -121,8 +121,8 @@ module.exports = function(Topics) {
|
|||||||
db.sortedSetRemove('tags:topic:count', tag);
|
db.sortedSetRemove('tags:topic:count', tag);
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTags = function(start, end, callback) {
|
Topics.getTags = function(start, stop, callback) {
|
||||||
db.getSortedSetRevRangeWithScores('tags:topic:count', start, end, function(err, tags) {
|
db.getSortedSetRevRangeWithScores('tags:topic:count', start, stop, function(err, tags) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ module.exports = function(User) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
User.getIPs = function(uid, end, callback) {
|
User.getIPs = function(uid, stop, callback) {
|
||||||
db.getSortedSetRevRange('uid:' + uid + ':ip', 0, end, function(err, ips) {
|
db.getSortedSetRevRange('uid:' + uid + ':ip', 0, stop, function(err, ips) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,20 +53,20 @@ module.exports = function(User) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
User.getFollowing = function(uid, start, end, callback) {
|
User.getFollowing = function(uid, start, stop, callback) {
|
||||||
getFollow(uid, 'following:' + uid, start, end, callback);
|
getFollow(uid, 'following:' + uid, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
User.getFollowers = function(uid, start, end, callback) {
|
User.getFollowers = function(uid, start, stop, callback) {
|
||||||
getFollow(uid, 'followers:' + uid, start, end, callback);
|
getFollow(uid, 'followers:' + uid, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
function getFollow(uid, set, start, end, callback) {
|
function getFollow(uid, set, start, stop, callback) {
|
||||||
if (!parseInt(uid, 10)) {
|
if (!parseInt(uid, 10)) {
|
||||||
return callback(null, []);
|
return callback(null, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
db.getSortedSetRevRange(set, start, end, function(err, uids) {
|
db.getSortedSetRevRange(set, start, stop, function(err, uids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,14 +59,14 @@ module.exports = function(User) {
|
|||||||
User.paginate = function(page, data) {
|
User.paginate = function(page, data) {
|
||||||
var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20;
|
var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20;
|
||||||
var start = Math.max(0, page - 1) * resultsPerPage;
|
var start = Math.max(0, page - 1) * resultsPerPage;
|
||||||
var end = start + resultsPerPage;
|
var stop = start + resultsPerPage;
|
||||||
|
|
||||||
var pageCount = Math.ceil(data.length / resultsPerPage);
|
var pageCount = Math.ceil(data.length / resultsPerPage);
|
||||||
var currentPage = Math.max(1, Math.ceil((start + 1) / resultsPerPage));
|
var currentPage = Math.max(1, Math.ceil((start + 1) / resultsPerPage));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
pagination: pagination.create(currentPage, pageCount),
|
pagination: pagination.create(currentPage, pageCount),
|
||||||
data: data.slice(start, end)
|
data: data.slice(start, stop)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user