Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 04-27-2014, 04:45 AM
gabestah gabestah is offline
 
Join Date: Mar 2006
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Copy Thread to Second Forum Using newthread_post_complete Plugin

Hello,

As the title suggests, I am trying to figure out the PHP code needed to create a plugin that generates a second, exact copy of a thread but in a specific forum using a hooked plugin for newthread_post_complete.

I've searched far and wide and the closest information I've found is a a few years old in this thread, but more importantly seems to be for a situation where the code is specifying a lot of the information manually (such as 'pagetext', 'userid', etc.)

The closest I've come to a solution is the following snippet of code which unfortunately instead of creating a copy of the thread, actually seems to just move the existing thread into the new forum:

PHP Code:
// DESTINATION FORUM ID
$forumid 2
$dataman =& datamanager_init('Thread'$vbulletinERRTYPE_ARRAY'threadpost');  
$dataman->set_existing($threadinfo);   
$dataman->setr('forumid'$forumid);   
$dataman->pre_save();  
if (
count($dataman->errors) > 0)  
{  
    foreach (
$errors as $error
    { 
        
$errorss .= $error"<br />"
    } 
    
$errormessage "Form failed to submit. The following error(s) occured: <br /> ".$errorss;
    eval(
standard_error($errormessage)); 
}  
else  
{  
    
$dataman->save();   
    
$foruminfo fetch_foruminfo($forumid); 
    
$threadinfo fetch_threadinfo($newpost['threadid']); 
    
mark_thread_read($threadinfo$foruminfo$vbulletin->userinfo['userid'], TIMENOW);     

My suspicion is the issue lies somewhere in the use of the "set_existing" method, which as described in the documentation, seems to inform the data manager that we are merely updating an existing record rather than creating a new one.

If anyone has any insight into the code I might need to accomplish this I would truly appreciate any and all assistance.

Thanks!
Reply With Quote
  #2  
Old 04-27-2014, 03:19 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah, I think what I'd do is start again with a new data manager and set the fields just like it does when a new one is being created (in build_new_post(), IIRC), but set the forumid to the other forum. But even that might not work completely right because I think some of the fields in the post array get changed because they are references. But I don't remember the details offhand.
Reply With Quote
  #3  
Old 04-27-2014, 06:37 PM
tbworld tbworld is offline
 
Join Date: Oct 2008
Posts: 2,126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Except for closed threads, thread copying is not very useful to the average user, due to how the thread tables were designed (there is no direct mechanism to keep the threads synced since they will have different ID's in the thread table).

We added an additional table to keep track of linked threads, and created handlers for post updating and for the additional caching. Much of this was done in extending the classes in the threadpost datamanager. Anyway, it was a big project and certainly was not worth the time and effort we put into it.

So if you are not working on closed threads, re-think what you are doing.
Reply With Quote
  #4  
Old 05-05-2014, 06:23 PM
gabestah gabestah is offline
 
Join Date: Mar 2006
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tbworld View Post
Except for closed threads, thread copying is not very useful to the average user, due to how the thread tables were designed (there is no direct mechanism to keep the threads synced since they will have different ID's in the thread table).

We added an additional table to keep track of linked threads, and created handlers for post updating and for the additional caching. Much of this was done in extending the classes in the threadpost datamanager. Anyway, it was a big project and certainly was not worth the time and effort we put into it.

So if you are not working on closed threads, re-think what you are doing.
Thanks for the response, but I think there is a misunderstanding about my intentions here. I do not need the threads to be synced or even related to one another in anyway upon creation. I realize they are both unique entities as far as the underlying system is concerned and that's perfectly fine (and in fact desired).

Instead, I simply want to perform a copy of the first post of a thread after a certain action (that action is irrelevant to this discussion) through the Plugin, and with that first post make a new thread with the same content as the original post but in another forum. Each of the two threads would then be normal threads with unique IDs, child posts, counters, all that stuff.

Put another way: I am trying to find the easiest method via the plugin hook to extract the basic information about the newly created post and then with that information in hand, create a second post (and thus thread) in a different forum. The only important data that needs to be copied from my perspective is:

Post Subject
Post Content
Author/Username
Timestamp

From my research I believe using the DataManager is the best route for this, but if that's not the case or anyone has any information or code snippets that would help, I'd really appreciate it!

Thanks!
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 08:09 PM.


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.03544 seconds
  • Memory Usage 2,197KB
  • Queries Executed 11 (?)
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
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)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