View Single Post
  #44  
Old 11-28-2006, 08:03 PM
Steve123 Steve123 is offline
 
Join Date: Sep 2002
Posts: 105
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I quickly edited the code to make it work with 3.6

Code:
if (preg_match('#\[quote=(&quot;|"|\'|)(.*)\\1\](<br>|<br />|\r\n|\n|\r)??(.*)(<br>|<br />|\r\n|\n|\r)??\[/quote\]#esiU',$post['message'])) 
{

    preg_match_all('#\[quote=(&quot;|"|\'|)(.*)\\1\]#esiU',$post['message'],$quotematch);

 
    $quotecount = count($quotematch[0]);
    $tempcount = 0;
    $quotearray = '';

        while ($tempcount < $quotecount) 
        {
        $xquotematch = strtolower($quotematch[0][$tempcount]);
        $xquotematch = str_replace('[quote=','',"$xquotematch");
        $xquotematch = ereg_replace(';.*]$','',"$xquotematch");
        $quoteduserid = $vbulletin->db->query_first("SELECT userid FROM ".TABLE_PREFIX."user WHERE username = '".addslashes(htmlspecialchars_uni($xquotematch))."'");

            if (!strstr("$quotearray","x".$quoteduserid['userid']."")) 
            {
                if ($quoteduserid['userid'] > 0) 
                {
                    $vbulletin->db->query_write("INSERT INTO ".TABLE_PREFIX."quotedatanew (quoted,quoter,postid,dateline) VALUES ('".$quoteduserid['userid']."','".$vbulletin->userinfo['userid']."','".$post['postid']."','".time()."')");
                    $quotearray = "".$quotearray.""."x".$quoteduserid['userid']."";
                }
            }
                $tempcount++;
        }

}
I also disallowed [ ] ; in usernames..

If your using the prevent doublepost hack, then delete the who quoted me code and replace the preventdoublepost hack with the following..

In plugin Main Doublepost Prevent Engine

Code:
$oldmessage = $post['message'];


// ########### 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 post.dateline > " . (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 threadid = $threadinfo[threadid]
			AND post.dateline > " . (TIMENOW - $vbulletin->options['xen_dp_timespan'] * 60) . "
			AND visible = 1 AND deletionlog.primaryid IS NULL
			AND postid <> $post[postid]
		ORDER BY 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" . $vbulletin->options['xen_dp_spacer'] . "\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']);
		}
	}
}

if (preg_match('#\[quote=(&quot;|"|\'|)(.*)\\1\](<br>|<br />|\r\n|\n|\r)??(.*)(<br>|<br />|\r\n|\n|\r)??\[/quote\]#esiU',$oldmessage)) 
{

    preg_match_all('#\[quote=(&quot;|"|\'|)(.*)\\1\]#esiU',$oldmessage,$quotematch);

 
    $quotecount = count($quotematch[0]);
    $tempcount = 0;
    $quotearray = '';

        while ($tempcount < $quotecount) 
        {
        $xquotematch = strtolower($quotematch[0][$tempcount]);
        $xquotematch = str_replace('[quote=','',"$xquotematch");
        $xquotematch = ereg_replace(';.*]$','',"$xquotematch");
        $quoteduserid = $vbulletin->db->query_first("SELECT userid FROM ".TABLE_PREFIX."user WHERE username = '".addslashes(htmlspecialchars_uni($xquotematch))."'");

            if (!strstr("$quotearray","x".$quoteduserid['userid']."")) 
            {
                if ($quoteduserid['userid'] > 0) 
                {
                    $vbulletin->db->query_write("INSERT INTO ".TABLE_PREFIX."quotedatanew (quoted,quoter,postid,dateline) VALUES ('".$quoteduserid['userid']."','".$vbulletin->userinfo['userid']."','".$post['postid']."','".time()."')");
                    $quotearray = "".$quotearray.""."x".$quoteduserid['userid']."";
                }
            }
                $tempcount++;
        }

}
It seems to work for me..

the whoquotedme.php needs to be rewritten and i gota add support so it dosen't display quotes from private forums..

I will do this when i get the time..
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01258 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
  • (2)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