|
|
|
@ -122,7 +122,7 @@ var async = require('async'),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Favourites.upvote = function(pid, uid, callback) {
|
|
|
|
|
Favourites.upvote = function(pid, uid, commmand, callback) {
|
|
|
|
|
if (parseInt(meta.config['reputation:disabled'], 10) === 1) {
|
|
|
|
|
return callback(new Error('[[error:reputation-system-disabled]]'));
|
|
|
|
|
}
|
|
|
|
@ -131,16 +131,12 @@ var async = require('async'),
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
|
plugins.fireHook('action:post.upvote', {
|
|
|
|
|
pid: pid,
|
|
|
|
|
uid: uid
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
callback(null, votes);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Favourites.downvote = function(pid, uid, callback) {
|
|
|
|
|
Favourites.downvote = function(pid, uid, command, callback) {
|
|
|
|
|
if (parseInt(meta.config['reputation:disabled'], 10) === 1) {
|
|
|
|
|
return callback(new Error('[[error:reputation-system-disabled]]'));
|
|
|
|
|
}
|
|
|
|
@ -162,17 +158,14 @@ var async = require('async'),
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
|
plugins.fireHook('action:post.downvote', {
|
|
|
|
|
pid: pid,
|
|
|
|
|
uid: uid
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
callback(null, votes);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function toggleVote(type, pid, uid, callback) {
|
|
|
|
|
Favourites.unvote(pid, uid, function(err) {
|
|
|
|
|
Favourites.unvote(pid, uid, type, function(err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
@ -181,24 +174,43 @@ var async = require('async'),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Favourites.unvote = function(pid, uid, callback) {
|
|
|
|
|
Favourites.unvote = function(pid, uid, command, callback) {
|
|
|
|
|
Favourites.hasVoted(pid, uid, function(err, voteStatus) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var hook,
|
|
|
|
|
current = voteStatus.upvoted ? 'upvote' : 'downvote';
|
|
|
|
|
|
|
|
|
|
if (voteStatus.upvoted && command === 'downvote' || voteStatus.downvoted && command === 'upvote') {
|
|
|
|
|
hook = command;
|
|
|
|
|
} else if (voteStatus.upvoted || voteStatus.downvoted) {
|
|
|
|
|
hook = 'unvote';
|
|
|
|
|
} else {
|
|
|
|
|
hook = command;
|
|
|
|
|
current = 'unvote';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
plugins.fireHook('action:post.' + hook, {
|
|
|
|
|
pid: pid,
|
|
|
|
|
uid: uid,
|
|
|
|
|
current: current
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!voteStatus || (!voteStatus.upvoted && !voteStatus.downvoted)) {
|
|
|
|
|
return callback();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vote(voteStatus.upvoted ? 'downvote' : 'upvote', true, pid, uid, callback);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Favourites.hasVoted = function(pid, uid, callback) {
|
|
|
|
|
if (!parseInt(uid, 10)) {
|
|
|
|
|
return callback(null, {upvoted: false, downvoted: false});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
db.isMemberOfSets(['pid:' + pid + ':upvote', 'pid:' + pid + ':downvote'], uid, function(err, hasVoted) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
@ -231,11 +243,11 @@ var async = require('async'),
|
|
|
|
|
}, callback);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Favourites.favourite = function (pid, uid, callback) {
|
|
|
|
|
Favourites.favourite = function (pid, uid, command, callback) {
|
|
|
|
|
toggleFavourite('favourite', pid, uid, callback);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Favourites.unfavourite = function(pid, uid, callback) {
|
|
|
|
|
Favourites.unfavourite = function(pid, uid, command, callback) {
|
|
|
|
|
toggleFavourite('unfavourite', pid, uid, callback);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|