Its broke.
One of the things that has irritated me ever since the internet began is our reliance on having our data elsewhere - not on our servers. The other is our reliance on 3rd party internet services as we cannot always say that they will always be up, their services won't change dramatically and break existing solutions which rely on past functionality.
I suppose the main point is that the internet service industry is not for those that see change as bad for maintainability. Expect change even though it sucks to!
I use a twitter module from rocket theme that allows me to use my twitter account to show detail to my users on my personal website. Recently twitter has changed the implementation of their service, more specifically the URLs that roktwittie uses to connect to twitter. So obviously this change is not good for roktwittie as it now doesn't work.
Rocket theme will fix the problem - if you pay them to. That means upgrading to the next version of roktwittie. I'm using version 0.9 release on the 15 Jan 2010.) Obviously, they wont tell you how to fix it yourself because then they wont get money for the potential upgrades. I say power to the user, if you can understand the fix, then do it yourself!
[div class="attention" class2="icon"] Backup your {joomla_root}/modules/mod_roktwittie/ folder just in case. If you don't and my programming sucks, too bad for you...[/div]
Fixing it
First you need to edit the file {joomla_root}/modules/mod_roktwittie/roktwittie.class.php:
First, on line 26, change this:
{codecitation class="brush: php; gutter: true;"}
"rate_limit" => "http://twitter.com/account/rate_limit_status.xml",
"status" => "http://twitter.com/users/show.xml?screen_name=",
"friends" => "http://twitter.com/statuses/friends/",
"messages" => "http://twitter.com/statuses/user_timeline/"{/codecitation}to this
{codecitation class="brush: php; gutter: true;"}
"rate_limit" => "http://api.twitter.com/1/account/rate_limit_status.xml", "status" => "http://api.twitter.com/1/statuses/followers/ids.xml?screen_name=", "friends" => "http://api.twitter.com/1/friends/ids.json?screen_name=", "messages" => "http://api.twitter.com/1/statuses/user_timeline/ids.xml?screen_name="
{/codecitation}
So we're basically just changing the url end points.
Then on line 97 comment out the first two lines of the checkError function, and then add a "return false;" at the end:
{codecitation class="brush: php; gutter: true;"}
//if (substr(\(string, 2, 3) != "xml") return "Data appears to be invalid.";
//else return false;
// make sure it always returns false
return false;{/codecitation}
Now on 249, change the following line from
{codecitation class="brush: php; gutter: true;"}
\)httpinfo = \(this->curl(\)this->url[\(type].\)user.((\(type != 'status') ? '.xml' : ''), \)this->raw_data);{/codecitation}
to
{codecitation class="brush: php; gutter: true;"}
\(httpinfo = \)this->curl(\(this->url[\)type].\(user.((\)type != 'status') ? '' : ''), \(this->raw_data);{/codecitation}
Which basically removes the .xml extension from the request to twitter.
And then finally comment out en entire if statement starting on line 252(starts with if (\)this->php_version < "5.1.3")):
{codecitation class="brush: php; gutter: true;"}
/* if (\(this->php_version < "5.1.3") { \)xml[\(count] = new JSimpleXML; \)xml[\(count]->loadString(\)this->raw_data); if (isset(\(xml[\)count]->document->error[0])) { return \(xml[\)count]->document->error[0]->data(); } \(xml[\)count] = \(xml[\)count]->document; switch (\(type) { case "status": \)output[\(user] = \)this->parseStatus(\(xml[\)count]); break; case "friends": \(output[\)user] = \(this->parseFriends(\)xml[\(count]); break; case "messages": \)output[\(user] = \)this->parseMessages(\(xml[\)count]); break; } } else { \(xml = simplexml_load_string(\)this->raw_data); if (isset(\(xml->error)) { return (string)\)xml->error; } switch (\(type) { case "status": \)output[\(user] = \)this->parseStatus(\(xml); break; case "friends": \)output[\(user] = \)this->parseFriends(\(xml); break; case "messages": \)output[\(user] = \)this->parseMessages($xml); break; } }*/{/codecitation}
And then your roktwittie should be working. Or mine is :-)