| 
									
										
										
										
											2016-07-07 14:33:16 -04:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-11 08:41:34 +03:00
										 |  |  | var async = require('async'); | 
					
						
							| 
									
										
										
										
											2016-07-07 14:33:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | var db = require('../../database'); | 
					
						
							| 
									
										
										
										
											2016-08-11 08:41:34 +03:00
										 |  |  | var user = require('../../user'); | 
					
						
							|  |  |  | var helpers = require('../helpers'); | 
					
						
							|  |  |  | var accountHelpers = require('./helpers'); | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | var pagination = require('../../pagination'); | 
					
						
							| 
									
										
										
										
											2016-07-07 14:33:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | var infoController = module.exports; | 
					
						
							| 
									
										
										
										
											2016-07-07 14:33:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | infoController.get = function (req, res, callback) { | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 	var userData; | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | 	var page = Math.max(1, req.query.page || 1); | 
					
						
							|  |  |  | 	var itemsPerPage = 10; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 	async.waterfall([ | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		function (next) { | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 			accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		function (_userData, next) { | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 			userData = _userData; | 
					
						
							|  |  |  | 			if (!userData) { | 
					
						
							|  |  |  | 				return callback(); | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			var start = (page - 1) * itemsPerPage; | 
					
						
							|  |  |  | 			var stop = start + itemsPerPage - 1; | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 			async.parallel({ | 
					
						
							|  |  |  | 				history: async.apply(user.getModerationHistory, userData.uid), | 
					
						
							| 
									
										
										
										
											2016-09-15 22:20:52 -04:00
										 |  |  | 				sessions: async.apply(user.auth.getSessions, userData.uid, req.sessionID), | 
					
						
							| 
									
										
										
										
											2016-09-30 18:42:19 +03:00
										 |  |  | 				usernames: async.apply(user.getHistory, 'user:' + userData.uid + ':usernames'), | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 				emails: async.apply(user.getHistory, 'user:' + userData.uid + ':emails'), | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | 				notes: function (next) { | 
					
						
							|  |  |  | 					if (!userData.isAdminOrGlobalModeratorOrModerator) { | 
					
						
							|  |  |  | 						return setImmediate(next); | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					async.parallel({ | 
					
						
							|  |  |  | 						notes: function (next) { | 
					
						
							|  |  |  | 							user.getModerationNotes(userData.uid, start, stop, next); | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						count: function (next) { | 
					
						
							|  |  |  | 							db.sortedSetCard('uid:' + userData.uid + ':moderation:notes', next); | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 					}, next); | 
					
						
							|  |  |  | 				}, | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 			}, next); | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	], function (err, data) { | 
					
						
							| 
									
										
										
										
											2016-08-11 08:41:34 +03:00
										 |  |  | 		if (err) { | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 			return callback(err); | 
					
						
							| 
									
										
										
										
											2016-08-11 08:41:34 +03:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 		userData.history = data.history; | 
					
						
							|  |  |  | 		userData.sessions = data.sessions; | 
					
						
							| 
									
										
										
										
											2016-09-15 22:20:52 -04:00
										 |  |  | 		userData.usernames = data.usernames; | 
					
						
							|  |  |  | 		userData.emails = data.emails; | 
					
						
							| 
									
										
										
										
											2017-03-23 10:58:17 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		if (userData.isAdminOrGlobalModeratorOrModerator) { | 
					
						
							|  |  |  | 			userData.moderationNotes = data.notes.notes; | 
					
						
							|  |  |  | 			var pageCount = Math.ceil(data.notes.count / itemsPerPage); | 
					
						
							|  |  |  | 			userData.pagination = pagination.create(page, pageCount, req.query); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 		userData.title = '[[pages:account/info]]'; | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 		userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:account_info]]' }]); | 
					
						
							| 
									
										
										
										
											2016-07-07 14:33:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-14 14:33:39 +03:00
										 |  |  | 		res.render('account/info', userData); | 
					
						
							| 
									
										
										
										
											2016-07-07 14:33:16 -04:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; |