View Single Post
  #67  
Old 11-20-2007, 01:26 PM
felxi felxi is offline
 
Join Date: Jun 2007
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I made some different fixes and this script works now with vBulletin 3.6.8. The code is not the best but seems to work much better. E.g. [ url=xxx]yyy[ /url] links will be replaces correctly. problems with missing tags like [/font][/size] behind the amazon link will be solved. there can also be an image in the post and the link will be replaced and some other small fixes.

new code for vB 3.6.8
PHP Code:
<?php
function process_amazon_links($message) {
    
// Convert any amazon links to use your affilliate id.
    // enter your associate id here
    
$associate_id "your-id-here";

    if(
preg_match_all("/(\"\])/",$message,$tagarray)) {
        for(
$i=0;$i<count($tagarray[1]);$i++) {
            
$tagarray[1][$i] = $tagarray[1][$i]." ";
        }
        
$message str_replace($tagarray[0],$tagarray[1],$message);
    }

    
$message str_replace('[url=''[URL='$message);
    
$message str_replace('[url]''[URL]'$message);
    
$message str_replace('[/url]''[/URL]'$message);


    if(
preg_match_all("/(http:\/\/(?:[A-z0-9\.]+)?amazon.de\/\S+)/"$message$messagearray)) {
        for(
$i=0;$i<count($messagearray[1]);$i++) {
            if(!
stristr($messagearray[1][$i],"$associate_id") && strpos($messagearray[1][$i], '[img]') === false &&  strpos($messagearray[1][$i], '[IMG]') === false) {
                
$strippedurl preg_split("/\/[a-zA-Z0-9]{3}-[a-zA-Z0-9]{7}-[a-zA-Z0-9]{7}/"$messagearray[1][$i]);
                    
$messagearray[1][$i] = $strippedurl[0].$strippedurl[1];

                 
// Look for an asin number
                
if(!preg_match("/\/[a-zA-Z0-9]{10}\//"$messagearray[1][$i],$asin)) {
                    if(
stristr($messagearray[1][$i],"http://www.amazon.de/exec/obidos/")) {
                        
$strippedurl preg_split("/http:\/\/www.amazon.de\/exec\/obidos\//",$messagearray[1][$i]);
                        
$messagearray[1][$i] = $strippedurl[0].$strippedurl[1];
                    }

                    if(
stristr($messagearray[1][$i],"[/URL]")) {
                        
$strippedurl preg_split("/\[\/URL\]/",$messagearray[1][$i]);
                        
$messagearray[1][$i] = $strippedurl[0].$strippedurl[1];
                        
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/redirect?link_code=ur2&camp=1789&tag=".$associate_id."&creative=9325&path=".urlencode(str_replace('[/URL]'''$messagearray[1][$i]))."[/URL]";
                    } else {
                        
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/redirect?link_code=ur2&camp=1789&tag=".$associate_id."&creative=9325&path=".urlencode($messagearray[1][$i]);
                     }
                 } else {
                     if(
stristr($messagearray[1][$i],'"]')) {
                        
$bracketarray[0]='"]';
                        
$bracketarrayrep[0] = '"] ';
                        
$messagearray[1][$i]= str_replace($bracketarray,$bracketarrayrep,$messagearray[1][$i]);
                         
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/ASIN".$asin[0]."ref=nosim/" $associate_id.'"]';
                     } elseif(
stristr($messagearray[1][$i],"[/URL]")) {
                        
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/ASIN".$asin[0]."ref=nosim/" $associate_id."[/URL]";
                    } else {
                           
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/ASIN".$asin[0]."ref=nosim/" $associate_id;
                       }
                 }


                if(
$pos strpos($messagearray[0][$i], '[/URL]')) {
                    
$ext_str substr($messagearray[0][$i], $pos+6);
                    if(
strpos($messagearray[1][$i], $ext_str) === false) {
                        
$messagearray[1][$i] .= $ext_str;
                    }
                }

                if(
preg_match('/\](.*)\[\/URL\]/'$messagearray[0][$i], $out)) {
                    
$messagearray[1][$i] = substr_replace($messagearray[1][$i], $out[0], strpos($messagearray[1][$i], '[/URL]'), );
                }
            }
        }
    }

    
$message=str_replace($messagearray[0],$messagearray[1],$message);
    return 
$message;
}
?>
please let me know if u have some problems. dont forget to replace amazon.de with amazon.com.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01203 seconds
  • Memory Usage 1,864KB
  • 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
  • (1)bbcode_php
  • (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