To restrict replies by the last reply time, you need to do two things.
On the server side, hook into filter:topic.reply, it is passed data with the tid. Look up the last post and owner using the tid. Then, if the last post was made by the owner, and the timestamp of the last post is less then a day from now, return an error.
On the client, you'll want to disable the reply button if the last post fulfills the same requirements above. You can use ajaxify.data to get the information you need.
Server filter:topic.reply hook example:
plugin.topicReply = function (data, next) {
var tid = data.tid;
Topics.getLatestUndeletedReply(tid, function(err, pid) {
if (err) return next(null, data);
Posts.getPostFields(pid, ['timestamp', 'uid'], function (err, lastPost) {
if (err) return next(null, data);
Topics.isOwner(tid, lastPost.uid, function (err, isOwner) {
if (err) return next(null, data);
if (isOwner && lastPost.timestamp + 86400000 > Date.now()) {
return next(new Error('Not enough time passed.'));
}else{
next(null, data);
}
});
});
});
});
client.js example
$(window).on('action:ajaxify.end', function(){
// If the user is at a page with a reply button.
if ($('[component="topic/reply"]').length && ajaxify.data.posts) {
var first = ajaxify.data.posts[0];
var last = ajaxify.data.posts[ajaxify.data.posts.length-1];
// If the last poster is the owner,
// and they posted less than a day ago,
// disable the reply button.
if (last.uid === first.uid && last.timestamp + 86400000 > Date.now()) $('[component="topic/reply"]').addClass('disabled');
}
});
It's late for me, I might have messed up somewhere.
Also, you can reduce the server code a lot by using async.waterfall and async.apply