mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	fix: #7102
This commit is contained in:
		| @@ -39,7 +39,11 @@ module.exports = function (db, module) { | |||||||
| 			if (!key.length) { | 			if (!key.length) { | ||||||
| 				return setImmediate(callback, null, []); | 				return setImmediate(callback, null, []); | ||||||
| 			} | 			} | ||||||
| 			key = { $in: key }; | 			if (key.length > 1) { | ||||||
|  | 				key = { $in: key }; | ||||||
|  | 			} else { | ||||||
|  | 				key = key[0]; | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		var query = { _key: key }; | 		var query = { _key: key }; | ||||||
|   | |||||||
| @@ -49,16 +49,7 @@ module.exports = function (Topics) { | |||||||
| 				if (params.term === 'alltime') { | 				if (params.term === 'alltime') { | ||||||
| 					var key = 'topics:' + params.sort; | 					var key = 'topics:' + params.sort; | ||||||
| 					if (params.cids) { | 					if (params.cids) { | ||||||
| 						key = params.cids.map(function (cid) { | 						key = getCidSets(params.cids, params.sort); | ||||||
| 							if (params.sort === 'recent') { |  | ||||||
| 								return 'cid:' + cid + ':tids:lastposttime'; |  | ||||||
| 							} else if (params.sort === 'votes') { |  | ||||||
| 								return 'cid:' + cid + ':tids:votes'; |  | ||||||
| 							} else if (params.sort === 'posts') { |  | ||||||
| 								return 'cid:' + cid + ':tids:posts'; |  | ||||||
| 							} |  | ||||||
| 							return 'cid:' + cid + ':tids'; |  | ||||||
| 						}); |  | ||||||
| 					} | 					} | ||||||
|  |  | ||||||
| 					db.getSortedSetRevRange(key, 0, 199, next); | 					db.getSortedSetRevRange(key, 0, 199, next); | ||||||
| @@ -67,7 +58,7 @@ module.exports = function (Topics) { | |||||||
| 				} | 				} | ||||||
| 			}, | 			}, | ||||||
| 			function (tids, next) { | 			function (tids, next) { | ||||||
| 				if (params.term !== 'alltime') { | 				if (params.term !== 'alltime' || (params.cids && params.sort !== 'recent')) { | ||||||
| 					sortTids(tids, params, next); | 					sortTids(tids, params, next); | ||||||
| 				} else { | 				} else { | ||||||
| 					next(null, tids); | 					next(null, tids); | ||||||
| @@ -79,6 +70,19 @@ module.exports = function (Topics) { | |||||||
| 		], callback); | 		], callback); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function getCidSets(cids, sort) { | ||||||
|  | 		const keys = []; | ||||||
|  | 		cids.forEach(function (cid) { | ||||||
|  | 			if (sort === 'recent') { | ||||||
|  | 				keys.push('cid:' + cid + ':tids:lastposttime'); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			keys.push('cid:' + cid + ':tids' + (sort ? ':' + sort : '')); | ||||||
|  | 			keys.push('cid:' + cid + ':tids:pinned'); | ||||||
|  | 		}); | ||||||
|  | 		return keys; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	function sortTids(tids, params, callback) { | 	function sortTids(tids, params, callback) { | ||||||
| 		async.waterfall([ | 		async.waterfall([ | ||||||
| 			function (next) { | 			function (next) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user