From 603cddc687d2f9340781402ffe09429247f40cd1 Mon Sep 17 00:00:00 2001
From: barisusakli <barisusakli@gmail.com>
Date: Sat, 30 Aug 2014 15:19:18 -0400
Subject: [PATCH] closes #1934

---
 public/language/en_GB/error.json |  2 ++
 src/controllers/topics.js        |  5 +++--
 src/favourites.js                | 18 +++++++++++++-----
 3 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json
index c9de71d2f4..b0ed8eeb5d 100644
--- a/public/language/en_GB/error.json
+++ b/public/language/en_GB/error.json
@@ -76,6 +76,8 @@
 
 	"cant-chat-with-yourself": "You can't chat with yourself!",
 
+	"reputation-system-disabled": "Reputation system is disabled.",
+	"downvoting-disabled": "Downvoting is disabled",
 	"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
 
 	"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading."
diff --git a/src/controllers/topics.js b/src/controllers/topics.js
index 0c7aef7e38..e482efd412 100644
--- a/src/controllers/topics.js
+++ b/src/controllers/topics.js
@@ -184,8 +184,9 @@ topicsController.get = function(req, res, next) {
 		}
 
 		data.privileges = userPrivileges;
-		data['reputation:disabled'] = meta.config['reputation:disabled'] === '1' ? true : false;
-		data['feeds:disableRSS'] = meta.config['feeds:disableRSS'] === '1' ? true : false;
+		data['reputation:disabled'] = parseInt(meta.config['reputation:disabled'], 10) === 1;
+		data['downvote:disabled'] = parseInt(meta.config['downvote:disabled'], 10) === 1;
+		data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1;
 
 		var topic_url = tid + (req.params.slug ? '/' + req.params.slug : '');
 		var queryString = qs.stringify(req.query);
diff --git a/src/favourites.js b/src/favourites.js
index 64de4fa32f..50957c323f 100644
--- a/src/favourites.js
+++ b/src/favourites.js
@@ -98,20 +98,28 @@ var async = require('async'),
 	}
 
 	Favourites.upvote = function(pid, uid, callback) {
-		if (meta.config['reputation:disabled'] === false) {
-			return callback(false);
+		if (parseInt(meta.config['reputation:disabled'], 10) === 1) {
+			return callback(new Error('[[error:reputation-system-disabled]]'));
 		}
 
 		toggleVote('upvote', pid, uid, callback);
 	};
 
 	Favourites.downvote = function(pid, uid, callback) {
-		if (meta.config['reputation:disabled'] === false) {
-			return callback(false);
+		if (parseInt(meta.config['reputation:disabled'], 10) === 1) {
+			return callback(new Error('[[error:reputation-system-disabled]]'));
+		}
+
+		if (parseInt(meta.config['downvote:disabled'], 10) === 1) {
+			return callback(new Error('[[error:downvoting-disabled]]'));
 		}
 
 		user.getUserField(uid, 'reputation', function(err, reputation) {
-			if (reputation < meta.config['privileges:downvote']) {
+			if (err) {
+				return callback(err);
+			}
+
+			if (reputation < parseInt(meta.config['privileges:downvote'], 10)) {
 				return callback(new Error('[[error:not-enough-reputation-to-downvote]]'));
 			}