Go Back   vb.org Archive > vBulletin Modifications > vBulletin 3.8 Modifications > vBulletin 3.8 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
SSGTI - Prevent Duplicate Posts Details »»
SSGTI - Prevent Duplicate Posts
Version: 3.8.100, by Omranic Omranic is offline
Developer Last Online: Sep 2021 Show Printable Version Email this Page

Category: New Posting Features - Version: 3.8.x Rating:
Released: 07-16-2009 Last Update: Never Installs: 25
Uses Plugins
Re-useable Code Code Changes Translations  
No support by the author.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!.............. Sponsored by: PHP KingDom (www.phpkd.net) ..............!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




Please remember to click Mark as Installed if you use this modification.
Support questions from members who have not marked this as installed will be considered low priority.


Note: This product has been requested by kevinh as a custom work. It has been completed & delivered few months ago. Since all of my custom work is licensed under Creative Commons - Attribution-Noncommercial-Share Alike 3.0, I publish it now for the public use, I hope this product will be useful for all of you.


Name: Prevent Duplicate Posts
Version: 3.8.100

Description:
  • This product will prevent duplicate posts from being posted in a time interval that specified by admin.
  • This product checks out the MD5 hash of the duplicate posts & compare it with the current post to see if it is really duplicate or not, this MD5 hash include (thread or forum ID, thread or post title, thread or post content and finally the user ID).
  • By enabling duplication flood check, you disallow users from making another duplicate post within a given time span of their last similar posting. In other words, if you set a duplication flood check time span of 30 seconds, a user may not duplicate post again within 30 seconds of making his last similar post.
  • Administrators and moderators are exempt from duplication flood check.
  • It's known that vBulletin by default has "Flood Check" that can be controlled from Admincp "Minimum Time Between Posts" option, but it's "Duplicate Check" is limited & can't be controlled any way since it's hard coded within vBulletin code (See file: functions_newpost.php -> function: build_new_post -> Code Block: after "// ### DUPE CHECK ###" comment), default vBulletin duplicate check is limited to 5 minutes only. This product solves this problem for those who need to prevent duplicate posts for a longer time with AdminCP control options.

Compatible with: All 3.6.x/3.7.x/3.8.x vBulletin versions.


Features:
  • Fully Phrased.
  • Fully Supported.
  • Professionally Coded.
  • Doing all default vBulletin checks & follow all vBulletin default scenarios while processing, the code embedded in the 'threadpost' data manager class, so it will work with both AJAX mode & normal mode posting all over the board.


