beachcoder.co.uk

22Mar/11Off

‘Share’ links generator

I don't know about you, but I spend far too much of my time creating those blasted 'Share' links. Well, I did, until I wrote this pair of handy functions.

They will create share links for Facebook, twitter, delicious and StumbleUpon on the fly. Additionally you can pass any URL to create a share link to, and a title if you like.

You can create more definitions very easily by adding to the $types array. Use the terms #URL# and #TITLE# for the URL and title, or #UURL# and #UTITLE# for the urlencode() versions.

function share($type=null,$url=null,$title=null){
	// I store various page data in an $args array.
	// For this function, I'm be using the page title.
	// If you don't have a page title, it'll be ignored.
	global $args;
 
	// Type definitions
	$types=array(
		'fb'=>'http://www.facebook.com/sharer.php?u=#UURL#&t=#UTITLE#',
		'tw'=>'http://twitter.com/home?status=#UTITLE# #UURL#',
		'dl'=>'http://www.delicious.com/save?url=#UURL#&title=#UTITLE#',
		'sl'=>'http://www.stumbleupon.com/submit?url=#UURL#&title=#UTITLE#'
	);
 
	// Sanity checks
	if(!$type)return 'NO TYPE REQUESTED';
	if(!array_key_exists($type,$types))return 'UNDEFINED TYPE REQUESTED';

	// Build the share link
	if(!$url)$url=thisurl();
	$title=(!$title&&$args['page']['title'])?$args['page']['title']:$title;
	$find=array('#URL#','#TITLE#','#UURL#','#UTITLE#');
	$replace=array($url,$title,urlencode($url),urlencode($title));
	return str_replace($find,$replace,$types[$type]);
}
function thisurl(){
	// Return the full page URL
	$host=strtolower(array_shift(explode('/',$_SERVER['SERVER_PROTOCOL']))).'://';
	$uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
	return($host.$uri);
}

// Usage:
echo share('fb');
echo share('tw');
echo share('dl');
echo share('su');