Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 04-04-2009, 07:49 PM
Mutt's Avatar
Mutt Mutt is offline
 
Join Date: Nov 2001
Posts: 331
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default HELP - auto move thread back when redirect expires

I often make a thread, move it w/ redirect for a week, & then move it back. I'd love to use the "Leave Expiring Redirect" option to automatically move the thread back

Just above hook cron_script_cleanup_hourly in /include/cron/cleanup.php there's this code that deletes the moved redirect at expiration
Code:
// delete expired thread redirects
$threads = $vbulletin->db->query_read("
	SELECT threadid
	FROM " . TABLE_PREFIX . "threadredirect
	WHERE expires < " . TIMENOW . "
");

while ($thread = $vbulletin->db->fetch_array($threads))
{
	$thread['open'] = 10;
	$threadman =& datamanager_init('Thread', $vbulletin, ERRTYPE_SILENT, 'threadpost');
	$threadman->set_existing($thread);
	$threadman->delete(false, true, NULL, false);
	unset($threadman);
}
I've looked at how redirects work. here's my understanding of it
  • when you move a thread, it changes the forumid field for the row in thread with that thread ID. It's my understanding that it then updates the forum thread & post counts for both forums.
  • when you leave a redirect it makes a duplicate of the above row in thread with a new thread ID & the above thread ID stored under pollid.
  • when you set the redirect to expire, it makes a new entry to threadredirect w/ the above threadID & the time it should be expired
  • when cleanup.php is run via cron, the above code checks the dates of threadredirect & deletes the entry in thread for that threadid

I just don't understand all the datamanager_init / set_existing stuff. I know what it's doing but I don't know how / why. i don't know how to set it or use it.


My plan is to add a field to threadredirect called "return" & use it to store the old forumid & the real threadid. (threadid|forumid)
then I'd modify the above code in cleanup.php (just inside the while) to look for "return". if it's there split it & update the original thread row with the returning forum id.

Doing that via an UPDATE, SET= thing would be easy but I'd like to update the row using the datamanager_init deal so the forum post & thread counts are corrected. can someone tell me how that thing works?

I known I need to change it to something like the following but need some feedback. is it ok to use varname $threadman because of the unset line? do I need to do more?
Code:
$threads = $vbulletin->db->query_read("
	SELECT threadid, return
	FROM " . TABLE_PREFIX . "threadredirect
	WHERE expires < " . TIMENOW . "
");

while ($thread = $vbulletin->db->fetch_array($threads))
{
	if ($thread['return']) {
		list($returntid, $returnfid) = split('|', $thread['return']);
		$returnthread['threadid']=$returntid;
		$threadman=&datamanager_init('Thread', $vbulletin, ERRTYPE_ARRAY, 'threadpost');			
		$threadman->set_existing($returnthread);
		$threadman->set('forumid', $returnfid);
		$threadman->save();
		unset($threadman);
	}
	$thread['open'] = 10;
	$threadman =& datamanager_init('Thread', $vbulletin, ERRTYPE_SILENT, 'threadpost');
	$threadman->set_existing($thread);
	$threadman->delete(false, true, NULL, false);
	unset($threadman);
}
any help understanding this would be greatly appreciated. even if it's just recommending an existing hack that I can look at as an example.

forgive my ignorance. I love hacking the VB code but I'm still learning v3 & my brain is still stuck in v2. the new ways still confuse me a little

thanks in advance
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 06:25 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03128 seconds
  • Memory Usage 2,163KB
  • Queries Executed 13 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)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
  • (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_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete