View Single Post
  #976  
Old 08-10-2008, 02:25 PM
Keyser S?ze's Avatar
Keyser S?ze Keyser S?ze is offline
 
Join Date: Apr 2002
Location: USA
Posts: 690
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i used this code to add a time stamp when someone adds a double post, but instead it gave me an error msg saying this post is a duplicayr og another...

then it took me to it and i had 2 posts not merged

Code:
/ ########### Xenon's prevent doublepost modification #########

$vbulletin->GPC['xen_isdoublepost'] = false;

// parse custom conditions
$custcond = true;
if (trim($vbulletin->options['xen_dp_custcond']) != '')
{
    eval('$custcond = ((' . $vbulletin->options['xen_dp_custcond'] . ') ? true : false);');
}


// at first check if there is at least the possibility to be a doublepost
if ($custcond AND $type != 'thread'
    AND $dp_threadinfo['lastpost'] > TIMENOW - $vbulletin->options['xen_dp_timespan'] * 60
    AND $dp_threadinfo['lastposter'] == $vbulletin->userinfo['username']
    AND $dataman->fetch_field('attach') == 0)
{
    // 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 post.threadid = $threadinfo[threadid]
            AND post.dateline > " . (TIMENOW - $vbulletin->options['xen_dp_timespan'] * 60) . "
            AND post.visible = 1 AND deletionlog.primaryid IS NULL
            AND post.postid <> $post[postid]
        ORDER BY post.dateline DESC
        LIMIT 1
    ");

    if ($doublepost['userid'] == $vbulletin->userinfo['userid'] AND $doublepost['attach'] == 0)
    {
        // we truely have a doublepost, now check if the merged post still fits the rules!
        $dpdataman =& datamanager_init('Post', $vbulletin, ERRTYPE_ARRAY, 'threadpost');
        $dpdataman->set_existing($doublepost);
        $doublepost['message'] = $doublepost['pagetext'] . "\n\n[SIZE=\"1\"][COLOR=\"Silver\"]" . $vbulletin->userinfo['username'] . ' added ' . intval((TIMENOW - $doublepost['dateline'])/60) . ' Minutes and ' . ((TIMENOW - $doublepost['dateline']) % 60). ' Seconds later...' . $vbulletin->options['xen_dp_spacer'] . "[/color][/size]\n\n" . $post['message'];

        // set info
        $dpdataman->set_info('preview', $post['preview']);
        $dpdataman->set_info('parseurl', $post['parseurl']);
        $dpdataman->set_info('posthash', $post['posthash']);
        $dpdataman->set_info('forum', $foruminfo);
        $dpdataman->set_info('thread', $dp_threadinfo);

        // set options
        $dpdataman->setr('showsignature', $post['signature']);
        $dpdataman->setr('allowsmilie', $post['enablesmilies']);

        // set data
        $dpdataman->setr('pagetext', $doublepost['message']);
        $dpdataman->setr('iconid', $post['iconid']);

        $dpdataman->pre_save();
        if (!$dpdataman->errors)
        {
            // merged post is ok, so actually do the merging by editing old post
            $vbulletin->GPC['xen_isdoublepost'] = true;

            if ($vbulletin->options['xen_dp_bumpthread'])
            {
                // bump thread, so change the post's dateline
                $doublepost['dateline'] = TIMENOW;
                $dpdataman->setr('dateline', $doublepost['dateline']);
            }
            $dpdataman->save();

            // as we have edited an old post, we can now delete the new created post
            $postman =& datamanager_init('Post', $vbulletin, ERRTYPE_SILENT, 'threadpost');
            $postman->set_existing($post);
            $postman->delete($foruminfo['countposts'], $threadinfo['threadid'], $removaltype = true, array('userid' => $vbulletin->userinfo['userid'], 'username' => $vbulletin->userinfo['username'], 'reason' => $vbulletin->options['xen_dp_editedby'], 'keepattachments' => false), false);
            unset($postman);

            $doublepost['oldmessage'] = $post['message'];
            $post = $doublepost;
            $id = $post['postid'];

            //now add edited by message
            if ($vbulletin->options['xen_dp_editedby'] != '')
            {
                $vbulletin->db->query_write("
                    REPLACE INTO " . TABLE_PREFIX . "editlog (postid, userid, username, dateline, reason)
                    VALUES ($post[postid], " . $vbulletin->userinfo['userid'] . ", '" . addslashes($vbulletin->userinfo['username']) . "', " . TIMENOW . ", '" . addslashes($vbulletin->options['xen_dp_editedby']) . "')
                ");
            }

            // last step update counters
            build_thread_counters($post['threadid']);
            build_forum_counters($foruminfo['forumid']);
        }
    }
}
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01678 seconds
  • Memory Usage 1,799KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete