diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index d85640e9fa..1b97dad0bb 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -123,8 +123,13 @@ SocketGroups.delete = function(socket, data, callback) { return callback(new Error('[[error:invalid-data]]')); } - groups.ownership.isOwner(socket.uid, data.groupName, function(err, isOwner) { - if (!isOwner) { + var tasks = { + isOwner: async.apply(groups.ownership.isOwner, socket.uid, data.groupName), + isAdmin: async.apply(user.isAdministrator, socket.uid) + }; + + async.parallel(tasks, function(err, checks) { + if (!checks.isOwner && !checks.isAdmin) { return callback(new Error('[[error:no-privileges]]')); } diff --git a/src/socket.io/index.js b/src/socket.io/index.js index 171a80d38f..0e04b9ab1d 100644 --- a/src/socket.io/index.js +++ b/src/socket.io/index.js @@ -314,13 +314,15 @@ Sockets.getUsersInRoom = function (uid, roomName, callback) { }); }; -Sockets.getUidsInRoom = function(roomName) { +Sockets.getUidsInRoom = function(roomName, callback) { + callback = callback || function() {}; // TODO : doesnt work in cluster var uids = []; var socketids = Object.keys(io.sockets.adapter.rooms[roomName] || {}); if (!Array.isArray(socketids) || !socketids.length) { + callback(null, []); return []; } @@ -334,7 +336,7 @@ Sockets.getUidsInRoom = function(roomName) { }); } } - + callback(null, uids); return uids; }; diff --git a/src/views/admin/manage/flags.tpl b/src/views/admin/manage/flags.tpl index 4697c951fe..929fd6674d 100644 --- a/src/views/admin/manage/flags.tpl +++ b/src/views/admin/manage/flags.tpl @@ -25,8 +25,8 @@ - Posted in {posts.category.name}, • - Read More + Posted in {posts.category.name}, • + Read More