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

Reply
 
Thread Tools
Prevent Doubleposting Details »»
Prevent Doubleposting
Version: 1.0, by Xenon Xenon is offline
Developer Last Online: Oct 2023 Show Printable Version Email this Page

Version: 3.5.3 Rating:
Released: 09-19-2005 Last Update: 01-15-2007 Installs: 877
Uses Plugins
 
No support by the author.

When a User posts into a thread where he already has the lastpost, no new post will be added. The lastpost of him will be edited and the new text is put after his first message.
This will be done until the old post is older than 24 hours (you can change this timespan yourself)

Nothing more to say about that, it's the quite same as my vb3.0 version.

This Mod should run with 3.6 as well


** Please make sure you ENABLE this product after you install it - it is disabled by default. **

For vb 3.8 there are two alternative updates ;

https://vborg.vbsupport.ru/showthread.php?t=203705
https://vborg.vbsupport.ru/showthread.php?t=204177

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.
Благодарность от:
inphoenix

Comments
  #232  
Old 01-19-2006, 11:56 PM
Puntoboy Puntoboy is offline
 
Join Date: Sep 2005
Location: Northampton UK
Posts: 196
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i'd like to use this on my forum but only in the for sale area.

how can i do this?
Reply With Quote
  #233  
Old 01-20-2006, 02:02 PM
murrtex murrtex is offline
 
Join Date: May 2002
Location: izmir
Posts: 249
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by PersianImmortal
I got this to work on my 3.5.3 board (TweakGuides Forums) by using the original code, modifying as provided by Paul M, and also adding one new feature I think is very useful. This code works with AJAX (e.g. Quick Reply) without any problems, it automatically refreshes the page:

PHP Code:
// ########### Xenon Modified Prevent Doublepost Hack #########
    
$dp_settings = array(
        
'timespan' => 3600 24// how many seconds after the last post the new post is defined as doublepost (default: 24 hours)
        
'spacer' => "\n\n [b]Additional Comment:[/b] \n",    // What should be between the old post and the new one (default: two empty lines). Note: PersianImmortal has added [b]Additional Comment:[/b] \n to make it clear what is being added each time - can be removed if you wish.
        
'editedbymsg' => '[Automerged Doublepost]'// If left blank no edited by will appear
    
);
    
    
$isdoublepost false;
    
