Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.5 > vBulletin 3.5 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
vRewrite - SEOed URLs for vBulletin Details »»
vRewrite - SEOed URLs for vBulletin
Version: 1.5.1, by Immortal Immortal is offline
Developer Last Online: May 2010 Show Printable Version Email this Page

Version: 3.5.3 Rating:
Released: 01-04-2006 Last Update: 05-15-2006 Installs: 506
Uses Plugins Template Edits
Additional Files  
No support by the author.

About

vRewrite is an advance but simple system to rewrite vB's URLs. The rewrite system uses preg_match_all and str_replace to rewrite the URLs. It will rewrite any URLs that are dynamic ex: showthread.php?t= to /the-forum/title-of-the-forum-id.html. Why? SEs (Search Engines) rate results based on filename. Not only that, but most SEs give a "boost" to static URLs (what we do here) versus dynamic URLs. vRewrite accomplishes both of this, for all URLs that a search engine (or a guest) will see.

Installation

Please download vRewrite.zip and read install.html for more information on how to install it.

Requirements

vRewrite assumes that you are using Apache with the mod_rewrite module enabled, and running vBulletin 3.5.x. However, if you ask for support here on IIS' module or on vBulletin 3.0.x - I will be more then happy to assist you.

Contributions

I would like to thank Chroder and Cole for assisting me release vRewrite. I could not have released it if it wasn't for them.

I would like to thank the following people/boards for helping beta test vRewrite and making it a better product.

Gaming Ultimate, BP Gaming, NBS Designz Cyclez, Hosting-Talk and Forum University.

Copyright

I've spent many hours working and perfecting vRewrite. The only thing I ask you to do is if you use it, please keep the link back. If you wish to put it in your style instead, simply remove or comment out that line. However, if you use vRewrite you MUST link back. That is the only thing I ask.

Known Issues

There are no known issues with the latest release (1.0).

Support / Issues

If you have any problems or discover a bug please post here in this thread. I have also included my email in the install.html email for one-on-one support. The only thing I ask you is please do not post this email address publicly - it is my personal email.

Changelog

1.5 Release - vRewrite 1.5 has become stable, and all users under 1.5 RC3 and 1.0 need to upgrade. Support for 1.0 will no longer be offered, and you will be told simply to upgrade. Please continue to keep all bug and feature suggestions on the bug tracker at:

Code:
http://www.techhelpforum.com/vrewrite
1.1 Release - Several bug fixes, and a few new features. Details here.

03/26/06 - Updated the thread to reflect vRewrite 1.5 Beta links. vRewrite files has NOT changed.

03/11/06 - Updated the thread to take advantage of vB.org's new prefix feature. vRewrite itself has NOT changed.

1.0 Release (02/19/06) - I have released the much awaited 1.0. This is the first stable release of vRewrite. All users now should be safe installing vRewrite. For more information, and how to upgrade, please see here.

1.0 Preview (01/12/06) - I have released a preview version of 1.0. This is the final version before 1.0 is considered stable. I believe everything should work in this new preview, but one bug (see known issues). Please see here for more information and how to upgrade.

01/05/06 - Updated ZIP to include a fix for boards running a table prefix. You do not need to upgrade unless you previously had SQL errors. You can upgrade by importing the product and choose "Allow Overwrite".

Donations

Any donations are very much appreciated! I do this out of my free time and work many hours on it - all for free. Anything to help is always very welcomed

If you use vRewrite, please click Install. This helps you keep track of additional upgrades and shows to me that you care about vRewrite


You may not post vRewrite ZIP or any files contained in the ZIP on any website. You may not also post any support requests/give support on any website other then this one, without my permission. If you do so, you will get a DMCA for copyright infringement. I do not want this spread to pirated users. Please stop piracy and do not share the source outside of this thread and vB.org/com. Thanks.

Support will only be obtained at:
https://vborg.vbsupport.ru/forumdisplay.php?f=182

