Added Double Post Stopper mod

This commit is contained in:
Travis Burtrum 2014-02-03 23:24:07 -05:00
parent 5cb937a2fd
commit 4dccad1423
7 changed files with 72 additions and 1 deletions

Binary file not shown.

View File

@ -1 +1 @@
1391537333
1391538208

View File

@ -1512,6 +1512,8 @@ function loadAllPermissions($loadType = 'classic')
'delete' => array(true, 'post', 'modify', 'moderate'),
'modify' => array(true, 'post', 'modify', 'moderate'),
'report_any' => array(false, 'post', 'participate'),
'doublePost' => array(false, 'post', 'participate'),
'poll_view' => array(false, 'poll', 'participate'),
'poll_vote' => array(false, 'poll', 'participate'),
'poll_post' => array(false, 'poll', 'post_polls'),

View File

@ -339,6 +339,9 @@ function ModifyTopicSettings($return_config = false)
array('int', 'enableAllMessages', 'postinput' => $txt['manageposts_posts'], 'subtext' => $txt['enableAllMessages_zero']),
array('check', 'disableCustomPerPage'),
array('check', 'enablePreviousNext'),
'',
array('int', 'doublePostThold', 'postinput' => $txt['doublePostAdmin_main'], 'subtext' => $txt['doublePostAdmin_sub']),
);

View File

@ -82,6 +82,11 @@ if (!defined('SMF'))
function Post()
{
// Double Post Stopper change - Start
checkForBump();
// End
global $txt, $scripturl, $topic, $modSettings, $board;
global $user_info, $sc, $board_info, $context, $settings;
global $sourcedir, $options, $smcFunc, $language;
@ -1208,6 +1213,11 @@ function Post()
function Post2()
{
// Double Post Stopper change - Start
checkForBump();
// End
global $board, $topic, $txt, $modSettings, $sourcedir, $context;
global $user_info, $board_info, $options, $smcFunc;
@ -2891,4 +2901,50 @@ function JavaScriptModify()
obExit(false);
}
function checkForBump() {
// This function here is for the Mod : Double Post Stopper, Made by Dragooon.
// It Checks weather the Poster is trying to bump the topic or not.
global $smcFunc, $topic, $modSettings, $user_info;
if(isset($topic)) {
// Do the Query to grab the stuff for checking.
$result = $smcFunc['db_query']('',"SELECT
m.poster_time, m.poster_name, m.poster_email
FROM
{db_prefix}topics AS t, {db_prefix}messages AS m
WHERE
t.id_last_msg = m.id_msg
AND m.id_topic = {int:topic}
AND m.id_member = {int:user}
LIMIT 1"
,array('user' => $user_info['id'], 'topic' => $topic));
if($smcFunc['db_num_rows']($result) <= 0)
return;
$row = $smcFunc['db_fetch_assoc']($result);
$smcFunc['db_free_result']($result);
// Check it if its a Bump Attempt
// The Poster Time assigned to the variable
$lpt = $row['poster_time'];
$timeTHold = $modSettings['doublePostThold'] * 60 * 60 * 24;
// Declare it false in begginning. If some conditions gets true, It turns into true, else it goes as false.
$bumpAttempt = false;
// Time Not set? Declare it as true then
if(empty($modSettings['doublePostThold']))
$bumpAttempt = true;
// Is it set?
elseif ($lpt + $timeTHold > time())
$bumpAttempt = true;
if(!isset($_REQUEST['msg']) && $bumpAttempt && !allowedTo('doublePost') && ($user_info['id'] > 0 || (isset($_POST['guestname']) && $_POST['guestname'] == $row['poster_name']) || (isset($_POST['email']) && $_POST['email'] == $row['poster_email'])))
fatal_lang_error('double_post_attempt');
else
return;
} else {
// Do nothing if it isn't set.
return;
}
}
?>

View File

@ -1,4 +1,14 @@
<?php
// Version: 2.0; Modifications
// Double Post stopper strings
$txt['double_post_attempt'] = 'Sorry, but you are not allowed to double post. Please go back and edit your previous post.';
$txt['permissionname_doublePost'] = 'Allow them to Double post';
$txt['permissionhelp_doublePost'] = 'By Enabling this You will allow them to double post.';
$txt['doublePostAdmin_main'] = 'Time before the user is not allowed to double post';
$txt['doublePostHelp'] = 'Time(in Days) before double posting is considered as a bump attempt. A user is not allowed to post a continous second reply within the given time threshhold.';
$txt['doublePostAdmin_sub'] = 'Is set as in Days. Click on the "?" if you want more information. Leave Blank to prevent double posting always';
?>