text ) ) return false; return "\033[".USER_COLOUR."m".$xml->user->screen_name."\033[0m: ".$xml->text."\n"; } /** * Follow a user * @param string $user user name to follow * @return mixed false on fail, screen name on success */ function follow( $user ){ $url = "http://api.twitter.com/1/friendships/create.xml?screen_name=".urlencode($user); $session = createSession( $url ); curl_setopt ( $session, CURLOPT_POST, 1); $result = curl_exec ( $session ); curl_close( $session ); $xml = @simplexml_load_string( $result ); if( isset( $xml->screen_name ) ) return $xml->screen_name; if( isset( $xml->error ) ){ if( strstr( $xml->error, "already on your list" ) !== false ) return true; } return false; } /** * Unfollow a user * @param string $user user name to unfollow * @return bool success */ function unfollow( $user ){ $url = "http://api.twitter.com/1/friendships/destroy.xml?screen_name=".urlencode($user); $session = createSession( $url ); curl_setopt ( $session, CURLOPT_POST, 1); $result = curl_exec ( $session ); curl_close( $session ); $xml = @simplexml_load_string( $result ); if( !isset( $xml->screen_name ) ) return false; return true; } /** * Check istwitterdown.com to see if twitter is down * @return bool */ function isUp(){ ini_set('default_socket_timeout', 3 ); $page = @file_get_contents( "http://istwitterdown.com/" ); if( !$page ){ echo "istwitterdown.com is down! The irony!\n"; return false; } if( preg_match( "/

]+>([^<]+)<\/a><\/h1>/", $page, $m ) ){ return strtolower( $m[1] ) == "no"; }else{ return false; } } /** * Send a message to a twitter user * @param string $to Name of the user to send to * @param string $message * @return string */ function sendMessage( $to, $message ){ $url = "http://twitter.com/direct_messages/new.xml"; $session = createSession( $url ); $message = urlencode( $message ); $to = urlencode( $to ); curl_setopt ( $session, CURLOPT_POST, 1); curl_setopt ( $session, CURLOPT_POSTFIELDS,"user=".$to."&text=".$message); $result = curl_exec( $session ); curl_close( $session ); $xml = @simplexml_load_string( $result ); if( !isset( $xml->text ) ) return false; $time = strtotime( $xml->created_at ); return "\033[".USER_COLOUR."m".$xml->sender_screen_name."\033[0m => \033[".USER_COLOUR."m".$xml->recipient_screen_name."\033[0m: ".$xml->text." \033[".DATE_COLOUR."m (".date("jS M, H:i",$time).")\033[0m\n"; } /** * Get a list of the sent direct messages * @return string ANSI formatted messages */ function getSentMessages(){ return getMessages( "http://twitter.com/direct_messages/sent.xml" ); } /** * Get an ascii image of the Fail Whale * @return string */ function getFailWhale(){ return WHALE; } /** * Get messages sent (or from) to the auth'd user * @param string $url The API URL of the messages (can be overidden to get sent messages) * @return string ANSI formatted messages * @see getSentMessages */ function getMessages( $url="http://twitter.com/direct_messages.xml" ){ // $url = "http://twitter.com/direct_messages.xml"; $session = createSession( $url ); $result = curl_exec( $session ); curl_close( $session ); $xml = @simplexml_load_string( $result ); $str = ""; if( !isset( $xml->text ) ) return false; // foreach( $xml->direct_message as $message ){ for( $i=sizeof( $xml->direct_message )-1; $i>=0; $i-- ){ $message = $xml->direct_message[$i]; $time = strtotime( $message->created_at ); $str .= "\033[".USER_COLOUR."m".$message->sender_screen_name."\033[0m => \033[".USER_COLOUR."m".$message->recipient_screen_name."\033[0m: ".html_entity_decode( $message->text )." \033[".DATE_COLOUR."m (".date("jS M, H:i",$time).")\033[0m\n"; } return $str; } /** * List your reply bucket * @return string */ function getReplies(){ $url = "http://twitter.com/statuses/replies.xml"; $session = createSession( $url ); $result = curl_exec ( $session ); curl_close( $session ); $xml = @simplexml_load_string( $result ); if( !isset( $xml->status ) ) return false; $str = ""; // foreach( $xml->status as $status ){ for( $i=sizeof( $xml->status )-1; $i>=0; $i-- ){ $status = $xml->status[$i]; $time = strtotime($status->created_at); $str .= "\033[".USER_COLOUR."m".$status->user->screen_name."\033[0m: ".html_entity_decode( $status->text )."\033[".DATE_COLOUR."m (".date("jS M, H:i",$time).")\033[0m\n"; } return $str; } /** * Get your friends timeline * @return string */ function getFriendsTimeline(){ // Get status list // echo "Getting friends timeline...\n"; $url = "http://twitter.com/statuses/friends_timeline.xml"; $session = createSession( $url ); $result = curl_exec ( $session ); curl_close( $session ); $xml = @simplexml_load_string( $result ); if( !isset( $xml->status ) ) return false; $str = ""; for( $i=sizeof( $xml->status )-1; $i>=0; $i-- ){ $status = $xml->status[$i]; // foreach( $xml->status as $status ){ $time = strtotime( $status->created_at ); $str .= "\033[".USER_COLOUR."m".$status->user->screen_name."\033[0m: ".html_entity_decode( $status->text )."\033[".DATE_COLOUR."m (".date("jS M, H:i",$time).")\033[0m\n"; } return $str; } /** * Create a CURL session with twitter.com credentials * @return resource The curl session returned by curl_init() */ function createSession( $url ){ $session = curl_init(); curl_setopt ( $session, CURLOPT_URL, $url ); curl_setopt ( $session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); curl_setopt ( $session, CURLOPT_HEADER, false ); curl_setopt ( $session, CURLOPT_USERPWD, TWITTER_EMAIL. ":" . TWITTER_PASSWORD ); curl_setopt ( $session, CURLOPT_RETURNTRANSFER, 1 ); return $session; } ?>