first commit
This commit is contained in:
@ -0,0 +1,181 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Goodlayers Twitter Widget
|
||||
* Plugin URI: http://goodlayers.com/
|
||||
* Description: A widget that show feeds from twitter.
|
||||
* Version: 1.0
|
||||
* Author: Goodlayers
|
||||
* Author URI: http://www.goodlayers.com
|
||||
*
|
||||
*/
|
||||
|
||||
add_action( 'widgets_init', 'twitter_widget' );
|
||||
function twitter_widget() {
|
||||
register_widget( 'Twitter' );
|
||||
}
|
||||
|
||||
class Twitter extends WP_Widget {
|
||||
|
||||
// Initialize the widget
|
||||
function Twitter() {
|
||||
parent::WP_Widget('twitter-widget', __('Twitter (Goodlayers)','gdl_back_office'),
|
||||
array('description' => __('A widget that show Twitter feeds.', 'gdl_back_office')));
|
||||
}
|
||||
|
||||
// Output of the widget
|
||||
function widget( $args, $instance ) {
|
||||
extract( $args );
|
||||
|
||||
$title = apply_filters('widget_title', $instance['title'] );
|
||||
$twitter_username = $instance['twitter_username'];
|
||||
$show_num = $instance['show_num'];
|
||||
$consumer_key = $instance['consumer_key'];
|
||||
$consumer_secret = $instance['consumer_secret'];
|
||||
$access_token = $instance['access_token'];
|
||||
$access_token_secret = $instance['access_token_secret'];
|
||||
$cache_time = $instance['cache_time'];
|
||||
|
||||
// Opening of widget
|
||||
echo $before_widget;
|
||||
|
||||
// Open of title tag
|
||||
if ( $title ){
|
||||
echo $before_title . $title . $after_title;
|
||||
}
|
||||
|
||||
$last_cache_time = get_option('gdl_twitter_widget_last_cache_time', 0);
|
||||
$diff = time() - $last_cache_time;
|
||||
$crt = $cache_time * 3600;
|
||||
if(empty($last_cache_time) || $diff >= $crt){
|
||||
|
||||
$connection = getConnectionWithAccessToken($consumer_key, $consumer_secret, $access_token, $access_token_secret);
|
||||
$tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$twitter_username."&count=" . $show_num) 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://dev.twitter.com/apps" target="_blank">here</a>!' . $after_widget;
|
||||
}else{
|
||||
echo '<strong>'.$tweets->errors[0]->message.'</strong>' . $after_widget;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
$tweets_data = array();
|
||||
for($i = 0;$i <= count($tweets); $i++){
|
||||
if(!empty($tweets[$i])){
|
||||
$tweets_data[$i]['created_at'] = $tweets[$i]->created_at;
|
||||
$tweets_data[$i]['text'] = $tweets[$i]->text;
|
||||
$tweets_data[$i]['status_id'] = $tweets[$i]->id_str;
|
||||
}
|
||||
}
|
||||
|
||||
update_option('gdl_twitter_widget_tweets',serialize($tweets_data));
|
||||
update_option('gdl_twitter_widget_last_cache_time',time());
|
||||
}else{
|
||||
$tweets_data = maybe_unserialize(get_option('gdl_twitter_widget_tweets'));
|
||||
}
|
||||
|
||||
echo '<div class="twitter-whole">';
|
||||
echo '<ul id="twitter_update_list">';
|
||||
foreach( $tweets_data as $each_tweet ){
|
||||
echo '<li>';
|
||||
echo '<span>' . convert_links($each_tweet['text']) . '</span>';
|
||||
echo '<a target="_blank" href="http://twitter.com/'.$twitter_username.'/statuses/'.$each_tweet['status_id'].'">'.relative_time($each_tweet['created_at']).'</a>';
|
||||
echo '</li>';
|
||||
}
|
||||
echo '</ul>';
|
||||
echo '</div>';
|
||||
|
||||
// Closing of widget
|
||||
echo $after_widget;
|
||||
}
|
||||
|
||||
// Widget Form
|
||||
function form( $instance ) {
|
||||
if ( $instance ) {
|
||||
$title = esc_attr( $instance[ 'title' ] );
|
||||
$twitter_username = esc_attr( $instance[ 'twitter_username' ] );
|
||||
$show_num = esc_attr( $instance[ 'show_num' ] );
|
||||
$consumer_key = esc_attr( $instance[ 'consumer_key' ] );
|
||||
$consumer_secret = esc_attr( $instance[ 'consumer_secret' ] );
|
||||
$access_token = esc_attr( $instance[ 'access_token' ] );
|
||||
$access_token_secret = esc_attr( $instance[ 'access_token_secret' ] );
|
||||
$cache_time = esc_attr( $instance[ 'cache_time' ] );
|
||||
} else {
|
||||
$title = '';
|
||||
$twitter_username = '';
|
||||
$show_num = '5';
|
||||
$consumer_key = '';
|
||||
$consumer_secret = '';
|
||||
$access_token = '';
|
||||
$cache_time = '1';
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- Text Input -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title :', 'gdl_back_office' ); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Twitter Username -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id('twitter_username'); ?>"><?php _e( 'Twitter username :', 'gdl_back_office' ); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id('twitter_username'); ?>" name="<?php echo $this->get_field_name('twitter_username'); ?>" type="text" value="<?php echo $twitter_username; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Show Num -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'show_num' ); ?>"><?php _e('Show Count :', 'gdl_back_office'); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'show_num' ); ?>" name="<?php echo $this->get_field_name( 'show_num' ); ?>" type="text" value="<?php echo $show_num; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Consumer Key -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'consumer_key' ); ?>"><?php _e('Consumer Key :', 'gdl_back_office'); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'consumer_key' ); ?>" name="<?php echo $this->get_field_name( 'consumer_key' ); ?>" type="text" value="<?php echo $consumer_key; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Consumer Secret -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'consumer_secret' ); ?>"><?php _e('Consumer Secret :', 'gdl_back_office'); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'consumer_secret' ); ?>" name="<?php echo $this->get_field_name( 'consumer_secret' ); ?>" type="text" value="<?php echo $consumer_secret; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Access Token -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'access_token' ); ?>"><?php _e('Access Token :', 'gdl_back_office'); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'access_token' ); ?>" name="<?php echo $this->get_field_name( 'access_token' ); ?>" type="text" value="<?php echo $access_token; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Access Token Secret -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'access_token_secret' ); ?>"><?php _e('Access Token Secret :', 'gdl_back_office'); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'access_token_secret' ); ?>" name="<?php echo $this->get_field_name( 'access_token_secret' ); ?>" type="text" value="<?php echo $access_token_secret; ?>" />
|
||||
</p>
|
||||
|
||||
<!-- Cache Time -->
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'cache_time' ); ?>"><?php _e('Cache Time (hour) :', 'gdl_back_office'); ?></label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'cache_time' ); ?>" name="<?php echo $this->get_field_name( 'cache_time' ); ?>" type="text" value="<?php echo $cache_time; ?>" />
|
||||
</p>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
// Update the widget
|
||||
function update( $new_instance, $old_instance ) {
|
||||
$instance = $old_instance;
|
||||
$instance['title'] = strip_tags( $new_instance['title'] );
|
||||
$instance['twitter_username'] = strip_tags( $new_instance['twitter_username'] );
|
||||
$instance['show_num'] = strip_tags( $new_instance['show_num'] );
|
||||
$instance['consumer_key'] = strip_tags( $new_instance['consumer_key'] );
|
||||
$instance['consumer_secret'] = strip_tags( $new_instance['consumer_secret'] );
|
||||
$instance['access_token'] = strip_tags( $new_instance['access_token'] );
|
||||
$instance['access_token_secret'] = strip_tags( $new_instance['access_token_secret'] );
|
||||
$instance['cache_time'] = strip_tags( $new_instance['cache_time'] );
|
||||
return $instance;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Reference in New Issue
Block a user