forked from NodeBB/NodeBB
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmeta.js
105 lines (92 loc) · 2.48 KB
/
meta.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"use strict";
var async = require('async'),
winston = require('winston'),
templates = require('templates.js'),
os = require('os'),
nconf = require('nconf'),
user = require('./user'),
groups = require('./groups'),
emitter = require('./emitter'),
pubsub = require('./pubsub'),
auth = require('./routes/authentication'),
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/tags')(Meta);
require('./meta/dependencies')(Meta);
Meta.templates = require('./meta/templates');
/* Assorted */
Meta.userOrGroupExists = function(slug, callback) {
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);
});
};
Meta.reload = function(callback) {
pubsub.publish('meta:reload', {hostname: os.hostname()});
reload(callback);
};
pubsub.on('meta:reload', function(data) {
if (data.hostname !== os.hostname()) {
reload();
}
});
function reload(callback) {
callback = callback || function() {};
var plugins = require('./plugins');
async.series([
async.apply(plugins.clearRequireCache),
async.apply(plugins.reload),
async.apply(plugins.reloadRoutes),
function(next) {
async.parallel([
async.apply(Meta.js.minify, false),
async.apply(Meta.css.minify),
async.apply(Meta.sounds.init),
async.apply(Meta.templates.compile),
async.apply(auth.reloadRoutes),
function(next) {
Meta.config['cache-buster'] = utils.generateUUID();
templates.flush();
next();
}
], next);
}
], function(err) {
if (!err) {
emitter.emit('nodebb:ready');
}
Meta.reloadRequired = false;
callback(err);
});
}
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));