$oldmsg $post['message'];

    if (
$type != 'thread' 
        
AND $threadinfo['lastpost'] > TIMENOW $dp_settings['timespan'
        AND 
$threadinfo['lastposter'] == $vbulletin->userinfo['username'])
    {
        
// we are here, so we may have a doublepost -> do more exact checkings
        
$doublepost $vbulletin->db->query_first("
            SELECT post.*
            FROM " 
TABLE_PREFIX "post AS post
            LEFT JOIN " 
TABLE_PREFIX "deletionlog AS deletionlog ON(deletionlog.primaryid = post.postid AND type = 'post')
            WHERE threadid = 
$threadinfo[threadid]
                AND dateline > " 
. (TIMENOW $dp_settings['timespan']) . "
                AND visible = 1 AND deletionlog.primaryid IS NULL
            ORDER BY dateline DESC
            LIMIT 1
        "
);
    
        if (
$doublepost['userid'] == $vbulletin->userinfo['userid'])
        {
            
// we truely have a doublepost, now check if the merged post still fits the rules!
            
$dataman2 =& datamanager_init('Post'$vbulletinERRTYPE_ARRAY'threadpost');
            
$dataman2->set_existing($doublepost);
            
$post['message'] = $doublepost['pagetext'] . $dp_settings['spacer'] . $post['message'];
            
            
// set info
            
$dataman2->set_info('preview'$post['preview']);
            
$dataman2->set_info('parseurl'$post['parseurl']);
            
$dataman2->set_info('posthash'$post['posthash']);
            
$dataman2->set_info('forum'$foruminfo);
            
$dataman2->set_info('thread'$threadinfo);
    
            
// set options
            
$dataman2->setr('showsignature'$post['signature']);
            
$dataman2->setr('allowsmilie'$post['enablesmilies']);
    
            
// set data
            
$dataman2->setr('pagetext'$post['message']);
            
$dataman2->setr('iconid'$post['iconid']);
    
            
$dataman2->pre_save();
            if (!
$dataman2->errors)
            {
                
// merged post is ok, so do merging
                
$isdoublepost true;
                unset(
$dataman);
                
$dataman =& $dataman2;
                
$post['postid'] = $doublepost['postid'];
            }
            else
            {
                
// merging will produce errors so keep it as a single post..
                
$isdoublepost false;
            }
        }
    }
    
if (
$isdoublepost)
    {
        
// Ugly hack added by Paul M to fix ajax merge //
        
if (!$vbulletin->GPC['ajax'])
        {
            
$id $doublepost['postid'];
            
$dataman->save();
        
            if (
$dp_settings['editedbymsg'] != '')
            {
                
$vbulletin->db->query_write("
                REPLACE INTO " 
TABLE_PREFIX "editlog (postid, userid, username, dateline, reason)
                VALUES (
$id, " $vbulletin->userinfo['userid'] . ", '" addslashes($vbulletin->userinfo['username']) . "', " TIMENOW ", '" addslashes($dp_settings['editedbymsg']) . "')
                "
);
            }
        }
        
$vbulletin->url 'showthread.php?' $vbulletin->session->vars['sessionurl'] . "p=$post[postid]#post$post[postid]";
        eval(
print_standard_redirect('redirect_postthanks'truefalse));
    }  
    else
    {
        
// no doublepost so save as new post
        
$post['message'] = $oldmsg;
        
$id $dataman->save();
    } 
In summary the modifications to the original code are firstly the second step provided by Paul M (comment tags show Paul's added code as he provided it) - this is necessary for the AJAX refresh to work properly.

I also added an Additional Comment: heading in the Spacer, so that each automerged reply looks like this:

Additional Comment:
Second post text merged into first post

Additional Comment:
Third post text merged into first post

That way it becomes obvious what's been merged, both to the user and the reader. Also helps prompt the user to use the Edit button to add additional comments next time rather than just post multiple times in a row.

As I said, this now works perfectly on my board, and having tested it with both standard replies, quick replies using full AJAX features enabled, there are no errors or glitches.

Many thanks to Xenon and Paul M for this great mod, very useful and prevents a lot of conflicts and work for mods who get tired of having to merge multiple posts by individuals.
hi PersianImmortal ,I used yours everything is ok.refreshing,quick reply,click reply button...but when I click new thread button and I post ,page says Database errors

Code:
MySQL Error  : Duplicate entry '10006' for key 1
Error Number : 1062
the post goes but page says that, I think needs a little arrangement,,what should we do?

my version 3.5.3
Reply With Quote
  #234  
Old 01-20-2006, 03:35 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to post all the error message.
Reply With Quote
  #235  
Old 01-20-2006, 03:51 PM
Alex_ Alex_ is offline
 
Join Date: Jan 2006
Posts: 52
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just installed this mod on my vb 3.5.3 but I'm one of those who want the dateline to be updated...
I added
Code:
$dataman2->set('dateline', TIMENOW);
I also tried it with set_info but it doesn't work for me.
The post date doesn't get updated so I don't get a 'new post'...
Do I have to add another code with 3.5.3?
What could be wrong?
Reply With Quote
  #236  
Old 01-20-2006, 05:49 PM
CBE CBE is offline
 
Join Date: Jun 2005
Location: U.A.E.
Posts: 90
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

hi all,,
can any body conclude to us how can we install it @ 3.5.5 ??
WITH OUT ERROR ... lol ...
thanx allll
Reply With Quote
  #237  
Old 01-20-2006, 06:43 PM
murrtex murrtex is offline
 
Join Date: May 2002
Location: izmir
Posts: 249
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Code:
Database error in vBulletin 3.5.3:

Invalid SQL:
INSERT INTO thread
	(postusername, postuserid, title, iconid, visible, forumid, similar, dateline, open, attach, lastpost, lastposter, replycount, hiddencount, threadid, firstpostid)
VALUES
	(***', 1, 'testttttttt', 0, 1, 1266, '', 1137789007, 1, 0, 1137789007, 'Mu?', 0, 0, 10027, 20630);

MySQL Error  : Duplicate entry '10027' for key 1
Error Number : 1062
Date         : Friday, January 20th 2006 @ 10:30:08 PM
Script       : http://www.4umturk.com/forum/newthread.php
Referrer     : http://www.4umturk.com/forum/newthre...wthread&f=1266
IP Address   :***
Username     : ***
Classname    : vb_database
Paul M, this is the full error code..
Reply With Quote
  #238  
Old 01-20-2006, 07:34 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try running a repair on the thread table.
Reply With Quote
  #239  
Old 01-20-2006, 09:30 PM
murrtex murrtex is offline
 
Join Date: May 2002
Location: izmir
Posts: 249
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ohh sorry I forgot to replace
Quote:
$id = $dataman->save();

now its ok..
Reply With Quote
  #240  
Old 01-20-2006, 10:47 PM
Daniel's Avatar
Daniel Daniel is offline
 
Join Date: Jul 2005
Location: USA
Posts: 707
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by CBE
hi all,,
can any body conclude to us how can we install it @ 3.5.5 ??
WITH OUT ERROR ... lol ...
thanx allll
3.5.5!? Where have I been? :speechless:
Reply With Quote
  #241  
Old 01-21-2006, 07:07 AM
Alex_ Alex_ is offline
 
Join Date: Jan 2006
Posts: 52
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

To solve the dateline problem I had to update the timestamp manually
I inserted
Code:
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "post SET dateline = " . TIMENOW . " WHERE postid = ".$post[postid]);
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "thread SET lastpost = " . TIMENOW . " WHERE threadid = ".$threadinfo[threadid]);
to renew post and thread timestamp to have an 'unseen' post.
Now I'm happy with it
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 03:22 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.05252 seconds
  • Memory Usage 2,365KB
  • Queries Executed 27 (?)
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
  • (4)bbcode_code
  • (1)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (3)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (1)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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_postinfo_query
  • fetch_postinfo
  • 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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete