|
|
|
@ -9,12 +9,13 @@ var db = require('../database');
|
|
|
|
|
module.exports = function (Groups) {
|
|
|
|
|
|
|
|
|
|
Groups.create = function (data, callback) {
|
|
|
|
|
var system = data.system === true || parseInt(data.system, 10) === 1 ||
|
|
|
|
|
data.name === 'administrators' || data.name === 'registered-users' || data.name === 'Global Moderators' ||
|
|
|
|
|
Groups.isPrivilegeGroup(data.name);
|
|
|
|
|
var system = isSystemGroup(data);
|
|
|
|
|
var groupData;
|
|
|
|
|
var timestamp = data.timestamp || Date.now();
|
|
|
|
|
|
|
|
|
|
var disableJoinRequests = parseInt(data.disableJoinRequests, 10) === 1 ? 1 : 0;
|
|
|
|
|
if (data.name === 'administrators') {
|
|
|
|
|
disableJoinRequests = 1;
|
|
|
|
|
}
|
|
|
|
|
async.waterfall([
|
|
|
|
|
function (next) {
|
|
|
|
|
validateGroupName(data.name, next);
|
|
|
|
@ -41,7 +42,7 @@ module.exports = function (Groups) {
|
|
|
|
|
hidden: parseInt(data.hidden, 10) === 1 ? 1 : 0,
|
|
|
|
|
system: system ? 1 : 0,
|
|
|
|
|
private: isPrivate,
|
|
|
|
|
disableJoinRequests: parseInt(data.disableJoinRequests, 10) === 1 ? 1 : 0
|
|
|
|
|
disableJoinRequests: disableJoinRequests
|
|
|
|
|
};
|
|
|
|
|
plugins.fireHook('filter:group.create', {group: groupData, data: data}, next);
|
|
|
|
|
},
|
|
|
|
@ -76,6 +77,12 @@ module.exports = function (Groups) {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function isSystemGroup(data) {
|
|
|
|
|
return data.system === true || parseInt(data.system, 10) === 1 ||
|
|
|
|
|
data.name === 'administrators' || data.name === 'registered-users' || data.name === 'Global Moderators' ||
|
|
|
|
|
Groups.isPrivilegeGroup(data.name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function validateGroupName(name, callback) {
|
|
|
|
|
if (!name) {
|
|
|
|
|
return callback(new Error('[[error:group-name-too-short]]'));
|
|
|
|
|