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.
nodebb/src/meta.js

72 lines
1.7 KiB
JavaScript

"use strict";
var async = require('async');
var winston = require('winston');
var os = require('os');
var nconf = require('nconf');
var pubsub = require('./pubsub');
var utils = require('../public/src/utils');
(function (Meta) {
Meta.reloadRequired = false;
require('./meta/configs')(Meta);
require('./meta/themes')(Meta);
require('./meta/js')(Meta);
require('./meta/css')(Meta);
require('./meta/sounds')(Meta);
require('./meta/settings')(Meta);
require('./meta/logs')(Meta);
require('./meta/errors')(Meta);
require('./meta/tags')(Meta);
require('./meta/dependencies')(Meta);
Meta.templates = require('./meta/templates');
Meta.blacklist = require('./meta/blacklist');
Meta.languages = require('./meta/languages');
/* Assorted */
Meta.userOrGroupExists = function (slug, callback) {
var user = require('./user');
var groups = require('./groups');
slug = utils.slugify(slug);
async.parallel([
async.apply(user.existsBySlug, slug),
async.apply(groups.existsBySlug, slug)
], function (err, results) {
callback(err, results ? results.some(function (result) { return result; }) : false);
});
};
/**
* Reload deprecated as of v1.1.2+, remove in v2.x
*/
Meta.reload = function (callback) {
restart();
callback();
};
Meta.restart = function () {
pubsub.publish('meta:restart', {hostname: os.hostname()});
restart();
};
if (nconf.get('isPrimary') === 'true') {
pubsub.on('meta:restart', function (data) {
if (data.hostname !== os.hostname()) {
restart();
}
});
}
function restart() {
if (process.send) {
process.send({
action: 'restart'
});
} else {
winston.error('[meta.restart] Could not restart, are you sure NodeBB was started with `./nodebb start`?');
}
}
}(exports));