mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-16 18:56:15 +01:00
committed by
GitHub
parent
f9c882cb1d
commit
49ba5af5fa
@@ -4,6 +4,7 @@
|
||||
var async = require('async');
|
||||
var validator = require('validator');
|
||||
var winston = require('winston');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('./database');
|
||||
var batch = require('./batch');
|
||||
@@ -12,6 +13,39 @@ var utils = require('./utils');
|
||||
|
||||
var events = module.exports;
|
||||
|
||||
events.types = [
|
||||
'plugin-activate',
|
||||
'plugin-deactivate',
|
||||
'restart',
|
||||
'build',
|
||||
'config-change',
|
||||
'settings-change',
|
||||
'category-purge',
|
||||
'privilege-change',
|
||||
'post-delete',
|
||||
'post-restore',
|
||||
'post-purge',
|
||||
'topic-delete',
|
||||
'topic-restore',
|
||||
'topic-purge',
|
||||
'topic-rename',
|
||||
'password-reset',
|
||||
'user-ban',
|
||||
'user-unban',
|
||||
'user-delete',
|
||||
'password-change',
|
||||
'email-change',
|
||||
'username-change',
|
||||
'registration-approved',
|
||||
'registration-rejected',
|
||||
'accept-membership',
|
||||
'reject-membership',
|
||||
'theme-set',
|
||||
'export:uploads',
|
||||
'account-locked',
|
||||
'getUsersCSV',
|
||||
];
|
||||
|
||||
/**
|
||||
* Useful options in data: type, uid, ip, targetUid
|
||||
* Everything else gets stringified and shown as pretty JSON string
|
||||
@@ -31,6 +65,9 @@ events.log = function (data, callback) {
|
||||
function (next) {
|
||||
db.sortedSetAdd('events:time', data.timestamp, eid, next);
|
||||
},
|
||||
function (next) {
|
||||
db.sortedSetAdd('events:time:' + data.type, data.timestamp, eid, next);
|
||||
},
|
||||
function (next) {
|
||||
db.setObject('event:' + eid, data, next);
|
||||
},
|
||||
@@ -41,10 +78,10 @@ events.log = function (data, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
events.getEvents = function (start, stop, callback) {
|
||||
events.getEvents = function (filter, start, stop, callback) {
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
db.getSortedSetRevRange('events:time', start, stop, next);
|
||||
db.getSortedSetRevRange('events:time' + (filter ? ':' + filter : ''), start, stop, next);
|
||||
},
|
||||
function (eids, next) {
|
||||
var keys = eids.map(function (eid) {
|
||||
@@ -123,15 +160,24 @@ function addUserData(eventsData, field, objectName, callback) {
|
||||
|
||||
events.deleteEvents = function (eids, callback) {
|
||||
callback = callback || function () {};
|
||||
async.parallel([
|
||||
var keys;
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
var keys = eids.map(function (eid) {
|
||||
keys = eids.map(function (eid) {
|
||||
return 'event:' + eid;
|
||||
});
|
||||
db.deleteAll(keys, next);
|
||||
db.getObjectsFields(keys, ['type'], next);
|
||||
},
|
||||
function (next) {
|
||||
db.sortedSetRemove('events:time', eids, next);
|
||||
function (eventData, next) {
|
||||
var sets = _.uniq(['events:time'].concat(eventData.map(e => 'events:time:' + e.type)));
|
||||
async.parallel([
|
||||
function (next) {
|
||||
db.deleteAll(keys, next);
|
||||
},
|
||||
function (next) {
|
||||
db.sortedSetRemove(sets, eids, next);
|
||||
},
|
||||
], next);
|
||||
},
|
||||
], callback);
|
||||
};
|
||||
@@ -146,7 +192,7 @@ events.deleteAll = function (callback) {
|
||||
|
||||
events.output = function () {
|
||||
console.log('\nDisplaying last ten administrative events...'.bold);
|
||||
events.getEvents(0, 9, function (err, events) {
|
||||
events.getEvents('', 0, 9, function (err, events) {
|
||||
if (err) {
|
||||
winston.error('Error fetching events', err);
|
||||
throw err;
|
||||
|
||||
Reference in New Issue
Block a user