| 
									
										
										
										
											2014-03-02 23:07:16 -05:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 15:58:29 -05:00
										 |  |  | var usersController = {}; | 
					
						
							| 
									
										
										
										
											2014-02-28 14:04:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 15:33:25 -05:00
										 |  |  | var async = require('async'), | 
					
						
							|  |  |  | 	user = require('./../user'), | 
					
						
							|  |  |  | 	db = require('./../database'); | 
					
						
							| 
									
										
										
										
											2014-02-28 14:04:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | usersController.getOnlineUsers = function(req, res, next) { | 
					
						
							|  |  |  | 	var	websockets = require('../socket.io'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	user.getUsers('users:online', 0, 49, function (err, data) { | 
					
						
							|  |  |  | 		if(err) { | 
					
						
							|  |  |  | 			return next(err); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-03-02 23:07:16 -05:00
										 |  |  | 		var onlineUsers = [], | 
					
						
							|  |  |  | 			uid = 0; | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		if (req.user) { | 
					
						
							|  |  |  | 			uid = req.user.uid; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		user.isAdministrator(uid, function (err, isAdministrator) { | 
					
						
							|  |  |  | 			if(err) { | 
					
						
							|  |  |  | 				return next(err); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			if (!isAdministrator) { | 
					
						
							|  |  |  | 				data = data.filter(function(item) { | 
					
						
							|  |  |  | 					return item.status !== 'offline'; | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			function iterator(userData, next) { | 
					
						
							|  |  |  | 				var online = websockets.isUserOnline(userData.uid); | 
					
						
							|  |  |  | 				if(!online) { | 
					
						
							|  |  |  | 					db.sortedSetRemove('users:online', userData.uid); | 
					
						
							|  |  |  | 					return next(null); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				onlineUsers.push(userData); | 
					
						
							|  |  |  | 				next(null); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			var anonymousUserCount = websockets.getOnlineAnonCount(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			async.each(data, iterator, function(err) { | 
					
						
							|  |  |  | 				var userData = { | 
					
						
							|  |  |  | 					search_display: 'none', | 
					
						
							|  |  |  | 					loadmore_display: 'block', | 
					
						
							|  |  |  | 					users: onlineUsers, | 
					
						
							|  |  |  | 					anonymousUserCount: anonymousUserCount, | 
					
						
							|  |  |  | 					show_anon: anonymousUserCount?'':'hide' | 
					
						
							|  |  |  | 				}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				if (res.locals.isAPI) { | 
					
						
							|  |  |  | 					res.json(userData); | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					res.render('users', userData); | 
					
						
							| 
									
										
										
										
											2014-03-02 23:07:16 -05:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | usersController.getUsersSortedByPosts = function(req, res, next) { | 
					
						
							|  |  |  | 	user.getUsers('users:postcount', 0, 49, function (err, data) { | 
					
						
							|  |  |  | 		var userData = { | 
					
						
							|  |  |  | 			search_display: 'none', | 
					
						
							|  |  |  | 			loadmore_display: 'block', | 
					
						
							|  |  |  | 			users: data, | 
					
						
							|  |  |  | 			show_anon: 'hide' | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (res.locals.isAPI) { | 
					
						
							|  |  |  | 			res.json(userData); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			res.render('users', userData); | 
					
						
							| 
									
										
										
										
											2014-03-02 23:07:16 -05:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | usersController.getUsersSortedByReputation = function(req, res, next) { | 
					
						
							|  |  |  | 	user.getUsers('users:reputation', 0, 49, function (err, data) { | 
					
						
							|  |  |  | 		var userData = { | 
					
						
							|  |  |  | 			search_display: 'none', | 
					
						
							|  |  |  | 			loadmore_display: 'block', | 
					
						
							|  |  |  | 			users: data, | 
					
						
							|  |  |  | 			show_anon: 'hide' | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (res.locals.isAPI) { | 
					
						
							|  |  |  | 			res.json(userData); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			res.render('users', userData); | 
					
						
							| 
									
										
										
										
											2014-03-02 23:07:16 -05:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | usersController.getUsersSortedByJoinDate = function(req, res, next) { | 
					
						
							|  |  |  | 	user.getUsers('users:joindate', 0, 49, function (err, data) { | 
					
						
							|  |  |  | 		var userData = { | 
					
						
							|  |  |  | 			search_display: 'none', | 
					
						
							|  |  |  | 			loadmore_display: 'block', | 
					
						
							|  |  |  | 			users: data, | 
					
						
							|  |  |  | 			show_anon: 'hide' | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (res.locals.isAPI) { | 
					
						
							|  |  |  | 			res.json(userData); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			res.render('users', userData); | 
					
						
							| 
									
										
										
										
											2014-03-02 23:07:16 -05:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | usersController.getUsersForSearch = function(req, res, next) { | 
					
						
							|  |  |  | 	var data = { | 
					
						
							|  |  |  | 		search_display: 'block', | 
					
						
							|  |  |  | 		loadmore_display: 'none', | 
					
						
							|  |  |  | 		users: [], | 
					
						
							|  |  |  | 		show_anon: 'hide' | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (res.locals.isAPI) { | 
					
						
							|  |  |  | 		res.json(data); | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		res.render('users', data); | 
					
						
							| 
									
										
										
										
											2014-02-28 15:58:29 -05:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2014-02-28 14:19:43 -05:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 14:04:21 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | module.exports = usersController; |