micmania1/sstwitter

There is no license information available for the latest version (1.1.4) of this package.

A silverstripe module to integrate Silverstripe with Twitter

Installs: 90

Dependents: 0

Suggesters: 0

Security: 0

Stars: 10

Watchers: 3

Forks: 5

Open Issues: 8

Type:silverstripe-module

1.1.4 2013-12-15 21:29 UTC

This package is auto-updated.

Last update: 2024-10-24 13:30:20 UTC


README

SSTwitter is a Silverstripe module to allow simple integration between Twitter & Silverstripe.

Features

  • CMS interface to integrate Silverstripe with a Twitter application & connect an account to the website.
  • Connect/Disconnect Member's to Twitter accounts.
  • Enable/Disable Twitter login through the CMS.
  • Developer Access to Twitter API through PHPTwitter.

Usage

$TwitterConnectURL (TwitterApp::connect_url()) This displays a link where a logged in user will be taken through the Twitter authentication process to connect their Twitter account.

$TwitterDisconnectURL (TwitterApp::disconnect_url()) This will disassociate the Twitter account from the Member.

$TwitterLoginURL (TwitterApp::login_url()) This will return a url whereby the user can login to their Silverstripe account through Twitter where previously connected.

<a href="$TwitterConnectURL">Connect</a><br />
<a href="$TwitterDisconnectURL">Disconnect</a><br />
<% if TwitterLoginURL %>
	<a href="$TwitterLoginURL">Login</a>
<% else %>
	Twitter Login is disabled.
<% end_if %>

Extending

SSTwitter uses PHPTwitter for its Twitter Authentication which has a central Twitter->api() method which handles all API requests. This means you can easily harness its power to interact directly with Twitter. Below is an example of how you would get the latest tweets for the account connected to your website.

In Page_Controller.php:

public function LatestTweets($count = 3) {

	$tweets = new ArrayList();

    $twitterApp = TwitterApp::get()->first();
	$twitter = $twitterApp->getTwitter(); // Access the PHPTwitter interface
	$twitter->setAccess(new OauthToken($twitterApp->TwitterAccessToken, $twitterApp->TwitterAccessSecret));

	// Get the latest Tweets
	if($twitter->hasAccess()) {
	    $result = $twitter->api("1.1/statuses/user_timeline.json", "GET", array(
	        "screen_name" => $twitterApp->TwitterScreenName,
	        "count" => (int) $count
	    ));
	    
	    if($result->statusCode() == 200) {
	    	$json = json_decode($result->body(), true);
	    	if(count($json) > 0) {
	    		foreach($json as $tweet) {
	    			$tweets->push(ArrayData::create(array(
	    				"Tweet" => $tweet['text'],
	    				"Created" => $tweet['created_at'],
	    				"Link" => "http://www.twitter.com/".rawurlencode($tweet['user']['screen_name'])."/status/".rawurlencode($tweet['id_str'])
	    			)));
	    		}
	    	}
	    }
	}
	return $tweets;
}

In Page.ss

<% if LatestTweets %>
	<ul>
		<% loop LatestTweets %>
			<li>$Tweet - <a href="$Link">$Created</a></li>
		<% end_loop %>
	</ul>
<% end_if %>