Supporters / CoAuthors

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #162  
Old 01-11-2006, 12:42 AM
Immortal Immortal is offline
 
Join Date: Jul 2005
Location: Cincinnati, OH
Posts: 403
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Do you use a table_prefix? Do this...

AdminCP -> Plugin Manager -> Find vRewrite under the hook "global_complete" -> Choose Edit -> Copy and paste the code using the php tags
Reply With Quote
  #163  
Old 01-11-2006, 12:48 AM
Illustrious Illustrious is offline
 
Join Date: Dec 2005
Posts: 54
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No, that actually doesn't do the trick.

But I think I know why it's giving me that error. Apparently the username has an apostrophe (O'Neal), and it's in a forum location that is hidden to guests, hence why it works when I'm not logged in.

Is there a way to get apostrophes in membernames parsed?
Reply With Quote
  #164  
Old 01-11-2006, 12:52 AM
Immortal Immortal is offline
 
Join Date: Jul 2005
Location: Cincinnati, OH
Posts: 403
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just created a username with an apostrophe in it, and it worked flawlessly. Can you follow this, and post the code here?

Quote:
Originally Posted by Immortal
AdminCP -> Plugin Manager -> Find vRewrite under the hook "global_complete" -> Choose Edit -> Copy and paste the code using the php tags
Reply With Quote
  #165  
Old 01-11-2006, 12:54 AM
Illustrious Illustrious is offline
 
Join Date: Dec 2005
Posts: 54
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's the one in the zip, I tried the other fix posted in the thread, but I decided to go back since it didn't work either:

PHP Code:
if($vbulletin->options['vRewrite_on']) 

