<?php
/**
 * TweetPull4RSS
 *
 * @author sahearn
 * @version 0.1
 *
 * 16 August 2013
 */

$options getopt("u:"); 
if (empty(
$options) ) { 
    print 
"User id is required. [-u userID]\n\n"
    exit(
1); 

$passedID substr(strip_tags(stripslashes($options['u'])), 050);

require 
'tmhOAuth/tmhOAuth.php';

class 
tmhOAuthExample extends tmhOAuth {
    const 
VERSION '0.1';

    public 
$twitter_userid;
    public 
$twitter_name;
    public 
$twitter_desc;
    public 
$twitter_icon;
    public 
$file;
    
    public function 
__construct($config = array()) {
        
$this->config array_merge(
            array(
                
// change the values below to ones for your application
                
'consumer_key'    => '[your consumer key]',
                
'consumer_secret' => '[your consumer secret]',
                
'token'           => '[your access token]',
                
'secret'          => '[your access secret]',
                
//'bearer'          => 'YOUR_OAUTH2_TOKEN',
                
'user_agent'      => 'TweetPull4RSS ' self::VERSION ' with tmhOAuth ' parent::VERSION ' - //github.com/themattharris/tmhOAuth',
            ),
            
$config
        
);

        
parent::__construct($this->config);
    }
  
    public function 
openOutputFile() {
        
$this->file '/full/path/to/result/rss/file/' $this->twitter_userid '.xml';
    }
  
    public function 
writeHeader() {
        
$output '<?xml version="1.0" encoding="UTF-8"?>' "\n";
        
$output .= '<rss version="2.0"' "\n";
        
$output .= ' xmlns:content="http://purl.org/rss/1.0/modules/content/"' "\n";
        
$output .= ' xmlns:dc="http://purl.org/dc/elements/1.1/"' "\n";
        
$output .= ' >' "\n";

        
$output .= "\t" '<channel>' "\n";
        
$output .= "\t\t" '<title>' $this->twitter_name ' (' $this->twitter_userid ') on Twitter</title>' "\n";
        
$output .= "\t\t" '<link>https://twitter.com/' $this->twitter_userid '</link>' "\n";
        
$output .= "\t\t" '<description>' $this->twitter_desc '</description>' "\n";

        
$output .= "\t\t" '<language>en-US</language>' "\n";

        
$output .= "\t\t" '<image>' "\n";
        
$output .= "\t\t" ' <title>' $this->twitter_name ' (' $this->twitter_userid ') on Twitter</title>' "\n";
        
$output .= "\t\t" ' <url>' $this->twitter_icon '</url>' "\n";
        
$output .= "\t\t" ' <link>https://twitter.com/' $this->twitter_userid '</link>' "\n";
        
$output .= "\t\t" '</image>' "\n";

        
file_put_contents($this->file$output);
    }
  
    public function 
writeFooter() {
        
$output "\t" '</channel>' "\n";
        
$output .= "</rss>";

        
$current file_get_contents($this->file);
        
$current .= $output;
        
file_put_contents($this->file$current);
    }
  
    public function 
Truncate($string$length$stopanywhere=false) {
        
//truncates a string to a certain char length, stopping on a word if not specified otherwise.
        
if (strlen($string) > $length) {
            
//limit hit!
            
$string substr($string,0,($length -3));
            if (
$stopanywhere) {
                
//stop anywhere
                
$string .= '...';
            } else{
                
//stop on a word.
                
$string substr($string,0,strrpos($string,' ')).'...';
            }
        }
        return 
$string;
    }
}

$tmhOAuth = new tmhOAuthExample();

$code $tmhOAuth->request('GET'$tmhOAuth->url('1.1/statuses/user_timeline'), array('screen_name' => $passedID));

$decoded json_decode($tmhOAuth->response['response'], true);

if (isset(
$decoded[0]["created_at"])) {

    
$tmhOAuth->twitter_userid $decoded[0]["user"]["screen_name"];
    
$tmhOAuth->twitter_name $decoded[0]["user"]["name"];
    
$tmhOAuth->twitter_desc $decoded[0]["user"]["description"];
    
$tmhOAuth->twitter_icon $decoded[0]["user"]["profile_image_url"];

    
$tmhOAuth->openOutputFile();
    
$tmhOAuth->writeHeader();

    foreach (
$decoded as $i) {
        
$p explode(" "$i["created_at"]);
        
$dateFinal $p[0] . ', ' $p[2] . ' ' $p[1] . ' ' $p[5] . ' ' $p[3] . ' ' $p[4];

        
$content "\t\t" '<item>' "\n";
//        $content .= "\t\t" . ' <title>' . $tmhOAuth->Truncate($i["text"], 50) . '</title>' . "\n";
        
$content .= "\t\t" ' <title>' $i["text"] . '</title>' "\n";
        
$content .= "\t\t" ' <link>https://twitter.com/' $tmhOAuth->twitter_userid '/status/' $i["id_str"] . '</link>' "\n";
        
$content .= "\t\t" ' <guid isPermaLink="false">https://twitter.com/' $tmhOAuth->twitter_userid '/status/' $i["id_str"] . '</guid>' "\n";
        
$content .= "\t\t" ' <description><![CDATA[' $i["text"] . ']]></description>' "\n";
        
$content .= "\t\t" ' <dc:creator>' $tmhOAuth->twitter_userid '</dc:creator>' "\n";
        
$content .= "\t\t" ' <pubDate>' $dateFinal '</pubDate>' "\n";
        
$content .= "\t\t" '</item>' "\n";

        
$current file_get_contents($tmhOAuth->file);
        
$current .= $content;
        
file_put_contents($tmhOAuth->file$current);
    }

    
$tmhOAuth->writeFooter();

} elseif (isset(
$decoded[0]["errors"])) {
    echo 
"Error: " $decoded[0]["errors"][0]["message"] . "\n\n";
}
?>