/
var
/
www
/
barefootlaw.org
/
wp-content
/
plugins
/
recent-tweets-widget
/
Upload File
HOME
<?php // widget function class tp_widget_recent_tweets extends WP_Widget { public function __construct() { parent::__construct( 'tp_widget_recent_tweets', // Base ID '* Recent Tweets', // Name array( 'description' => __( 'Display recent tweets', TP_RECENT_TEXT_DOMAIN ), ) // Args ); } //widget output public function widget($args, $instance) { extract($args); if(!empty($instance['title'])){ $title = apply_filters( 'widget_title', $instance['title'] ); } echo $before_widget; if ( ! empty( $title ) ){ echo $before_title . $title . $after_title; } //check settings and die if not set if(empty($instance['consumerkey']) || empty($instance['consumersecret']) || empty($instance['accesstoken']) || empty($instance['accesstokensecret']) || empty($instance['cachetime']) || empty($instance['username'])){ echo '<strong>'.__('Please fill all widget settings!',TP_RECENT_TEXT_DOMAIN).'</strong>' . $after_widget; return; } //check if cache needs update $tp_twitter_plugin_last_cache_time = get_option('tp_twitter_plugin_last_cache_time'); $diff = time() - $tp_twitter_plugin_last_cache_time; $crt = $instance['cachetime'] * 3600; // yes, it needs update if($diff >= $crt || empty($tp_twitter_plugin_last_cache_time)){ if(!require_once('twitteroauth.php')){ echo '<strong>'.__('Couldn\'t find twitteroauth.php!',TP_RECENT_TEXT_DOMAIN).'</strong>' . $after_widget; return; } function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) { $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret); return $connection; } $connection = getConnectionWithAccessToken($instance['consumerkey'], $instance['consumersecret'], $instance['accesstoken'], $instance['accesstokensecret']); $tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$instance['username']."&count=10&exclude_replies=".$instance['excludereplies']) or die('Couldn\'t retrieve tweets! Wrong username?'); if(!empty($tweets->errors)){ if($tweets->errors[0]->message == 'Invalid or expired token'){ echo '<strong>'.$tweets->errors[0]->message.'!</strong><br />' . __('You\'ll need to regenerate it <a href="https://apps.twitter.com/" target="_blank">here</a>!',TP_RECENT_TEXT_DOMAIN) . $after_widget; }else{ echo '<strong>'.$tweets->errors[0]->message.'</strong>' . $after_widget; } return; } $tweets_array = array(); for($i = 0;$i <= count($tweets); $i++){ if(!empty($tweets[$i])){ $tweets_array[$i]['created_at'] = $tweets[$i]->created_at; //clean tweet text $tweets_array[$i]['text'] = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $tweets[$i]->text); if(!empty($tweets[$i]->id_str)){ $tweets_array[$i]['status_id'] = $tweets[$i]->id_str; } } } //save tweets to wp option update_option('tp_twitter_plugin_tweets',serialize($tweets_array)); update_option('tp_twitter_plugin_last_cache_time',time()); echo '<!-- twitter cache has been updated! -->'; } $tp_twitter_plugin_tweets = maybe_unserialize(get_option('tp_twitter_plugin_tweets')); if(!empty($tp_twitter_plugin_tweets) && is_array($tp_twitter_plugin_tweets)){ print ' <div class="tp_recent_tweets"> <ul>'; $fctr = '1'; foreach($tp_twitter_plugin_tweets as $tweet){ if(!empty($tweet['text'])){ if(empty($tweet['status_id'])){ $tweet['status_id'] = ''; } if(empty($tweet['created_at'])){ $tweet['created_at'] = ''; } print '<li><span>'.tp_convert_links($tweet['text']).'</span><a class="twitter_time" target="_blank" href="http://twitter.com/'.$instance['username'].'/statuses/'.$tweet['status_id'].'">'.tp_relative_time($tweet['created_at']).'</a></li>'; if($fctr == $instance['tweetstoshow']){ break; } $fctr++; } } print ' </ul>'; // If we're being supported display the link $tp_twitter_plugin_options = get_option('tp_twitter_plugin_options'); if ($tp_twitter_plugin_options['support-us'] == 1) { print '<p><i>Check out the <a href="https://wordpress.org/plugins/sumome/" target="_blank">SumoMe</a> plugin</i></p>'; } print '</div>'; }else{ print ' <div class="tp_recent_tweets"> ' . __('<b>Error!</b> Couldn\'t retrieve tweets for some reason!',TP_RECENT_TEXT_DOMAIN) . ' </div>'; } echo $after_widget; } //save widget settings public function update($new_instance, $old_instance) { $instance = array(); $instance['title'] = strip_tags( $new_instance['title'] ); $instance['consumerkey'] = strip_tags( $new_instance['consumerkey'] ); $instance['consumersecret'] = strip_tags( $new_instance['consumersecret'] ); $instance['accesstoken'] = strip_tags( $new_instance['accesstoken'] ); $instance['accesstokensecret'] = strip_tags( $new_instance['accesstokensecret'] ); $instance['cachetime'] = strip_tags( $new_instance['cachetime'] ); $instance['username'] = strip_tags( $new_instance['username'] ); $instance['tweetstoshow'] = strip_tags( $new_instance['tweetstoshow'] ); $instance['excludereplies'] = strip_tags( $new_instance['excludereplies'] ); if($old_instance['username'] != $new_instance['username']){ delete_option('tp_twitter_plugin_last_cache_time'); } return $instance; } //widget settings form public function form($instance) { $defaults = array( 'title' => '', 'consumerkey' => '', 'consumersecret' => '', 'accesstoken' => '', 'accesstokensecret' => '', 'cachetime' => '', 'username' => '', 'tweetstoshow' => '' ); $instance = wp_parse_args( (array) $instance, $defaults ); echo ' <p>Get your API keys & tokens at:<br /><a href="https://apps.twitter.com/" target="_blank">https://apps.twitter.com/</a></p> <p><i>Check out our <a href="https://wordpress.org/plugins/sumome/" target="_blank">SumoMe</a> plugin</i></p> <p><label>' . __('Title:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'title' ).'" id="'.$this->get_field_id( 'title' ).'" value="'.esc_attr($instance['title']).'" class="widefat" /></p> <p><label>' . __('Consumer Key:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'consumerkey' ).'" id="'.$this->get_field_id( 'consumerkey' ).'" value="'.esc_attr($instance['consumerkey']).'" class="widefat" /></p> <p><label>' . __('Consumer Secret:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'consumersecret' ).'" id="'.$this->get_field_id( 'consumersecret' ).'" value="'.esc_attr($instance['consumersecret']).'" class="widefat" /></p> <p><label>' . __('Access Token:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'accesstoken' ).'" id="'.$this->get_field_id( 'accesstoken' ).'" value="'.esc_attr($instance['accesstoken']).'" class="widefat" /></p> <p><label>' . __('Access Token Secret:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'accesstokensecret' ).'" id="'.$this->get_field_id( 'accesstokensecret' ).'" value="'.esc_attr($instance['accesstokensecret']).'" class="widefat" /></p> <p><label>' . __('Cache Tweets in every:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'cachetime' ).'" id="'.$this->get_field_id( 'cachetime' ).'" value="'.esc_attr($instance['cachetime']).'" class="small-text" /> hours</p> <p><label>' . __('Twitter Username:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="text" name="'.$this->get_field_name( 'username' ).'" id="'.$this->get_field_id( 'username' ).'" value="'.esc_attr($instance['username']).'" class="widefat" /></p> <p><label>' . __('Tweets to display:',TP_RECENT_TEXT_DOMAIN) . '</label> <select type="text" name="'.$this->get_field_name( 'tweetstoshow' ).'" id="'.$this->get_field_id( 'tweetstoshow' ).'">'; $i = 1; for($i; $i <= 10; $i++){ echo '<option value="'.$i.'"'; if($instance['tweetstoshow'] == $i){ echo ' selected="selected"'; } echo '>'.$i.'</option>'; } echo ' </select></p> <p><label>' . __('Exclude replies:',TP_RECENT_TEXT_DOMAIN) . '</label> <input type="checkbox" name="'.$this->get_field_name( 'excludereplies' ).'" id="'.$this->get_field_id( 'excludereplies' ).'" value="true"'; if(!empty($instance['excludereplies']) && esc_attr($instance['excludereplies']) == 'true'){ print ' checked="checked"'; } print ' /></p>'; } } //convert links to clickable format if (!function_exists('tp_convert_links')) { function tp_convert_links($status,$targetBlank=true,$linkMaxLen=250){ // the target $target=$targetBlank ? " target=\"_blank\" " : ""; // convert link to url $status = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[A-Z0-9+&@#\/%=~_|]/i', '<a href="\0" target="_blank">\0</a>', $status); // convert @ to follow $status = preg_replace("/(@([_a-z0-9\-]+))/i","<a href=\"http://twitter.com/$2\" title=\"Follow $2\" $target >$1</a>",$status); // convert # to search $status = preg_replace("/(#([_a-z0-9\-]+))/i","<a href=\"https://twitter.com/search?q=$2\" title=\"Search $1\" $target >$1</a>",$status); // return the status return $status; } } //convert dates to readable format if (!function_exists('tp_relative_time')) { function tp_relative_time($a) { //get current timestampt $b = strtotime('now'); //get timestamp when tweet created $c = strtotime($a); //get difference $d = $b - $c; //calculate different time values $minute = 60; $hour = $minute * 60; $day = $hour * 24; $week = $day * 7; if(is_numeric($d) && $d > 0) { //if less then 3 seconds if($d < 3) return __('right now',TP_RECENT_TEXT_DOMAIN); //if less then minute if($d < $minute) return floor($d) . __(' seconds ago',TP_RECENT_TEXT_DOMAIN); //if less then 2 minutes if($d < $minute * 2) return __('about 1 minute ago',TP_RECENT_TEXT_DOMAIN); //if less then hour if($d < $hour) return floor($d / $minute) . __(' minutes ago',TP_RECENT_TEXT_DOMAIN); //if less then 2 hours if($d < $hour * 2) return __('about 1 hour ago',TP_RECENT_TEXT_DOMAIN); //if less then day if($d < $day) return floor($d / $hour) . __(' hours ago',TP_RECENT_TEXT_DOMAIN); //if more then day, but less then 2 days if($d > $day && $d < $day * 2) return __('yesterday',TP_RECENT_TEXT_DOMAIN); //if less then year if($d < $day * 365) return floor($d / $day) . __(' days ago',TP_RECENT_TEXT_DOMAIN); //else return more than a year return __('over a year ago',TP_RECENT_TEXT_DOMAIN); } } } // register widget function register_tp_twitter_widget(){ register_widget('tp_widget_recent_tweets'); } add_action('widgets_init', 'register_tp_twitter_widget', 1) ?>