You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.5 KiB
JavaScript

var meta = require('../meta'),
user = require('../user'),
logger = require('../logger'),
plugins = require('../plugins'),
nconf = require('nconf'),
gravatar = require('gravatar'),
SocketMeta = {};
SocketMeta.buildTitle = function(text, callback) {
meta.title.build(text, function(err, title) {
callback(title);
});
};
SocketMeta.updateHeader = function(data, callback, sessionData) {
if (sessionData.uid) {
user.getUserFields(sessionData.uid, data.fields, function(err, fields) {
if (!err && fields) {
fields.uid = sessionData.uid;
callback(fields);
}
});
} else {
callback({
uid: 0,
username: "Anonymous User",
email: '',
picture: gravatar.url('', {
s: '24'
}, nconf.get('https')),
config: {
allowGuestSearching: meta.config.allowGuestSearching
}
});
}
};
SocketMeta.getUsageStats = function(callback) {
module.parent.exports.emitTopicPostStats(callback);
};
/* Rooms */
SocketMeta.rooms = {};
SocketMeta.rooms.enter = function(data, sessionData) {
if (data.leave !== null) {
sessionData.socket.leave(data.leave);
}
sessionData.socket.join(data.enter);
sessionData.rooms[data.enter] = sessionData.rooms[data.enter] || {};
if (sessionData.uid) {
sessionData.rooms[data.enter][sessionData.socket.id] = sessionData.uid;
if (data.leave && sessionData.rooms[data.leave] && sessionData.rooms[data.leave][sessionData.socket.id] && data.enter !== data.leave) {
delete sessionData.rooms[data.leave][sessionData.socket.id];
}
}
if (data.leave) {
module.parent.exports.updateRoomBrowsingText(data.leave);
}
module.parent.exports.updateRoomBrowsingText(data.enter);
if (data.enter != 'admin') {
sessionData.server.sockets.in('admin').emit('api:get_all_rooms', sessionData.server.sockets.manager.rooms);
}
};
SocketMeta.rooms.getAll = function(callback, sessionData) {
callback(sessionData.server.sockets.manager.rooms);
};
/* Config */
SocketMeta.config = {};
SocketMeta.config.get = function(callback, sessionData) {
meta.configs.list(function(err, config) {
if (!err) {
callback(config);
}
});
};
SocketMeta.config.set = function(data, callback, sessionData) {
meta.configs.set(data.key, data.value, function(err) {
if (!err) {
callback({
status: 'ok'
});
plugins.fireHook('action:config.set', {
key: data.key,
value: data.value
});
}
logger.monitorConfig({io: sessionData.server}, data);
});
};
SocketMeta.config.remove = function(key) {
meta.configs.remove(key);
};
/* Exports */
module.exports = SocketMeta;