added new search hook to allow for enumeration after query

v1.18.x
Julian Lam 8 years ago
parent 5e16933c1f
commit e0862be3c8

@ -41,6 +41,7 @@ function searchInContent(data, callback) {
data.uid = data.uid || 0; data.uid = data.uid || 0;
var matchCount = 0; var matchCount = 0;
var pids; var pids;
var metadata;
async.waterfall([ async.waterfall([
function (next) { function (next) {
async.parallel({ async.parallel({
@ -88,16 +89,23 @@ function searchInContent(data, callback) {
filterAndSort(pids, data, next); filterAndSort(pids, data, next);
}, },
function (pids, next) { function (pids, next) {
matchCount = pids.length; plugin.fireHook('filter:search.inContent', {
pids: pids,
}, next);
},
function (metadata, next) {
matchCount = metadata.pids.length;
if (data.page) { if (data.page) {
var start = Math.max(0, (data.page - 1)) * 10; var start = Math.max(0, (data.page - 1)) * 10;
pids = pids.slice(start, start + 10); metadata.pids = metadata.pids.slice(start, start + 10);
} }
posts.getPostSummaryByPids(pids, data.uid, {}, next); posts.getPostSummaryByPids(metadata.pids, data.uid, {}, next);
}, },
function (posts, next) { function (posts, next) {
next(null, { posts: posts, matchCount: matchCount, pageCount: Math.max(1, Math.ceil(parseInt(matchCount, 10) / 10)) }); // Append metadata to returned payload (without pids)
delete metadata.pids;
next(null, Object.assign({ posts: posts, matchCount: matchCount, pageCount: Math.max(1, Math.ceil(parseInt(matchCount, 10) / 10)) }, metadata));
}, },
], callback); ], callback);
} }

Loading…
Cancel
Save