| 
									
										
										
										
											2017-02-18 01:56:23 -07:00
										 |  |  | 'use strict'; | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-31 13:52:26 +03:00
										 |  |  | var async = require('async'); | 
					
						
							| 
									
										
										
										
											2015-07-09 14:01:06 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-31 13:52:26 +03:00
										 |  |  | var db = require('../../database'); | 
					
						
							|  |  |  | var groups = require('../../groups'); | 
					
						
							|  |  |  | var meta = require('../../meta'); | 
					
						
							|  |  |  | var pagination = require('../../pagination'); | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | var groupsController = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | groupsController.list = function (req, res, next) { | 
					
						
							| 
									
										
										
										
											2015-07-09 14:01:06 -04:00
										 |  |  | 	var page = parseInt(req.query.page, 10) || 1; | 
					
						
							|  |  |  | 	var groupsPerPage = 20; | 
					
						
							|  |  |  | 	var pageCount = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	async.waterfall([ | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		function (next) { | 
					
						
							| 
									
										
										
										
											2015-07-09 14:01:06 -04:00
										 |  |  | 			db.getSortedSetRevRange('groups:createtime', 0, -1, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		function (groupNames, next) { | 
					
						
							|  |  |  | 			groupNames = groupNames.filter(function (name) { | 
					
						
							| 
									
										
										
										
											2015-07-09 14:01:06 -04:00
										 |  |  | 				return name.indexOf(':privileges:') === -1 && name !== 'registered-users'; | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 			pageCount = Math.ceil(groupNames.length / groupsPerPage); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			var start = (page - 1) * groupsPerPage; | 
					
						
							| 
									
										
										
										
											2017-02-18 01:52:56 -07:00
										 |  |  | 			var stop = start + groupsPerPage - 1; | 
					
						
							| 
									
										
										
										
											2015-07-09 14:01:06 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			groupNames = groupNames.slice(start, stop + 1); | 
					
						
							|  |  |  | 			groups.getGroupsData(groupNames, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		function (groupData, next) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			next(null, { groups: groupData, pagination: pagination.create(page, pageCount) }); | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	], function (err, data) { | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 		if (err) { | 
					
						
							|  |  |  | 			return next(err); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		res.render('admin/manage/groups', { | 
					
						
							| 
									
										
										
										
											2015-09-17 00:21:50 -04:00
										 |  |  | 			groups: data.groups, | 
					
						
							|  |  |  | 			pagination: data.pagination, | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 			yourid: req.uid, | 
					
						
							| 
									
										
										
										
											2015-09-17 00:21:50 -04:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | groupsController.get = function (req, res, callback) { | 
					
						
							| 
									
										
										
										
											2015-06-23 14:08:04 -04:00
										 |  |  | 	var groupName = req.params.name; | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 	async.waterfall([ | 
					
						
							| 
									
										
										
										
											2016-10-25 21:34:47 +02:00
										 |  |  | 		function (next) { | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 			groups.exists(groupName, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		function (exists, next) { | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 			if (!exists) { | 
					
						
							| 
									
										
										
										
											2015-08-28 14:31:35 -04:00
										 |  |  | 				return callback(); | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			groups.get(groupName, { uid: req.uid, truncateUserList: true, userListCount: 20 }, next); | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	], function (err, group) { | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 		if (err) { | 
					
						
							| 
									
										
										
										
											2015-08-28 14:31:35 -04:00
										 |  |  | 			return callback(err); | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-10-13 19:28:55 -04:00
										 |  |  | 		group.isOwner = true; | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 		res.render('admin/manage/group', { group: group, allowPrivateGroups: parseInt(meta.config.allowPrivateGroups, 10) === 1 }); | 
					
						
							| 
									
										
										
										
											2015-06-22 13:10:18 -04:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = groupsController; |