2015-06-22 13:10:18 -04:00
|
|
|
"use strict";
|
|
|
|
|
|
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');
|
|
|
|
|
var helpers = require('../helpers');
|
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) {
|
2015-07-09 14:01:06 -04: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
|
|
|
}
|
2015-10-13 19:28:55 -04: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;
|
2016-03-10 21:24:15 +00: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;
|