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

Reply
 
Thread Tools Display Modes
  #1  
Old 08-03-2005, 02:58 PM
Marris Marris is offline
 
Join Date: Jul 2005
Posts: 45
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default PHP to convert phpBB links to vB links?

I am working on converting my phpBB forum to vB. I am using the official Impex importer, but one feature it lacks is converting internal phpBB forum links within posts to point to the correct imported vB thread.

I have searched and posted on the official forum, but it's one of those often features that always seems to be "coming soon".

Anyway, I'm open to any suggestions as an effective method to covert the links with a PHP script. I'm also hoping I might hear from someone who has already done this and might be willing to share. There must be a few people out there who have successfully converted phpBB links to vb.


phpBB links are in the following format:

http://www.domain.com/forum/viewtopic.php?t=10820

http://www.domain.com/forum/viewtopic.php?p=72155#72155


the vBulletin equivalents:

http://www.domain.com/forum/showthread.php?t=13511

http://www.domain.com/forum/showthre...8246#post48246


phpBB table: phpbb_posts

phpBB fields: post_id, topic_id

phpBB table: phpbb_posts_text

phpBB fields: post_id, post_text


vBulletin table: vb3_post

vBulletin fields: postid, threadid, pagetext, importthreadid, importpostid



So, I guess I need to:

search each vb3_post : pagetext for occurances of

http://www.domain.com/forum/viewtopic.php?p=n#n

then return the new $replace=vb3_post : postid where importpostid=n

then write the replacement over the old link

http://www.domain.com/forum/showthread.php?p=$replace#post$replace


and also search each vb3_post : pagetext for occurances of

http://www.domain.com/forum/viewtopic.php?t=n

then return the new $replace=vb3_post : threadid where importthreadid=n

then write the replacement over the old link

http://www.domain.com/forum/showthread.php?t=$replace

then after all links are replaced, overwrite the vb3_post : pagetext entry in the database


Any pointers? I appreciate any help you can offer.
Reply With Quote
  #2  
Old 08-03-2005, 04:24 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This can be done, but it is not as easy as it seems.
Reply With Quote
  #3  
Old 08-03-2005, 04:45 PM
Michael Morris's Avatar
Michael Morris Michael Morris is offline
 
Join Date: Nov 2003
Location: Knoxville TN
Posts: 774
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'd suggest leaving the db alone and writing a new viewtopic.php file with these contents, turning it into a simple redirecting file.

PHP Code:
<?php

if ($_GET['p'])
{
$p "p=" intval($_GET['p']);
}
else if (
$_GET['t'])
{
$p "t=" intval($_GET['t']);
}

header("Location: http://www.yoursite.com/forum/showthread.php?" $p);
?>
Reply With Quote
  #4  
Old 08-03-2005, 05:11 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That will not work since the thread/postid's have changed.
Reply With Quote
  #5  
Old 08-03-2005, 05:12 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

On second thought, you could use the ol id, to query the ompirt_id column, then redirect to the new id.
Reply With Quote
  #6  
Old 08-03-2005, 06:00 PM
Marris Marris is offline
 
Join Date: Jul 2005
Posts: 45
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for the suggestions. I have seen the alternate viewtopic.php idea mentioned on the official forums and given the "invalidates your support" official response. Of course, doing a search and replace on the posts probably invalidates support too.

I have had some luck throwing together a script to rewrite my old image gallery links in posts, so I'll try a few tests with something like this and see if I can get anywhere with it.
Reply With Quote
  #7  
Old 08-03-2005, 07:24 PM
Michael Morris's Avatar
Michael Morris Michael Morris is offline
 
Join Date: Nov 2003
Location: Knoxville TN
Posts: 774
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarcoH64
That will not work since the thread/postid's have changed.
Wasn't aware of that - sorry.
Reply With Quote
  #8  
Old 08-03-2005, 10:05 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Michael Morris
Wasn't aware of that - sorry.
yeah if that wasn't the case you could just use the replace function, kinda sucks, kinda really sucks, i'm at a loss as to how to acheive it.
Reply With Quote
  #9  
Old 08-04-2005, 03:31 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Maybe something like (using michael's code, no coffee yet, so this is not bugfree, but you'll get the idea:
PHP Code:
<?php 

if ($_GET['p']) 

$p intval($_GET['p']); 
$postid $DB_site->query_first("SELECT postid FROM " TABLE_PREFIX "post
WHERE import_id = 
$p");
header("Location: http://www.yoursite.com/forum/showthread.php?" p=$postid#$postid); 

else if (
$_GET['t']) 

$p "t=" intval($_GET['t']); 


?>
And the same for threadid, but you'll figure that out.
Reply With Quote
  #10  
Old 08-04-2005, 03:00 PM
Marris Marris is offline
 
Join Date: Jul 2005
Posts: 45
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks again guys. Here's the code that is working on my test server:

Code:
<?php 

$username="";
$password="";
$database="";

if ($_GET['p']) 
{ 
$p = intval($_GET['p']);
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$result=mysql_query("SELECT postid FROM " . vb3_ . "post
WHERE importpostid = $p");
$postid = mysql_result($result,0,"postid");
header("Location: http://www.domain.com/testvb/showthread.php?p=" . $postid . "#post" . $postid);
} 
else if ($_GET['t']) 
{ 
$t = intval($_GET['t']);
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$result=mysql_query("SELECT threadid FROM " . vb3_ . "post
WHERE importthreadid = $t");
$threadid = mysql_result($result,0,"threadid");
header("Location: http://www.domain.com/testvb/showthread.php?t=" . $threadid);
} 

?>
I'm not sure how secure this is, but I'll try to adjust it to standard vB formatting before putting it on the live server.

Thanks to you guys, I can keep my old links working. This should tide me over until I (or Jelsoft) come up with a solid script to replace the old links in the database.
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 01:41 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.04810 seconds
  • Memory Usage 2,269KB
  • 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_code
  • (2)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete