|
|
|
@ -1,3 +1,5 @@
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var async = require('async'),
|
|
|
|
|
gravatar = require('gravatar'),
|
|
|
|
|
path = require('path'),
|
|
|
|
@ -53,7 +55,7 @@ var async = require('async'),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if(thumb) {
|
|
|
|
|
topicData['thumb'] = thumb;
|
|
|
|
|
topicData.thumb = thumb;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
db.setObject('topic:' + tid, topicData, function(err) {
|
|
|
|
@ -109,8 +111,8 @@ var async = require('async'),
|
|
|
|
|
categoryTools.exists(cid, next);
|
|
|
|
|
},
|
|
|
|
|
function(categoryExists, next) {
|
|
|
|
|
if(!categoryExists) {
|
|
|
|
|
return next(new Error('category doesn\'t exist'))
|
|
|
|
|
if (!categoryExists) {
|
|
|
|
|
return next(new Error('category doesn\'t exist'));
|
|
|
|
|
}
|
|
|
|
|
categoryTools.privileges(cid, uid, next);
|
|
|
|
|
},
|
|
|
|
@ -364,7 +366,7 @@ var async = require('async'),
|
|
|
|
|
postData[i].index = start + i;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pids = postData.map(function(post) {
|
|
|
|
|
var pids = postData.map(function(post) {
|
|
|
|
|
return post.pid;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -393,7 +395,7 @@ var async = require('async'),
|
|
|
|
|
postData[i].upvoted = results.voteData[i].upvoted;
|
|
|
|
|
postData[i].downvoted = results.voteData[i].downvoted;
|
|
|
|
|
postData[i].votes = postData[i].votes || 0;
|
|
|
|
|
postData[i].display_moderator_tools = (uid != 0) && results.privileges[i].editable;
|
|
|
|
|
postData[i].display_moderator_tools = parseInt(uid, 10) !== 0 && results.privileges[i].editable;
|
|
|
|
|
postData[i].display_move_tools = results.privileges[i].move;
|
|
|
|
|
|
|
|
|
|
if(parseInt(postData[i].deleted, 10) === 1 && !results.privileges[i].view_deleted) {
|
|
|
|
@ -460,7 +462,7 @@ var async = require('async'),
|
|
|
|
|
|
|
|
|
|
db.sortedSetRevRank(set, topicData[topicData.length - 1].tid, function(err, rank) {
|
|
|
|
|
if(err) {
|
|
|
|
|
return calllback(err);
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returnTopics.nextStart = parseInt(rank, 10) + 1;
|
|
|
|
@ -478,7 +480,7 @@ var async = require('async'),
|
|
|
|
|
month: 2592000000
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var since = terms['day'];
|
|
|
|
|
var since = terms.day;
|
|
|
|
|
if(terms[term]) {
|
|
|
|
|
since = terms[term];
|
|
|
|
|
}
|
|
|
|
@ -828,7 +830,7 @@ var async = require('async'),
|
|
|
|
|
if(err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
|
Topics.markCategoryUnreadForAll(tid, callback)
|
|
|
|
|
Topics.markCategoryUnreadForAll(tid, callback);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -891,7 +893,7 @@ var async = require('async'),
|
|
|
|
|
return callback(null, []);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async.map(tids, Topics.getTeaser, callback)
|
|
|
|
|
async.map(tids, Topics.getTeaser, callback);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.getTeaser = function(tid, callback) {
|
|
|
|
@ -926,19 +928,19 @@ var async = require('async'),
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.getTopicField = function(tid, field, callback) {
|
|
|
|
|
db.getObjectField('topic:' + tid, field, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.getTopicFields = function(tid, fields, callback) {
|
|
|
|
|
db.getObjectFields('topic:' + tid, fields, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.setTopicField = function(tid, field, value, callback) {
|
|
|
|
|
db.setObjectField('topic:' + tid, field, value, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.increasePostCount = function(tid, callback) {
|
|
|
|
|
db.incrObjectField('topic:' + tid, 'postcount', function(err, value) {
|
|
|
|
@ -947,7 +949,7 @@ var async = require('async'),
|
|
|
|
|
}
|
|
|
|
|
db.sortedSetAdd('topics:posts', value, tid, callback);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.decreasePostCount = function(tid, callback) {
|
|
|
|
|
db.decrObjectField('topic:' + tid, 'postcount', function(err, value) {
|
|
|
|
@ -956,7 +958,7 @@ var async = require('async'),
|
|
|
|
|
}
|
|
|
|
|
db.sortedSetAdd('topics:posts', value, tid, callback);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.increaseViewCount = function(tid, callback) {
|
|
|
|
|
db.incrObjectField('topic:' + tid, 'viewcount', function(err, value) {
|
|
|
|
@ -965,7 +967,7 @@ var async = require('async'),
|
|
|
|
|
}
|
|
|
|
|
db.sortedSetAdd('topics:views', value, tid, callback);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.isLocked = function(tid, callback) {
|
|
|
|
|
Topics.getTopicField(tid, 'locked', function(err, locked) {
|
|
|
|
@ -974,30 +976,30 @@ var async = require('async'),
|
|
|
|
|
}
|
|
|
|
|
callback(null, parseInt(locked, 10) === 1);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.updateTimestamp = function(tid, timestamp) {
|
|
|
|
|
db.sortedSetAdd('topics:recent', timestamp, tid);
|
|
|
|
|
Topics.setTopicField(tid, 'lastposttime', timestamp);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.onNewPostMade = function(tid, pid, timestamp, callback) {
|
|
|
|
|
Topics.increasePostCount(tid);
|
|
|
|
|
Topics.updateTimestamp(tid, timestamp);
|
|
|
|
|
Topics.addPostToTopic(tid, pid, timestamp, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.addPostToTopic = function(tid, pid, timestamp, callback) {
|
|
|
|
|
db.sortedSetAdd('tid:' + tid + ':posts', timestamp, pid, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.removePostFromTopic = function(tid, pid, callback) {
|
|
|
|
|
db.sortedSetRemove('tid:' + tid + ':posts', pid, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.getPids = function(tid, callback) {
|
|
|
|
|
db.getSortedSetRange('tid:' + tid + ':posts', 0, -1, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.getUids = function(tid, callback) {
|
|
|
|
|
var uids = {};
|
|
|
|
@ -1021,7 +1023,7 @@ var async = require('async'),
|
|
|
|
|
callback(null, Object.keys(uids));
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.updateTopicCount = function(callback) {
|
|
|
|
|
db.sortedSetCard('topics:recent', function(err, count) {
|
|
|
|
|