From 4be20799ecf78ed51b81c00573670c3de81c0071 Mon Sep 17 00:00:00 2001
From: barisusakli <barisusakli@gmail.com>
Date: Tue, 20 Sep 2016 14:41:53 +0300
Subject: [PATCH] fix getRecentChats

---
 public/src/client/chats/recent.js |  1 +
 src/controllers/accounts/chats.js |  3 +++
 src/socket.io/modules.js          | 14 +++++++++++---
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/public/src/client/chats/recent.js b/public/src/client/chats/recent.js
index 6905841269..9afc7ab76a 100644
--- a/public/src/client/chats/recent.js
+++ b/public/src/client/chats/recent.js
@@ -23,6 +23,7 @@ define('forum/chats/recent', function() {
 		}
 		recentChats.attr('loading', 1);
 		socket.emit('modules.chats.getRecentChats', {
+			uid: ajaxify.data.uid,
 			after: recentChats.attr('data-nextstart')
 		}, function(err, data) {
 			if (err) {
diff --git a/src/controllers/accounts/chats.js b/src/controllers/accounts/chats.js
index b638cb0006..c6ff2886c1 100644
--- a/src/controllers/accounts/chats.js
+++ b/src/controllers/accounts/chats.js
@@ -16,6 +16,7 @@ chatsController.get = function(req, res, callback) {
 	}
 	var uid;
 	var recentChats;
+
 	async.waterfall([
 		function(next) {
 			user.getUidByUserslug(req.params.userslug, next);
@@ -32,6 +33,7 @@ chatsController.get = function(req, res, callback) {
 			if (!req.params.roomid) {
 				return res.render('chats', {
 					rooms: recentChats.rooms,
+					uid: uid,
 					userslug: req.params.userslug,
 					nextStart: recentChats.nextStart,
 					allowed: true,
@@ -69,6 +71,7 @@ chatsController.get = function(req, res, callback) {
 		});
 
 		room.rooms = recentChats.rooms;
+		room.uid = uid;
 		room.userslug = req.params.userslug;
 		room.nextStart = recentChats.nextStart;
 		room.title = room.roomName;
diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js
index b77d22252d..900b4de0e6 100644
--- a/src/socket.io/modules.js
+++ b/src/socket.io/modules.js
@@ -295,10 +295,18 @@ SocketModules.chats.getRecentChats = function(socket, data, callback) {
 	if (!data || !utils.isNumber(data.after)) {
 		return callback(new Error('[[error:invalid-data]]'));
 	}
-	var start = parseInt(data.after, 10),
-		stop = start + 9;
+	var start = parseInt(data.after, 10);
+	var stop = start + 9;
+	if (socket.uid === parseInt(data.uid, 10)) {
+		return Messaging.getRecentChats(socket.uid, start, stop, callback);
+	}
 
-	Messaging.getRecentChats(socket.uid, start, stop, callback);
+	user.isAdminOrGlobalMod(socket.uid, function(err, isAdminOrGlobalMod) {
+		if (err || !isAdminOrGlobalMod) {
+			return callback(err || new Error('[[error:no-privileges]]'));
+		}
+		Messaging.getRecentChats(data.uid, start, stop, callback);
+	});
 };
 
 SocketModules.chats.hasPrivateChat = function(socket, uid, callback) {