all files / src/controllers/admin/ groups.js

16.13% Statements 5/31
0% Branches 0/10
0% Functions 0/10
16.13% Lines 5/31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74                                                                                                                                         
"use strict";
 
var async = require('async'),
 
	db = require('../../database'),
	groups = require('../../groups'),
	meta = require('../../meta'),
	pagination = require('../../pagination'),
	helpers = require('../helpers');
 
 
var groupsController = {};
 
 
groupsController.list = function(req, res, next) {
	var page = parseInt(req.query.page, 10) || 1;
	var groupsPerPage = 20;
	var pageCount = 0;
 
	async.waterfall([
		function(next) {
			db.getSortedSetRevRange('groups:createtime', 0, -1, next);
		},
		function(groupNames, next) {
			groupNames = groupNames.filter(function(name) {
				return name.indexOf(':privileges:') === -1 && name !== 'registered-users';
			});
			pageCount = Math.ceil(groupNames.length / groupsPerPage);
 
			var start = (page - 1) * groupsPerPage;
			var stop =  start + groupsPerPage - 1;
 
			groupNames = groupNames.slice(start, stop + 1);
			groups.getGroupsData(groupNames, next);
		},
		function(groupData, next) {
			next(null, {groups: groupData, pagination: pagination.create(page, pageCount)});
		}
	], function(err, data) {
		if (err) {
			return next(err);
		}
 
		res.render('admin/manage/groups', {
			groups: data.groups,
			pagination: data.pagination,
			yourid: req.user.uid
		});
	});
};
 
groupsController.get = function(req, res, callback) {
	var groupName = req.params.name;
	async.waterfall([
		function(next){
			groups.exists(groupName, next);
		},
		function(exists, next) {
			if (!exists) {
				return callback();
			}
			groups.get(groupName, {uid: req.uid, truncateUserList: true, userListCount: 20}, next);
		}
	], function(err, group) {
		if (err) {
			return callback(err);
		}
		group.isOwner = true;
		res.render('admin/manage/group', {group: group, allowPrivateGroups: parseInt(meta.config.allowPrivateGroups, 10) === 1});
	});
};
 
module.exports = groupsController;