diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index 66f5852a9a..1690a29959 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -45,7 +45,18 @@ middleware.updateLastOnlineTime = function(req, res, next) { user.updateLastOnlineTime(req.user.uid); } - db.sortedSetAdd('ip:recent', Date.now(), req.ip || 'Unknown'); + db.sortedSetScore('ip:recent', req.ip, function(err, score) { + if (err) { + return; + } + var today = new Date(); + today.setHours(today.getHours(), 0, 0, 0); + + if (!score || score < today.getTime()) { + db.sortedSetIncrBy('analytics:uniquevisitors', 1, today.getTime()); + db.sortedSetAdd('ip:recent', Date.now(), req.ip || 'Unknown'); + } + }); next(); }; diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index e0af07fdb5..47d38378f3 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -188,7 +188,7 @@ SocketAdmin.analytics.get = function(socket, data, callback) { if (data.graph === 'traffic') { async.parallel({ uniqueVisitors: function(next) { - getHourlyStatsForSet('ip:recent', data.amount, next); + getHourlyStatsForSet('analytics:uniquevisitors', data.amount, next); }, pageviews: function(next) { getHourlyStatsForSet('analytics:pageviews', data.amount, next);