!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/5.6.40 

uname -a: Linux cpanel06wh.bkk1.cloud.z.com 2.6.32-954.3.5.lve1.4.80.el6.x86_64 #1 SMP Thu Sep 24
01:42:00 EDT 2020 x86_64
 

uid=851(cp949260) gid=853(cp949260) groups=853(cp949260) 

Safe-mode: OFF (not secure)

/home/cp949260/public_html/phbcoop.com/php/tweet-php/   drwxr-xr-x
Free 236.27 GB of 981.82 GB (24.06%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     TweetPHP.php (10.91 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
 
/**
  * TweetPHP
  *
  * @author Jonathan Nicol @f6design
  * @version 1.0.6
  * @license The MIT License http://opensource.org/licenses/mit-license.php
  * @link  http://f6design.com/journal/2013/06/20/tweetphp-display-tweets-on-your-website-using-php/
  * 
  * Notes:
  * To interact with Twitter's API you will need to create an API KEY:
  * https://dev.twitter.com/apps
  * After creating your API Key you will need to pass the following values to the class
  * constructor: "Consumer key", "Consumer secret", "Access token", "Access token secret"
  * --
  * Options can be overridden by passing an array of key/value pairs to the class
  * constructor. At a minimum you must set the consumer_key, consumer_secret, access_token,
  * access_token_secret and twitter_screen_name options.
  * --
  * You may also need to change the cache_file option to point at a directory/file on your
  * web server. Caching is employed because Twitter rate limits how many times their feeds
  * can be accessed per hour.
  * 
  * Credits:
  * Feed parsing: https://github.com/themattharris/tmhOAuth
  * Hashtag/username parsing: https://github.com/mikenz/twitter-text-php
  */
 
class TweetPHP {
    private 
$tmhOAuth;
    private 
$options;
    private 
$tweet_found false;
    private 
$tweet_count 0;
    private 
$tweet_list;
    private 
$tweet_array;
    private 
$debug_report = array();

    
/**
     * Initialize a new TweetPHP object
     */
    
public function  __construct ($options = array()) {

      
$this->options array_merge(
      array(
          
'consumer_key'          => '',
          
'consumer_secret'       => '',
          
'access_token'          => '',
          
'access_token_secret'   => '',
          
'twitter_screen_name'   => '',
          
'cache_file'            => dirname(__FILE__) . '/cache/twitter.txt'// Where on the server to save the cached formatted tweets
          
'cache_file_raw'        => dirname(__FILE__) . '/cache/twitter-array.txt'// Where on the server to save the cached raw tweets
          
'cachetime'             => 60 60// Seconds to cache feed (1 hour).
          
'tweets_to_display'     => 10// How many tweets to fetch
          
'ignore_replies'        => true// Ignore @replies
          
'ignore_retweets'       => true// Ignore retweets
          
'twitter_style_dates'   => false// Use twitter style dates e.g. 2 hours ago
          
'twitter_date_text'     => array('seconds''minutes''about''hour''ago'),
          
'date_format'           => '%I:%M %p %b %e%O'// The defult date format e.g. 12:08 PM Jun 12th. See: http://php.net/manual/en/function.strftime.php
          
'date_lang'             => null// Language for date e.g. 'fr_FR'. See: http://php.net/manual/en/function.setlocale.php
          
'format'                => 'html'// Can be 'html' or 'array'
          
'twitter_wrap_open'     => '<h2>Latest tweets</h2><ul id="twitter">',
          
'twitter_wrap_close'    => '</ul>',
          
'tweet_wrap_open'       => '<li><span class="status">',
          
'meta_wrap_open'        => '</span><span class="meta"> ',
          
'meta_wrap_close'       => '</span>',
          
'tweet_wrap_close'      => '</li>',
          
'error_message'         => 'Oops, our twitter feed is unavailable right now.',
          
'error_link_text'       => 'Follow us on Twitter',
          
'debug'                 => false
        
),
        
$options
      
);

      if (
$this->options['debug']) {
        
error_reporting(E_ALL);
      }

      if (
$this->options['date_lang']) {
        
setlocale(LC_ALL$this->options['date_lang']);
      }

      
$cache_file_timestamp = ((file_exists($this->options['cache_file']))) ? filemtime($this->options['cache_file']) : 0;
      
$this->add_debug_item('Cache expiration timestamp: ' . (time() - $this->options['cachetime']));
      
$this->add_debug_item('Cache file timestamp: ' $cache_file_timestamp);

      
// Show file from cache if still valid.
      
if (time() - $this->options['cachetime'] < $cache_file_timestamp) {
        
$this->tweet_found true;
        
$this->add_debug_item('Cache file is newer than cachetime.');
        
$this->tweet_list file_get_contents($this->options['cache_file']);  
        
$this->tweet_array unserialize(file_get_contents($this->options['cache_file_raw']));
      } else {
        
$this->add_debug_item("Cache file doesn't exist or is older than cachetime.");
        
$this->fetch_tweets();
      }

      
// In case the feed did not parse or load correctly, show a link to the Twitter account.
      
if (!$this->tweet_found) {
        
$this->add_debug_item('No tweets were found. error_message will be displayed.');
        
$this->tweet_list $this->options['twitter_wrap_open'] . $this->options['tweet_wrap_open'] . $this->options['error_message'] . ' ' $this->options['meta_wrap_open'] .'<a href="http://twitter.com/' $this->options['twitter_screen_name'] . '">' $this->options['error_link_text'] . '</a>' $this->options['meta_wrap_close'] . $this->options['tweet_wrap_close'] . $this->options['twitter_wrap_close'];
        
$this->tweet_array = array('Error fetching or loading tweets');
      }
    }

    
/**
     * Fetch tweets using Twitter API
     */
    
private function fetch_tweets () {
      
$this->add_debug_item('Fetching fresh tweets using Twitter API.');

      require_once(
dirname(__FILE__) . '/lib/tmhOAuth/tmhOAuth.php');
      
      
// Creates a tmhOAuth object.
      
$this->tmhOAuth = new tmhOAuth(array(
        
'consumer_key'    => $this->options['consumer_key'],
        
'consumer_secret' => $this->options['consumer_secret'],
        
'token'           => $this->options['access_token'],
        
'secret'          => $this->options['access_token_secret']
      ));

      
// Request Twitter timeline.
      
$params = array(
        
'screen_name' => $this->options['twitter_screen_name']
      );
      if (
$this->options['ignore_retweets']) {
        
$params['include_rts'] = 'false';
      }
      if (
$this->options['ignore_replies']) {
        
$params['exclude_replies'] = 'true';
      }
      
$response_code $this->tmhOAuth->request('GET'$this->tmhOAuth->url('1.1/statuses/user_timeline.json'), $params);

      
$this->add_debug_item('tmhOAuth response code: ' $response_code);
      
      if (
$response_code == 200) {
        
$data json_decode($this->tmhOAuth->response['response'], true);

        
// Open the twitter wrapping element.
        
$html $this->options['twitter_wrap_open'];

        
// Iterate over tweets.
        
foreach($data as $tweet) {
          
$html .=  $this->parse_tweet($tweet);
          
// If we have processed enough tweets, stop.
          
if ($this->tweet_count >= $this->options['tweets_to_display']){
            break;
          }
        }

        
// Close the twitter wrapping element.
        
$html .= $this->options['twitter_wrap_close'];

        
// Save the formatted tweet list to a file. 
        
$file fopen($this->options['cache_file'], 'w');
        
fwrite($file$html); 
        
fclose($file);

        
// Save the raw data array to a file. 
        
$file fopen($this->options['cache_file_raw'], 'w');
        
fwrite($fileserialize($data)); 
        
fclose($file);

        
$this->tweet_list $html;
        
$this->tweet_array $data;
      } else {
        
$this->add_debug_item('Bad tmhOAuth response code.');
      }
    }

    
/**
     * Parse an individual tweet
     */
    
private function parse_tweet ($tweet) {
      
$this->tweet_found true;
      
$this->tweet_count++;

      
// Format tweet text
      
$tweet_text_raw $tweet['text'];
      
$tweet_text $this->autolink($tweet_text_raw);

      
// Tweet date is in GMT. Convert to UNIX timestamp in the local time of the tweeter.
      
$utc_offset $tweet['user']['utc_offset'];
      
$tweet_time strtotime($tweet['created_at']) + $utc_offset;

      if (
$this->options['twitter_style_dates']){
        
// Convert tweet timestamp into Twitter style date ("About 2 hours ago")
        
$current_time time();
        
$time_diff abs($current_time $tweet_time);
        switch (
$time_diff) {
          case (
$time_diff 60):
            
$display_time $time_diff ' ' $this->options['twitter_date_text'][0] . ' ' $this->options['twitter_date_text'][4];
            break;      
          case (
$time_diff >= 60 && $time_diff 3600):
            
$min floor($time_diff/60);
            
$display_time $min ' ' $this->options['twitter_date_text'][1] . ' ' $this->options['twitter_date_text'][4];
            break;      
          case (
$time_diff >= 3600 && $time_diff 86400):
            
$hour floor($time_diff/3600);
            
$display_time $this->options['twitter_date_text'][2] . ' ' $hour ' ' $this->options['twitter_date_text'][3];
            if (
$hour 1){ $display_time .= 's'; }
            
$display_time .= ' ' $this->options['twitter_date_text'][4];
            break;          
          default: 
            
$format str_replace('%O'date('S'$tweet_time), $this->options['date_format']);
            
$display_time strftime($format$tweet_time);
            break;
        }
      } else {
        
$format str_replace('%O'date('S'$tweet_time), $this->options['date_format']);
        
$display_time strftime($format$tweet_time);
      }

      
$href 'http://twitter.com/' $tweet['user']['screen_name'] . '/status/' $tweet['id_str'];
      return 
$this->options['tweet_wrap_open'] . $tweet_text $this->options['meta_wrap_open'] . '<a href="' $href '">' $display_time '</a>' $this->options['meta_wrap_close'] . $this->options['tweet_wrap_close'];
    }

    
/**
     * Add a debuggin item.
     */
    
private function add_debug_item ($msg) {
      
array_push($this->debug_report$msg);
    }

    
/**
     * Get debugging information as an HTML list.
     */
    
public function get_debug_list () {
      
$debug_list '<ul>';
      foreach(
$this->debug_report as $debug_item) {
        
$debug_list .= '<li>' $debug_item '</li>';
      }
      
$debug_list .= '</ul>';
      return 
$debug_list;
    }

    
/**
     * Get debugging information as an array.
     */
    
public function get_debug_array () {
      return 
$this->debug_report;
    }

    
/**
     * Helper function to convert usernames, hashtags and URLs
     * in a tweet to HTML links.
     */
    
public function autolink ($tweet) {
      require_once(
dirname(__FILE__) . '/lib/twitter-text-php/lib/Twitter/Autolink.php');

      
$autolinked_tweet Twitter_Autolink::create($tweetfalse)
        ->
setNoFollow(false)->setExternal(false)->setTarget('')
        ->
setUsernameClass('')
        ->
setHashtagClass('')
        ->
setURLClass('')
        ->
addLinks();

      return 
$autolinked_tweet;
    }

    
/**
     * Get tweets as HTML list
     */
    
public function get_tweet_list () {
      if (
$this->options['debug']) {
        return 
$this->get_debug_list() . $this->tweet_list;
      } else {
        return 
$this->tweet_list;
      }
    }

    
/**
     * Get tweets as an array
     */
    
public function get_tweet_array () {
      return 
$this->tweet_array;
    }

}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0129 ]--