2017-07-03 18:00:24 +08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Module dependencies
|
|
|
|
|
*/
|
|
|
|
|
var path = require('path'),
|
|
|
|
|
config = require(path.resolve('./config/config')),
|
|
|
|
|
mongoose = require('mongoose'),
|
|
|
|
|
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
|
|
|
|
|
User = mongoose.model('User'),
|
|
|
|
|
Forum = mongoose.model('Forum'),
|
|
|
|
|
Topic = mongoose.model('Topic'),
|
|
|
|
|
async = require('async');
|
|
|
|
|
|
2017-12-16 22:25:02 +08:00
|
|
|
var serverMessage = require(path.resolve('./config/lib/server-message'));
|
|
|
|
|
var serverNoticeConfig = config.meanTorrentConfig.serverNotice;
|
|
|
|
|
|
2017-07-03 18:00:24 +08:00
|
|
|
/**
|
|
|
|
|
* create a forum
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
|
|
|
|
*/
|
|
|
|
|
exports.create = function (req, res) {
|
|
|
|
|
var forum = new Forum(req.body);
|
|
|
|
|
|
|
|
|
|
forum.save(function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: errorHandler.getErrorMessage(err)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
res.json(forum);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* list forums
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
|
|
|
|
*/
|
|
|
|
|
exports.list = function (req, res) {
|
|
|
|
|
Forum.find()
|
|
|
|
|
.sort('order -createdat')
|
2017-07-08 01:57:31 +08:00
|
|
|
.populate('lastTopic')
|
2017-07-03 18:00:24 +08:00
|
|
|
.populate('moderators', 'username displayName profileImageURL uploaded downloaded')
|
|
|
|
|
.exec(function (err, forums) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: errorHandler.getErrorMessage(err)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
res.json(forums);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Update an forum
|
|
|
|
|
*/
|
|
|
|
|
exports.update = function (req, res) {
|
|
|
|
|
var forum = req.forum;
|
|
|
|
|
|
|
|
|
|
forum.name = req.body.name;
|
|
|
|
|
forum.desc = req.body.desc;
|
|
|
|
|
forum.order = req.body.order;
|
|
|
|
|
forum.readOnly = req.body.readOnly;
|
2017-11-16 11:00:32 +08:00
|
|
|
forum.operOnly = req.body.operOnly;
|
|
|
|
|
forum.vipOnly = req.body.vipOnly;
|
2017-07-04 13:04:38 +08:00
|
|
|
forum.category = req.body.category;
|
2017-07-03 18:00:24 +08:00
|
|
|
|
|
|
|
|
forum.save(function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: errorHandler.getErrorMessage(err)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
res.json(forum);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2017-07-04 16:07:30 +08:00
|
|
|
/**
|
|
|
|
|
* addModerator
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
|
|
|
|
*/
|
|
|
|
|
exports.addModerator = function (req, res) {
|
|
|
|
|
var forum = req.forum;
|
|
|
|
|
var mu = req.nameuser;
|
|
|
|
|
|
|
|
|
|
var om = [];
|
|
|
|
|
forum.moderators.forEach(function (m) {
|
|
|
|
|
om.push(m._id.toString());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (om.indexOf(mu._id.toString()) >= 0) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: 'username "' + mu.username + '" already exist!'
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
forum.moderators.push(mu);
|
|
|
|
|
forum.save(function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: errorHandler.getErrorMessage(err)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
res.json(forum);
|
2017-12-16 22:25:02 +08:00
|
|
|
|
|
|
|
|
//add server message
|
|
|
|
|
if (serverNoticeConfig.action.forumBecomeModerator.enable) {
|
|
|
|
|
serverMessage.addMessage(mu._id, serverNoticeConfig.action.forumBecomeModerator.title, serverNoticeConfig.action.forumBecomeModerator.content, {
|
|
|
|
|
forum_name: forum.name,
|
|
|
|
|
forum_id: forum._id
|
|
|
|
|
});
|
|
|
|
|
}
|
2017-07-04 16:07:30 +08:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2017-07-08 20:22:38 +08:00
|
|
|
/**
|
|
|
|
|
* removeModerator
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
|
|
|
|
* @returns {*}
|
|
|
|
|
*/
|
2017-07-04 16:07:30 +08:00
|
|
|
exports.removeModerator = function (req, res) {
|
|
|
|
|
var forum = req.forum;
|
|
|
|
|
var mu = req.nameuser;
|
|
|
|
|
|
|
|
|
|
var om = [];
|
|
|
|
|
forum.moderators.forEach(function (m) {
|
|
|
|
|
om.push(m._id.toString());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (om.indexOf(mu._id.toString()) < 0) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: 'username "' + mu.username + '" not exist!'
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
forum.moderators.splice(om.indexOf(mu._id.toString()), 1);
|
|
|
|
|
forum.save(function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: errorHandler.getErrorMessage(err)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
res.json(forum);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2017-07-03 18:00:24 +08:00
|
|
|
/**
|
|
|
|
|
* delete forum
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
|
|
|
|
*/
|
|
|
|
|
exports.delete = function (req, res) {
|
|
|
|
|
var forum = req.forum;
|
|
|
|
|
forum.remove(function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return res.status(422).send({
|
|
|
|
|
message: errorHandler.getErrorMessage(err)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
res.json(forum);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Invitation middleware
|
|
|
|
|
*/
|
|
|
|
|
exports.forumByID = function (req, res, next, id) {
|
|
|
|
|
if (!mongoose.Types.ObjectId.isValid(id)) {
|
|
|
|
|
return res.status(400).send({
|
2018-01-12 16:53:24 +08:00
|
|
|
message: 'SERVER.INVALID_OBJECTID'
|
2017-07-03 18:00:24 +08:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Forum.findById(id)
|
2017-07-08 01:57:31 +08:00
|
|
|
.populate('lastTopic')
|
2017-07-03 18:00:24 +08:00
|
|
|
.populate('moderators', 'username displayName profileImageURL uploaded downloaded')
|
|
|
|
|
.exec(function (err, forum) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return next(err);
|
|
|
|
|
} else if (!forum) {
|
2018-01-21 16:27:17 +08:00
|
|
|
return res.status(404).send();
|
2017-07-03 18:00:24 +08:00
|
|
|
}
|
|
|
|
|
req.forum = forum;
|
|
|
|
|
next();
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2017-07-04 16:07:30 +08:00
|
|
|
/**
|
|
|
|
|
* Invitation middleware
|
|
|
|
|
*/
|
|
|
|
|
exports.userByUsername = function (req, res, next, uname) {
|
|
|
|
|
User.findOne({
|
|
|
|
|
username: uname
|
2017-10-21 18:12:41 +08:00
|
|
|
}, '-salt -password -providerData')
|
|
|
|
|
//.select('username displayName profileImageURL uploaded downloaded makers')
|
|
|
|
|
//.populate('makers')
|
2017-07-04 16:07:30 +08:00
|
|
|
.exec(function (err, user) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return next(err);
|
|
|
|
|
} else if (!user) {
|
2017-10-21 13:07:37 +08:00
|
|
|
return res.status(422).send({
|
2017-07-04 16:07:30 +08:00
|
|
|
message: 'No user with that username has been found'
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
req.nameuser = user;
|
|
|
|
|
next();
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|