[RESOLVED] Twitter Updates via php/xml
Hi all,
I'm trying (desperately) to re-work the code here untoldentertainment.com (AS3) to AS2...
First time I'm using sharedObject and also, bit confused about calling the .xml file via the php.
Here's the actionscript:
Actionscript Code:
var twitterXML:XML; // This holds the xml data
var cachedTwitterData:SharedObject; // This stores the data loaded from the Flash cookie
var twitterPHPScriptPath:String;
var myTwitterID:String;
var wereAllowedToWriteToTheFlashCookie:Boolean; // You can use this value to decide whether or not to make repeated save attempts
//Put your Twitter username here. For example, ours is "untoldEnt" :
myTwitterID = "aneemal";
// Put the path to your php script here:
twitterPHPScriptPath = "tweet.php";
wereAllowedToWriteToTheFlashCookie = true; // (let's be optimistic until we discover otherwise)
// Check to see if the user has already retrieved the Twitter updates and stored them in a Flash cookie:
loadTwitterDataFromFlashCookie();
function loadTwitterDataFromFlashCookie() {
// Call up the Twitter data from the Flash cookie on the user's machine:
cachedTwitterData = SharedObject.getLocal("twitter");
var timeStamp:Date = cachedTwitterData.data.timeStamp;
if (timeStamp != null) {
// The timeStamp variable is in there, which means we've retrieved Twitter info for this user at some point.
// Now let's check the timeStamp. If the last time we grabbed Twitter data was too long ago, let's grab fresh info:
if (hasExpired(timeStamp)) {
// The most recent copy of the Twitter data in the Flash cookie is old! Let's get some fresh data:
trace("cookie has expired! let's get some fresh data");
loadTwitterXML();
} else {
// It hasn't been very long since we grabbed a fresh copy of the Twitter data. Let's just use what we've got in the Flash cookie:
trace("cookie is fresh. display the data.");
twitterXML = cachedTwitterData.data.twitterXML;
showTwitterStatus();
}
} else {
// If there's no timeStamp variable in there, then the cookie's empty. We need to hit Twitter to grab our data for the first time.
loadTwitterXML();
}
}
function saveTwitterDataToFlashCookie() {
flushStatus = cachedTwitterData.flush(10000);
if (flushStatus == true) {
trace("********* save complete. ***********\n");
finishedHandlingTwitterData();
} else if (flushSatus == false) {
trace("User denied permission -- value not saved.\n");
wereAllowedToWriteToTheFlashCookie = false;
}
}
function finishedHandlingTwitterData() {
trace("Twitter data saved.");
}
function hasExpired(timeStamp:Date) {
// Store the date RIGHT NOW, to compare against the Flash cookie timeStamp:
var now:Date = new Date();
// Let's say that the cookie expires after 1 hour, 0 minutes and zero seconds:
var expiryHours:Number = 1;
var expiryMinutes:Number = 0;
var expirySeconds:Number = 0;
// Store some handy conversion values:
var msPerHour:Number = 3600000;
var msPerMinute:Number = 60000;
var msPerSecond:Number = 1000;
// Multiply those values to get the expiry time in milliseconds:
var expiryTime:Number = (expiryHours * msPerHour) + (expiryMinutes * msPerMinute) + (expirySeconds * msPerSecond);
// Return whether or not the timeStamp is past the expiry date:
return (now.getTime() - timeStamp.getTime() > expiryTime)
}
function loadTwitterXML() {
var getTwitter:XML = new XML();
getTwitter.ignoreWhite = true;
getTwitter.onLoad = function(success:Boolean) {
if (success) {
finishLoadingXML();
} else {
trace ("Error loading php");
}
}
getTwitter.load(twitterPHPScriptPath + "?twitterId=" + myTwitterID);
}
function finishLoadingXML() {
// Populate the xml object with the xml data:
cachedTwitterData = SharedObject.getLocal("twitter");
// Set the date/time RIGHT NOW:
cachedTwitterData.data.timeStamp = new Date();
twitterXML = new XML;
// Store the twitterXML data:
cachedTwitterData.data.twitterXML = twitterXML;
// (Try to) save the whole shebang the user's Flash cookie:
saveTwitterDataToFlashCookie();
showTwitterStatus();
}
function showTwitterStatus() {
trace("showTwitterStatus");
// Uncomment these lines if you want to see all the fun stuff Twitter sends you:
//trace(twitterXML);
//trace(twitterXML.head);
// Prep the text field to hold our latest Twitter update:
twitter_txt.wordWrap = true;
twitter_txt.autoSize = true
// Populate the text field with the first element in the status.text nodes:
twitter_txt.text = twitterXML;
}
And here's the php:
PHP Code:
<?php
$twitterId = isset($_REQUEST["twitterId"]) ? $_REQUEST["twitterId"] : '';
if( $twitterId == "" ){
exit;
}
$file = file_get_contents("http://twitter.com/statuses/user_timeline/" . $twitterId . ".xml" );
echo $file;
?>
Please, please, please, help me get this project off the ground!
Many thanks for any input.