From a12907512fe193b036ad2b01656f0ba9dc09bfee Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 6 Nov 2014 18:14:07 -0500 Subject: [PATCH] refactored a bunch of methods so that you can pass in an author argument in querystring to see posts by just that author, #2355 --- src/categories.js | 36 ++++++++++++++++++++--------------- src/controllers/categories.js | 36 ++++++++++++++++++++++++++--------- src/routes/feeds.js | 7 ++++++- src/socket.io/categories.js | 7 ++++++- src/socket.io/topics.js | 2 +- src/topics/create.js | 2 +- tests/categories.js | 31 ++++++++++++++++++++++++++++-- 7 files changed, 91 insertions(+), 30 deletions(-) diff --git a/src/categories.js b/src/categories.js index 1a87c0d3b9..a768358b36 100644 --- a/src/categories.js +++ b/src/categories.js @@ -67,26 +67,32 @@ var db = require('./database'), db.isSortedSetMember('categories:cid', cid, callback); }; - Categories.getCategoryById = function(cid, start, end, uid, callback) { - Categories.getCategories([cid], uid, function(err, categories) { + Categories.getCategoryById = function(data, callback) { + Categories.getCategories([data.cid], data.uid, function(err, categories) { if (err || !Array.isArray(categories) || !categories[0]) { return callback(err || new Error('[[error:invalid-cid]]')); } var category = categories[0]; - if (parseInt(uid, 10)) { - Categories.markAsRead([cid], uid); + if (parseInt(data.uid, 10)) { + Categories.markAsRead([data.cid], data.uid); } async.parallel({ topics: function(next) { - Categories.getCategoryTopics(cid, start, end, uid, next); + Categories.getCategoryTopics({ + cid: data.cid, + start: data.start, + stop: data.end, + uid: data.uid, + targetUid: data.targetUid + }, next); }, pageCount: function(next) { - Categories.getPageCount(cid, uid, next); + Categories.getPageCount(data.cid, data.uid, next); }, isIgnored: function(next) { - Categories.isIgnored([cid], uid, next); + Categories.isIgnored([data.cid], data.uid, next); } }, function(err, results) { if(err) { @@ -99,20 +105,20 @@ var db = require('./database'), category.isIgnored = results.isIgnored[0]; category.topic_row_size = 'col-md-9'; - plugins.fireHook('filter:category.get', category, uid, callback); + plugins.fireHook('filter:category.get', category, data.uid, callback); }); }); }; - Categories.getCategoryTopics = function(cid, start, stop, uid, callback) { + Categories.getCategoryTopics = function(data, callback) { var tids; async.waterfall([ function(next) { - Categories.getTopicIds(cid, start, stop, next); + Categories.getTopicIds(data.targetUid ? 'cid:' + data.cid + ':uid:' + data.targetUid + ':tid' : 'categories:' + data.cid + ':tid', data.start, data.stop, next); }, function(topicIds, next) { tids = topicIds; - topics.getTopicsByTids(tids, uid, next); + topics.getTopicsByTids(tids, data.uid, next); }, function(topics, next) { if (!Array.isArray(topics) || !topics.length) { @@ -125,7 +131,7 @@ var db = require('./database'), var indices = {}, i = 0; for(i=0; i