Installation Procedure:
  1. Do the following file edits:
    Open the file "includes/class_dm_threadpost.php" & search in it for the following code:
    Code:
    					if ($this->errors)
    					{
    						// if we already have errors, the save won't happen, so rollback now...
    						$this->floodcheck->rollback();
    					}
    					else
    					{
    						// ...or, in case we have a new error
    						$this->set_failure_callback(array(&$this->floodcheck, 'rollback'));
    					}
    				}
    			}
    Add under it directly the following code:
    Code:
    			// duplication check
    			if ($this->registry->options['ssgti_prevent_duplposts_floodchecktime'] > 0 AND empty($this->info['preview']) AND empty($this->info['is_automated']) AND $this->fetch_field('userid', 'post'))
    			{
    				if (!$this->info['user'])
    				{
    					$this->info['user'] = fetch_userinfo($this->fetch_field('userid', 'post'));
    				}
    
    				if (!$user)
    				{
    					$user =& $this->info['user'];
    				}
    
    				if ($user['lastpost'] <= TIMENOW AND
    					!can_moderate($this->info['forum']['forumid'], '', $user['userid'], $user['usergroupid'] . (trim($user['membergroupids']) ? ",$user[membergroupids]" : '')))
    				{
    					$forumid = $this->fetch_field('forumid');
    					if (!$forumid)
    					{
    						$forumid = $this->info['forum']['forumid'];
    					}
    
    					$threadid = $this->fetch_field('threadid');
    					$type = ($threadid > 0 ? 'reply' : 'thread');
    
    					$userid = $this->fetch_field('postuserid');
    					if (!$userid)
    					{
    						$userid = $this->fetch_field('userid');
    					}
    
    					$query_join = "";
    					if ($type == "thread")
    					{
    						$query_join = "LEFT JOIN " . TABLE_PREFIX . "thread AS thread USING (threadid)";
    					}
    
    
    					$suspection_period = TIMENOW - $this->registry->options['ssgti_prevent_duplposts_floodchecktime'];
    
    					// Fetch all suspect duplicate posts
    					$suspects = $this->dbobject->query_read_slave("
    						SELECT " . ($type == "thread" ? "thread.forumid, " : "") . "post.threadid, post.title, post.pagetext, post.userid, post.dateline
    						FROM " . TABLE_PREFIX . "post AS post
    						$query_join
    						WHERE post.userid = " . intval($this->registry->userinfo['userid']) . "
    							AND post.dateline > $suspection_period
    							ORDER BY post.dateline DESC
    					");
    
    					while ($suspect = $this->dbobject->fetch_array($suspects))
    					{
    						$current_post_hash = md5(($type == "thread" ? $forumid : $threadid) . $this->fetch_field('title') . $this->fetch_field('pagetext', 'post') . $userid);
    						$duplicated_post_hash = md5(($type == "thread" ? $suspect['forumid'] : $suspect['threadid']) . $suspect['title'] . $suspect['pagetext'] . $suspect['userid']);
    
    						if ($current_post_hash == $duplicated_post_hash)
    						{
    							$duplication_wait = $this->registry->options['ssgti_prevent_duplposts_floodchecktime'] - (TIMENOW - $suspect['dateline']);
    							$this->error('postduplicatecheck', $this->registry->options['ssgti_prevent_duplposts_floodchecktime'], $duplication_wait);
    							return false;
    						}
    					}
    				}
    			}
    Save the modified file "includes/class_dm_threadpost.php" and upload it replacing the existing one.
  2. Import product's XML file from AdminCP.
  3. Done .


Control:
  • vBulletin AsminCP -> vBulletin Options -> vBulletin Options -> Prevent Duplicate Posts


License:

Help with:
  • Suggestions to develop this product.
  • Contributing any updates, upgrades and/or any new features.
  • Translations to benefit more users (translation credits goes to their owners).
  • Spreading this product. Yes, you're free to re-distribute this product as it is.


Known Isues:
  • Nothing till now.


History:
  • v3.8.100 17/07/2009 02:00 AM UTC: First initial public release.


Screen Shots:
  • Available down there.


Notes:
  • English version only supported & supplied here, for any other localized release please contact me.


Technical Notes:
  • New Files: 0
  • New Plugins: 0
  • New Phrases: 4
  • New Templates: 0
  • Template changes: 0
  • Code Changes: 1
  • New vBulletin Settings: 1
  • New Usergroup Permissions: 0
  • New Moderator Permissions: 0
  • New Administrator Permissions: 0
  • New Forum Options: 0
  • New DB Tables: 0
  • DB Alterations: 0
  • New Cron Jops: 0
    -----------------
  • Installation Level: V.Easy
  • Installation Time: 10~20 seconds


Donation?:
  • No, sorry. I appreciate your kindness. But if you need to help/support, then you can ask me for custom work. I'm ready for any custom work .

Download Now

File Type: zip product-ssgti_prevent_duplposts-3.8.zip (154.8 KB, 167 views)

Screenshots

File Type: jpg ssgti_prevent_duplposts_1.jpg (38.0 KB, 0 views)
File Type: jpg ssgti_prevent_duplposts_2.jpg (49.7 KB, 0 views)

Supporters / CoAuthors

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 07-17-2009, 03:02 AM
Bin7raib Bin7raib is offline
 
Join Date: Mar 2009
Location: UAE - Khorfakkan
Posts: 39
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanx,
Installed
Reply With Quote
  #3  
Old 07-17-2009, 05:42 AM
jankoalek jankoalek is offline
 
Join Date: Mar 2009
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thx I will try today

Not working to me - unistalled -
Reply With Quote
  #4  
Old 07-17-2009, 08:35 AM
Omranic's Avatar
Omranic Omranic is offline
 
Join Date: Jan 2005
Location: Egypt
Posts: 536
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jankoalek View Post
thx I will try today

Not working to me - unistalled -
Hello,
Yes, sure.
It will not work since you didn't setup the product's settings there:
  • vBulletin AsminCP -> vBulletin Options -> vBulletin Options -> Prevent Duplicate Posts

Please do so & it will work smoothly!
Reply With Quote
  #5  
Old 07-28-2009, 04:34 AM
dreads dreads is offline
 
Join Date: Feb 2007
Posts: 141
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Installed. Just wondering, would increasing the time between posts, increase the load (server load)?
Reply With Quote
  #6  
Old 07-29-2009, 10:40 AM
samiro's Avatar
samiro samiro is offline
 
Join Date: Jan 2007
Posts: 136
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How can I change the time from seconds to minutes...? (30 minutes)
Reply With Quote
  #7  
Old 07-29-2009, 05:02 PM
Mike-D Mike-D is offline
 
Join Date: Jan 2006
Location: Cologne / Germany
Posts: 270
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SolidSnake@GTI
Do the following file edits:
Please don't get me wrong, but in case of any getting vB Updates, PHP File Edits should NEVER be executed. That's what hooks are for! So it's sometimes hard to keep it in mind what and where someone did. I'd recommend you these Addons as follow...
Just a kind note of course
Reply With Quote
  #8  
Old 01-30-2010, 10:47 AM
samiro's Avatar
samiro samiro is offline
 
Join Date: Jan 2007
Posts: 136
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

removed
dont work with VB4
Reply With Quote
  #9  
Old 05-24-2011, 03:50 AM
nz17 nz17 is offline
 
Join Date: Apr 2011
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Attached is a mod of "SSGTI - Prevent Duplicate Posts" created by myself, Nz17. It essentially takes all of the code for this add-on and puts it into an XML file so that the only edit to be made is a tiny, one-line custom hook insertion into a vBulletin file. Another XML file was created to be uploaded into the XML folder to allow this custom hook into vBulletin. The installation instructions have also been updated to make them more detailed and clear in places, and the zip has been trimmed down to only include the essentials.

Hopefully this mod will one day get integrated into the main "SSGTI - Prevent Duplicate Posts" add-on. :-)
Attached Files
File Type: zip spd-nz.zip (5.4 KB, 15 views)
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:14 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.12944 seconds
  • Memory Usage 2,320KB
  • Queries Executed 24 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (2)bbcode_code
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (8)postbit
  • (4)postbit_attachment
  • (9)postbit_onlinestatus
  • (9)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete