Need Help With TextLink Ad Coding

Discussion in 'Programming' started by soultrader, Nov 30, 2007.

  1. #1
    Hello gang,

    I currently run a vbulletin forum and have tried to implement the new revised textlinkads plugin code. The problem is that the links appear distorted and I have no clue how to fix this. the guys over at textlinkads are not keen on customer support here.

    I would like to see if I can get some help here. The plugin code in question is this:

    function tla_ads() {
    
    	// Number of seconds before connection to XML times out
    	// (This can be left the way it is)
    	$CONNECTION_TIMEOUT = 10;
    
    	// Local file to store XML
    	// This file MUST be writable by web server
    	// You should create a blank file and CHMOD it to 666
    	$LOCAL_XML_FILENAME = "local_75095.xml";
    
    	if( !file_exists($LOCAL_XML_FILENAME) ) die("Text Link Ads script error: $LOCAL_XML_FILENAME does not exist. Please create a blank file named $LOCAL_XML_FILENAME.");
    	if( !is_writable($LOCAL_XML_FILENAME) ) die("Text Link Ads script error: $LOCAL_XML_FILENAME is not writable. Please set write permissions on $LOCAL_XML_FILENAME.");
    
    	if( filemtime($LOCAL_XML_FILENAME) < (time() - 3600) || filesize($LOCAL_XML_FILENAME) < 20) {
    		$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : "";
    		$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
    		tla_updateLocalXML("http://www.text-link-ads.com/xml.php?inventory_key=THL3C0I76180BATU1W2Y&referer=" . urlencode($request_uri) .  "&user_agent=" . urlencode($user_agent), $LOCAL_XML_FILENAME, $CONNECTION_TIMEOUT);
    	}
    
    	$xml = tla_getLocalXML($LOCAL_XML_FILENAME);
    
    	$arr_xml = tla_decodeXML($xml);
    
    	if ( is_array($arr_xml) ) {
    		echo "\n<ul style=\"padding: 0; width: 100%; margin: 0; list-style: none;\">\n";
    		for ($i = 0; $i < count($arr_xml['URL']); $i++) {
    			if( isset($arr_xml['PostID'][$i]) && $arr_xml['PostID'][$i] > 0 ) continue;
    			echo "<li style=\"clear: none; width: 13%; padding: 0; display: block; margin: 0; float: left;\">".$arr_xml['BeforeText'][$i]." <a href=\"".$arr_xml['URL'][$i]."\">".$arr_xml['Text'][$i]."</a> ".$arr_xml['AfterText'][$i]."</li>\n";
    		}
    		echo "</ul>";
    	}
    
    }
    
    function tla_updateLocalXML($url, $file, $time_out)
    {
    	if($handle = fopen($file, "a")){
    			fwrite($handle, "\n");
    			fclose($handle);
    	}
    	if($xml = file_get_contents_tla($url, $time_out)) {
    		$xml = substr($xml, strpos($xml,'<?'));
    
    		if ($handle = fopen($file, "w")) {
    			fwrite($handle, $xml);
    			fclose($handle);
    		}
    	}
    }
    
    function tla_getLocalXML($file)
    {
    	$contents = "";
    	if($handle = fopen($file, "r")){
    		$contents = fread($handle, filesize($file)+1);
    		fclose($handle);
    	}
    	return $contents;
    }
    
    function file_get_contents_tla($url, $time_out)
    {
    	$result = "";
    	$url = parse_url($url);
    
    	if ($handle = @fsockopen ($url["host"], 80)) {
    		if(function_exists("socket_set_timeout")) {
    			socket_set_timeout($handle,$time_out,0);
    		} else if(function_exists("stream_set_timeout")) {
    			stream_set_timeout($handle,$time_out,0);
    		}
    
    		fwrite ($handle, "GET $url[path]?$url[query] HTTP/1.0\r\nHost: $url[host]\r\nConnection: Close\r\n\r\n");
    		while (!feof($handle)) {
    			$result .= @fread($handle, 40960);
    		}
    		fclose($handle);
    	}
    
    	return $result;
    }
    
    function tla_decodeXML($xmlstg)
    {
    
    	if( !function_exists('html_entity_decode') ){
    		function html_entity_decode($string)
    		{
    		   // replace numeric entities
    		   $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\1"))', $string);
    		   $string = preg_replace('~&#([0-9]+);~e', 'chr(\1)', $string);
    		   // replace literal entities
    		   $trans_tbl = get_html_translation_table(HTML_ENTITIES);
    		   $trans_tbl = array_flip($trans_tbl);
    		   return strtr($string, $trans_tbl);
    		}
    	}
    
    	$out = "";
    	$retarr = "";
    
    	preg_match_all ("/<(.*?)>(.*?)</", $xmlstg, $out, PREG_SET_ORDER);
    	$search_ar = array('&#60;', '&#62;', '&#34;');
    	$replace_ar = array('<', '>', '"');
    	$n = 0;
    	while (isset($out[$n]))
    	{
    		$retarr[$out[$n][1]][] = str_replace($search_ar, $replace_ar,html_entity_decode(strip_tags($out[$n][0])));
    		$n++;
    	}
    	return $retarr;
    }
    
    ob_start();
    tla_ads();
    $tla_ads = ob_get_contents();
    ob_end_clean();
    Code (markup):
    The current page which this appears is here on the bottom left hand column sidebar: http://www.traderslaboratory.com/ (it says sponsored links)

    I will appreciate any help. Thank you.
     
    soultrader, Nov 30, 2007 IP
  2. eggi

    eggi Peon

    Messages:
    30
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Is there a widget, or any configuration that you had to set up on their end before they gave you the code?

    The only reason I ask is that the column setup on your site seems correct, but the size of the box that's got

    2
    2
    3
    2

    4 rows by 9 columns seems to expand to the size of the text and the content isn't equal. I think auto space fill is the culprit, but - at the size that box is - there's not much you can do to fix it.

    If they're feeding you the add titles on the links.... that's bad on their end.

    If you could post any more info on the setup process, it looks like the code is okay, but the content isn't suited to the size and row/column setup - if they have any widget configuration you have to step through to get that code, please post it and I'll take a look.

    Thanks :)

    , Mike
     
    eggi, Dec 1, 2007 IP
  3. soultrader

    soultrader Peon

    Messages:
    457
    Likes Received:
    5
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Can anyone post a working textlinkads code for 8 rows? I would appreciate it. Thanks
     
    soultrader, Dec 6, 2007 IP