#------------------------------ 
# Replace Forums 
#------------------------------ 
$found preg_match_all('#<a href="forumdisplay\.php\?f=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT forumid, title FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)"); 

    while(
$f $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($f['title']); 
        
$fid $f['forumid']; 

        
$output str_replace("<a href="forumdisplay.php?f=$fid"""<a href="f-$title-$fid.html""$output); 
    } 




#------------------------------ 
# Replace User 
#------------------------------ 
$found preg_match_all('#<a href="member\.php\?u=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT userid, username FROM " TABLE_PREFIX "user WHERE userid IN($ids)"); 

    while(
$u $vbulletin->db->fetch_array($res)) 
    { 
        
$username urlize($u['username']); 
        
$uid $u['userid']; 

        
$output str_replace("<a href="member.php?u=$uid"""<a href="u-$username-$uid.html""$output); 
    } 




#------------------------------ 
# Replace showthread.php?goto=newpost 
#------------------------------ 
$found preg_match_all('#<a href="showthread\.php\?goto=newpost&amp;t=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, title, forumid FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)"); 

    while(
$n $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($n['title']); 
        
$tid $n['threadid']; 
        
$fid $n['forumid']; 


        
$output str_replace("<a href="showthread.php?goto=newpost&amp;t=$tid"""<a href="$title-$tid-newpost.html""$output); 
    } 




#------------------------------ 
# Replace Last Post User (Forum) 
#------------------------------ 
$found preg_match_all('#<a href="member\.php\?find=lastposter&amp;f=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT lastposter, forumid FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)"); 

    while(
$f $vbulletin->db->fetch_array($res)) 
    { 
        
$lp $f['lastposter']; 

        
$lpidinfo $vbulletin->db->query_first("SELECT userid, username FROM " TABLE_PREFIX "user WHERE username='$lp'"); 
        
$lp urlize($lpidinfo['username']); 
        
$lpid $lpidinfo['userid']; 
        
$fid $f['forumid']; 

         

        
$output str_replace("<a href="member.php?find=lastposter&amp;f=$fid"""<a href="u-$lp-$lpid.html""$output); 
    } 




#------------------------------ 
# Replace Last Post User (Thread) 
#------------------------------ 
$found preg_match_all('#<a href="member\.php\?find=lastposter&amp;t=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT lastposter, threadid FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)"); 

    while(
$f $vbulletin->db->fetch_array($res)) 
    { 
        
$lp $f['lastposter']; 

        
$lpidinfo $vbulletin->db->query_first("SELECT userid, username FROM " TABLE_PREFIX "user WHERE username='$lp'"); 
        
$lp urlize($lpidinfo['username']); 
        
$lpid $lpidinfo['userid']; 
        
$tid $f['threadid']; 

         

        
$output str_replace("<a href="member.php?find=lastposter&amp;t=$tid"""<a href="u-$lp-$lpid.html""$output); 
    } 



#----------------------------------- 
# DO NOT REMOVE OTHERWISE YOU  
# WILL BE SENT A DMCA FOR COPYRIGHT  
# INFRINGEMENT YOU MAY NOT USE THIS  
# PLUGIN WITHOUT THIS LINE OF CODE 
# IF YOU WISE TO REMOVE THIS AND 
# ADD IT TO YOUR STYLE, FEEL FREE 
# AS LONG AS THE COPYRIGHT REMAINS 
#----------------------------------- 

$output .= '<div align="center" class="smallfont">SEOed URLs completed by <a href="http://www.techhelpforum.com">Tech Help Forum</a>.</div>'

#------------------------------ 
# SHOWTHREAD 
#------------------------------ 
$found preg_match_all('#<a href="showthread\.php\?t=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, forumid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)"); 

    while(
$t $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($t['title']); 
        
$tid $t['threadid']; 
        
$fid $t['forumid']; 
        
$foruminfo $vbulletin->db->query_first("SELECT title FROM " TABLE_PREFIX "forum WHERE forumid='$fid'"); 
        
$fname urlize($foruminfo['title']); 

        
$output str_replace("<a href="showthread.php?t=$tid"""<a href="$fname/t-$title-$tid.html""$output); 
    } 




#------------------------------ 
# SHOWTHREAD and page 
#------------------------------ 
$found preg_match_all('#<a href="showthread\.php\?t=([0-9]+)&amp;page=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    
// Keep track of page nums that go with tid's 
    
$temp = array(); 

    for(
$i 0$i $found$i++) 
    { 
        
// $temp[<threadid>] = <page> 
        
$temp$matches[1][$i] ] = $matches[2][$i]; 

        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, forumid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)"); 

    while(
$t $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($t['title']); 
        
$tid $t['threadid']; 
        
$fid $t['forumid']; 
        
$foruminfo $vbulletin->db->query_first("SELECT title FROM " TABLE_PREFIX "forum WHERE forumid='$fid'"); 
        
$fname urlize($foruminfo['title']); 
        
$page $temp[$tid]; 
         

        
$output str_replace("<a href="showthread.php?t=$tid&amp;page=$page"""<a href="$fname/t-$title-$tid-page-$page.html""$output); 


    } 




#------------------------------ 
# showpost 
#------------------------------ 
$found preg_match_all('#<a href="showpost\.php\?p=([0-9]+)&amp;postcount=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        
$temp$matches[1][$i] ] = $matches[2][$i]; 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 


    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT postid, title FROM " TABLE_PREFIX "post WHERE postid IN($ids)"); 

    while(
$p $vbulletin->db->fetch_array($res)) 
    { 
        
$pid $p['postid']; 
        
$postcount $temp[$pid]; 
        
$output str_replace("<a href="showpost.php?p=$pid&amp;postcount=$postcount"""<a href="p-$pid.html""$output);    } 



#------------------------------ 
# Print SHOWTHREAD 
#------------------------------ 
$found preg_match_all('#<a href="printthread\.php\?t=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)"); 

    while(
$t $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($t['title']); 
        
$tid $t['threadid']; 

        
$output str_replace("<a href="printthread.php?t=$tid"""<a href="print-$title-$tid.html""$output); 
    } 




#------------------------------ 
# Email SHOWTHREAD 
#------------------------------ 
$found preg_match_all('#<a href="sendmessage\.php\?do=sendtofriend&amp;t=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)"); 

    while(
$t $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($t['title']); 
        
$tid $t['threadid']; 

        
$output str_replace("<a href="sendmessage.php?do=sendtofriend&amp;t=$tid"""<a href="sendtofriend-$title-$tid.html""$output); 
    } 




#------------------------------ 
# New Thread 
#------------------------------ 
$found preg_match_all('#<a href="newthread\.php\?do=newthread&amp;f=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT forumid, title FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)"); 

    while(
$f $vbulletin->db->fetch_array($res)) 
    { 
        
$title urlize($f['title']); 
        
$fid $f['forumid']; 

        
$output str_replace("<a href="newthread.php?do=newthread&amp;f=$fid"""<a href="$title-$fid/newthread.php""$output); 
    } 




#------------------------------ 
# New Post 
#------------------------------ 
$found preg_match_all('#<a href="newreply\.php\?do=newreply&amp;noquote=1&amp;p=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, postid FROM " TABLE_PREFIX "post WHERE postid IN($ids)"); 

    while(
$t $vbulletin->db->fetch_array($res)) 
    { 
        
$tid $t['threadid']; 
        
$pid $t['postid']; 
        
$threadinfo $vbulletin->db->query_first("SELECT title, forumid FROM " TABLE_PREFIX "thread WHERE threadid='$tid'"); 
        
$title urlize($threadinfo['title']); 
        
$fid $threadinfo['forumid']; 
        
$f fetch_foruminfo($fid);  
        
$fname urlize($f['title']); 



        
$output str_replace("<a href="newreply.php?do=newreply&amp;noquote=1&amp;p=$pid"""<a href="$fname/newpostnoquote-$pid.php""$output); 
    } 




#------------------------------ 
# New Post 
#------------------------------ 
$found preg_match_all('#<a href="newreply\.php\?do=newreply&amp;p=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT threadid, postid FROM " TABLE_PREFIX "post WHERE postid IN($ids)"); 

    while(
$t $vbulletin->db->fetch_array($res)) 
    { 
        
$tid $t['threadid']; 
        
$pid $t['postid']; 
        
$threadinfo $vbulletin->db->query_first("SELECT title, forumid FROM " TABLE_PREFIX "thread WHERE threadid='$tid'"); 
        
$title urlize($threadinfo['title']); 
        
$fid $threadinfo['forumid']; 
        
$f fetch_foruminfo($fid);  
        
$fname urlize($f['title']); 



        
$output str_replace("<a href="newreply.php?do=newreply&amp;p=$pid"""<a href="$fname/newpost-$pid.php""$output); 
    } 




#------------------------------ 
# Search 
#------------------------------ 
$found preg_match_all('#<a href="search\.php\?searchid=([0-9]+)"#i'$output$matches); 

if(
$found

    
// Build an array of ID's 
    
$ids = array(); 

    for(
$i 0$i $found$i++) 
    { 
        if(
is_numeric($matches[1][$i])) 
            
$ids[] = $matches[1][$i]; 
    } 
    
$ids implode(','$ids); 

    
// Go through each 
    
$res $vbulletin->db->query_read("SELECT userid, searchid FROM " TABLE_PREFIX "search WHERE searchid IN($ids)"); 

    while(
$s $vbulletin->db->fetch_array($res)) 
    { 
        
$userid $s['userid']; 
        
$searchid $s['searchid']; 
         

        
$output str_replace("search.php?searchid=$searchid""search-$userid-$searchid.html"$output); 
    } 





#------------------------------ 
# misc pages 
#------------------------------ 
$output str_replace("search.php?do=getnew","search-getnew.html",$output); 
$output str_replace("search.php?do=getdaily","search-getdaily.html",$output); 
$output str_replace("forumdisplay.php?do=markread","markread.html",$output); 


/** 
 * Turn a string into a URL friendly string 
 * 
 * @param string $txt The string to work on 
 * @return string The new string 
 */ 
function urlize($txt

    
$txt unaccent($txt); 
    
$txt html_entity_decode($txt); 
    
$txt str_replace(' ''-'$txt); 
    
$txt preg_replace('#[^a-zA-Z0-9_\-]+#'''$txt); 
    
$txt preg_replace('#[\-]+#''-'$txt); 

    return 
strtolower($txt); 


/** 
 * Turn accented characters into normal characters 
 * 
 * @param string $txt The string to remove the accents from 
 * @return string Your new clean string 
 */ 
function unaccent($txt

    
$trans get_html_translation_table(HTML_ENTITIES); 
     
    foreach(
$trans as $literal => $entity
    { 
        if(
ord($literal) >= 192
        { 
            
$search[]   = $literal
            
$replace[]  = substr($entity11); 
        } 
    } 

    return 
str_replace($search$replace$txt); 

Reply With Quote
  #166  
Old 01-11-2006, 01:44 AM
Illustrious Illustrious is offline
 
Join Date: Dec 2005
Posts: 54
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Immortal
I just created a username with an apostrophe in it, and it worked flawlessly. Can you follow this, and post the code here?
That's strange, considering when I removed the apostrophe, it worked flawlessly.
Reply With Quote
  #167  
Old 01-11-2006, 08:29 AM
ryuji ryuji is offline
 
Join Date: Jan 2006
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

im having pretty much the same sql error problem,
Code:
Database error in vBulletin 3.5.3:

Invalid SQL:
SELECT userid, username FROM user WHERE username='BB mods's';

MySQL Error  : You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 's'' at line 1
Error Number : 1064
Date         : Wednesday, January 11th 2006 @ 04:23:40 AM
Script       : http://www.site.com/forum/index.php?
Referrer     : http://www.site.com/forum/admincp/index.php?do=head
IP Address   : 69.164.103.233
Username     : ryuji
Classname    : vb_database
PHP Code:
if($vbulletin->options['vRewrite_on'])
{
#------------------------------
# Replace Forums
#------------------------------
$found preg_match_all('#<a href="forumdisplay\.php\?f=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT forumid, title FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)");

    while(
$f $vbulletin->db->fetch_array($res))
    {
        
$title urlize($f['title']);
        
$fid $f['forumid'];

        
$output str_replace("<a href="forumdisplay.php?f="$fid .""""<a href="f-"$title ."-"$fid .".html""$output);
    }


}

#------------------------------
# Replace User
#------------------------------
$found preg_match_all('#<a href="member\.php\?u=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT userid, username FROM " TABLE_PREFIX "user WHERE userid IN($ids)");

    while(
$u $vbulletin->db->fetch_array($res))
    {
        
$username urlize($u['username']);
        
$uid $u['userid'];

        
$output str_replace("<a href="member.php?u=$uid"""<a href="u-$username-$uid.html""$output);
    }


}

#------------------------------
# Replace showthread.php?goto=newpost
#------------------------------
$found preg_match_all('#<a href="showthread\.php\?goto=newpost&amp;t=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, title, forumid FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)");

    while(
$n $vbulletin->db->fetch_array($res))
    {
        
$title urlize($n['title']);
        
$tid $n['threadid'];
        
$fid $n['forumid'];


        
$output str_replace("<a href="showthread.php?goto=newpost&amp;t=$tid"""<a href="$title-$tid-newpost.html""$output);
    }


}

#------------------------------
# Replace Last Post User (Forum)
#------------------------------
$found preg_match_all('#<a href="member\.php\?find=lastposter&amp;f=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT lastposter, forumid FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)");

    while(
$f $vbulletin->db->fetch_array($res))
    {
        
$lp $f['lastposter'];

        
$lpidinfo $vbulletin->db->query_first("SELECT userid, username FROM " TABLE_PREFIX "user WHERE username='$lp'");
        
$lp urlize($lpidinfo['username']);
        
$lpid $lpidinfo['userid'];
        
$fid $f['forumid'];

        

        
$output str_replace("<a href="member.php?find=lastposter&amp;f=$fid"""<a href="u-$lp-$lpid.html""$output);
    }


}

#------------------------------
# Replace Last Post User (Thread)
#------------------------------
$found preg_match_all('#<a href="member\.php\?find=lastposter&amp;t=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT lastposter, threadid FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)");

    while(
$f $vbulletin->db->fetch_array($res))
    {
        
$lp $f['lastposter'];

        
$lpidinfo $vbulletin->db->query_first("SELECT userid, username FROM " TABLE_PREFIX "user WHERE username='$lp'");
        
$lp urlize($lpidinfo['username']);
        
$lpid $lpidinfo['userid'];
        
$tid $f['threadid'];

        

        
$output str_replace("<a href="member.php?find=lastposter&amp;t=$tid"""<a href="u-$lp-$lpid.html""$output);
    }


}
#-----------------------------------
# DO NOT REMOVE OTHERWISE YOU 
# WILL BE SENT A DMCA FOR COPYRIGHT 
# INFRINGEMENT YOU MAY NOT USE THIS 
# PLUGIN WITHOUT THIS LINE OF CODE
# IF YOU WISE TO REMOVE THIS AND
# ADD IT TO YOUR STYLE, FEEL FREE
# AS LONG AS THE COPYRIGHT REMAINS
#-----------------------------------

$output .= '<div align="center" class="smallfont">SEOed URLs completed by <a href="http://www.techhelpforum.com">Tech Help Forum</a>.</div>';

#------------------------------
# SHOWTHREAD
#------------------------------
$found preg_match_all('#<a href="showthread\.php\?t=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, forumid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)");

    while(
$t $vbulletin->db->fetch_array($res))
    {
        
$title urlize($t['title']);
        
$tid $t['threadid'];
        
$fid $t['forumid'];
        
$foruminfo $vbulletin->db->query_first("SELECT title FROM " TABLE_PREFIX "forum WHERE forumid='$fid'");
        
$fname urlize($foruminfo['title']);

        
$output str_replace("<a href="showthread.php?t=$tid"""<a href="$fname/t-$title-$tid.html""$output);
    }


}

#------------------------------
# SHOWTHREAD and page
#------------------------------
$found preg_match_all('#<a href="showthread\.php\?t=([0-9]+)&amp;page=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    
// Keep track of page nums that go with tid's
    
$temp = array();

    for(
$i 0$i $found$i++)
    {
        
// $temp[<threadid>] = <page>
        
$temp$matches[1][$i] ] = $matches[2][$i];

        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, forumid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)");

    while(
$t $vbulletin->db->fetch_array($res))
    {
        
$title urlize($t['title']);
        
$tid $t['threadid'];
        
$fid $t['forumid'];
        
$foruminfo $vbulletin->db->query_first("SELECT title FROM " TABLE_PREFIX "forum WHERE forumid='$fid'");
        
$fname urlize($foruminfo['title']);
        
$page $temp[$tid];
        

        
$output str_replace("<a href="showthread.php?t=$tid&amp;page=$page"""<a href="$fname/t-$title-$tid-page-$page.html""$output);


    }


}

#------------------------------
# showpost
#------------------------------
$found preg_match_all('#<a href="showpost\.php\?p=([0-9]+)&amp;postcount=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        
$temp$matches[1][$i] ] = $matches[2][$i];
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);


    
// Go through each
    
$res $vbulletin->db->query_read("SELECT postid, title FROM " TABLE_PREFIX "post WHERE postid IN($ids)");

    while(
$p $vbulletin->db->fetch_array($res))
    {
        
$pid $p['postid'];
        
$postcount $temp[$pid];
        
$output str_replace("<a href="showpost.php?p=$pid&amp;postcount=$postcount"""<a href="p-$pid.html""$output);    }


}
#------------------------------
# Print SHOWTHREAD
#------------------------------
$found preg_match_all('#<a href="printthread\.php\?t=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)");

    while(
$t $vbulletin->db->fetch_array($res))
    {
        
$title urlize($t['title']);
        
$tid $t['threadid'];

        
$output str_replace("<a href="printthread.php?t="$tid .""""<a href="print-"$title ."-"$tid .".html""$output);
    }


}

#------------------------------
# Email SHOWTHREAD
#------------------------------
$found preg_match_all('#<a href="sendmessage\.php\?do=sendtofriend&amp;t=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, title FROM " TABLE_PREFIX "thread WHERE threadid IN($ids)");

    while(
$t $vbulletin->db->fetch_array($res))
    {
        
$title urlize($t['title']);
        
$tid $t['threadid'];

        
$output str_replace("<a href="sendmessage.php?do=sendtofriend&amp;t=$tid"""<a href="sendtofriend-$title-$tid.html""$output);
    }


}

#------------------------------
# New Thread
#------------------------------
$found preg_match_all('#<a href="newthread\.php\?do=newthread&amp;f=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT forumid, title FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)");

    while(
$f $vbulletin->db->fetch_array($res))
    {
        
$title urlize($f['title']);
        
$fid $f['forumid'];

        
$output str_replace("<a href="newthread.php?do=newthread&amp;f=$fid"""<a href="$title-$fid/newthread.php""$output);
    }


}

#------------------------------
# New Post
#------------------------------
$found preg_match_all('#<a href="newreply\.php\?do=newreply&amp;noquote=1&amp;p=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, postid FROM " TABLE_PREFIX "post WHERE postid IN($ids)");

    while(
$t $vbulletin->db->fetch_array($res))
    {
        
$tid $t['threadid'];
        
$pid $t['postid'];
        
$threadinfo $vbulletin->db->query_first("SELECT title, forumid FROM " TABLE_PREFIX "thread WHERE threadid='$tid'");
        
$title urlize($threadinfo['title']);
        
$fid $threadinfo['forumid'];
        
$f fetch_foruminfo($fid); 
        
$fname urlize($f['title']);



        
$output str_replace("<a href="newreply.php?do=newreply&amp;noquote=1&amp;p=$pid"""<a href="$fname/newpostnoquote-$pid.php""$output);
    }


}

#------------------------------
# New Post
#------------------------------
$found preg_match_all('#<a href="newreply\.php\?do=newreply&amp;p=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT threadid, postid FROM " TABLE_PREFIX "post WHERE postid IN($ids)");

    while(
$t $vbulletin->db->fetch_array($res))
    {
        
$tid $t['threadid'];
        
$pid $t['postid'];
        
$threadinfo $vbulletin->db->query_first("SELECT title, forumid FROM " TABLE_PREFIX "thread WHERE threadid='$tid'");
        
$title urlize($threadinfo['title']);
        
$fid $threadinfo['forumid'];
        
$f fetch_foruminfo($fid); 
        
$fname urlize($f['title']);



        
$output str_replace("<a href="newreply.php?do=newreply&amp;p=$pid"""<a href="$fname/newpost-$pid.php""$output);
    }


}

#------------------------------
# Search
#------------------------------
$found preg_match_all('#<a href="search\.php\?searchid=([0-9]+)"#i'$output$matches);

if(
$found)
{
    
// Build an array of ID's
    
$ids = array();

    for(
$i 0$i $found$i++)
    {
        if(
is_numeric($matches[1][$i]))
            
$ids[] = $matches[1][$i];
    }
    
$ids implode(','$ids);

    
// Go through each
    
$res $vbulletin->db->query_read("SELECT userid, searchid FROM " TABLE_PREFIX "search WHERE searchid IN($ids)");

    while(
$s $vbulletin->db->fetch_array($res))
    {
        
$userid $s['userid'];
        
$searchid $s['searchid'];
        

        
$output str_replace("search.php?searchid=$searchid""search-$userid-$searchid.html"$output);
    }


}


#------------------------------
# misc pages
#------------------------------
$output str_replace("search.php?do=getnew","search-getnew.html",$output);
$output str_replace("search.php?do=getdaily","search-getdaily.html",$output);
$output str_replace("forumdisplay.php?do=markread","markread.html",$output);
}

/**
 * Turn a string into a URL friendly string
 *
 * @param string $txt The string to work on
 * @return string The new string
 */
function urlize($txt)
{
    
$txt unaccent($txt);
    
$txt html_entity_decode($txt);
    
$txt str_replace(' ''-'$txt);
    
$txt preg_replace('#[^a-zA-Z0-9_\-]+#'''$txt);
    
$txt preg_replace('#[\-]+#''-'$txt);

    return 
strtolower($txt);
}

/**
 * Turn accented characters into normal characters
 *
 * @param string $txt The string to remove the accents from
 * @return string Your new clean string
 */
function unaccent($txt)
{
    
$trans get_html_translation_table(HTML_ENTITIES);
    
    foreach(
$trans as $literal => $entity)
    {
        if(
ord($literal) >= 192)
        {
            
$search[]   = $literal;
            
$replace[]  = substr($entity11);
        }
    }

    return 
str_replace($search$replace$txt);

the hack seems to work perfectly except when you view forumhome, if you manualy go to usercp for example it works fine , same goes for subforums
Reply With Quote
  #168  
Old 01-11-2006, 06:15 PM
LincolnForums LincolnForums is offline
 
Join Date: Oct 2005
Posts: 81
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not sure if this has been pointed out, but i installed this hack, then installed some themes after it everything went smooth

BUT on showthread and some others the images arent showing up, and the bread crumbs dont work correctly. But only on the newly installed themes.

they look like, http://www.domain.com/forum-name/images.jpg or whatever for some reason.

Didnt try to uninstall this hack and then install after new themes were installed so i dont know if that will fix it or not
Reply With Quote
  #169  
Old 01-11-2006, 07:01 PM
derekivey derekivey is offline
 
Join Date: Apr 2005
Location: Pennsylvania, USA
Posts: 1,186
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I found the problem Tyler... You aren't using $db->escape_string() in your code.

For example:
PHP Code:
$lpidinfo $vbulletin->db->query_first("SELECT userid, username FROM " TABLE_PREFIX "user WHERE username='$lp'"); 
Should be:
PHP Code:
$lpidinfo $vbulletin->db->query_first("SELECT userid, username FROM " TABLE_PREFIX "user WHERE username='".$db->escape_string($lp)."'"); 
That should fix the problems everyone is having...
Reply With Quote
  #170  
Old 01-11-2006, 07:29 PM
GJK GJK is offline
 
Join Date: Jan 2006
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

vbseo isn't even an option for me for several reasons...

#1 Mandatory footer copyright... $150 plus global copyright links? NOT in a million years!
#2 Their self righteous attitude... Kiddy porn? OK, I'll call the feds myself, but some others I've seen mentioned? give me a break lol
#3 probably turn me down anyway! (gambling related)

I'll not only take my biz dollars elsewhere...
I say all of us that were thinking of vbseo, pool our $$$$'s, buy a couple days of offshore man hours to help out Immortal, add some meta features, custom rewrite rules, sitemap gens, take this right to v1.5 & release it as opensource!

I have a lot of experience w/seo & quite a bit with form based seo widgets.
I could whip out some nice xhtml UI's for it.

Any takers?
Reply With Quote
  #171  
Old 01-11-2006, 09:02 PM
ryuji ryuji is offline
 
Join Date: Jan 2006
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by derekivey
I found the problem Tyler... You aren't using $db->escape_string() in your code.
That should fix the problems everyone is having...
could you show us how it is used in this specific plugin? your example doesnt really compare with the actual code... the code we have is
PHP Code:
 $res $vbulletin->db->query_read("SELECT forumid, title FROM " TABLE_PREFIX "forum WHERE forumid IN($ids)"); 
the ends dont match up with your example...
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:17 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.13387 seconds
  • Memory Usage 2,731KB
  • Queries Executed 26 (?)
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
  • (2)bbcode_code
  • (5)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (4)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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