File manager - Edit - /home/u300416816/domains/arib7.net/public_html/wp-content/themes/jannah/framework/widgets/twitter.php
Back
<?php if( ! class_exists( 'TIE_LATEST_TWEET_WIDGET' ) ) { /** * Widget API: TIE_LATEST_TWEET_WIDGET class */ class TIE_LATEST_TWEET_WIDGET extends WP_Widget { private $token; public function __construct(){ $widget_ops = array( 'classname' => 'latest-tweets-widget' ); parent::__construct( 'latest_tweets_widget', apply_filters( 'TieLabs/theme_name', 'TieLabs' ) .' - '.esc_html__( 'X (formerly Twitter) - With API Keys', TIELABS_TEXTDOMAIN ), $widget_ops ); } /** * Outputs the content for the widget instance. */ public function widget( $args, $instance ){ extract( $args ); /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); echo ( $before_widget ); if ( ! empty($instance['title']) ){ echo $before_title. '<a href="https://twitter.com/' .$instance['username']. '" rel="nofollow noopener">' .$instance['title']. '</a>'. $after_title; } # Get the tweets if( ! empty( $instance['username'] ) && ! empty( $instance['consumer_key'] ) && ! empty( $instance['consumer_secret'] ) ){ $consumer_key = $instance['consumer_key']; $consumer_secret = $instance['consumer_secret']; $widget_id = $args['widget_id']; $twitter_username = str_replace( '@', '', TIELABS_HELPER::remove_spaces( $instance['username'] ) ); $no_of_tweets = ! empty( $instance['no_of_tweets'] ) ? $instance['no_of_tweets'] : 5; // Get the stored data $this->token = get_option( 'tie_TwitterToken'.$widget_id ); $twitter_data = get_transient( 'list_tweets'.$widget_id ); if( empty( $twitter_data ) ) { if( empty( $this->token ) ){ //preparing credentials $credentials = $consumer_key . ':' . $consumer_secret; $data_to_send = TIELABS_HELPER::api_credentials( $credentials ); // http post arguments $args = array( 'method' => 'POST', 'httpversion' => '1.1', 'blocking' => true, 'body' => array( 'grant_type' => 'client_credentials' ), 'headers' => array( 'Authorization' => 'Basic ' . $data_to_send, 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8', )); add_filter('https_ssl_verify', '__return_false'); $response = wp_remote_post( 'https://api.twitter.com/oauth2/token', $args ); $keys = json_decode(wp_remote_retrieve_body($response)); if( ! empty( $keys->access_token ) ){ update_option( 'tie_TwitterToken'.$widget_id, $keys->access_token ); $this->token = $keys->access_token; } else{ $error = new WP_Error( 'broke', esc_html__( 'API ERROR', TIELABS_TEXTDOMAIN ) ); update_option( 'tie_TwitterToken'.$widget_id, $error ); } } // V 1.1 $api_url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=$twitter_username&count=$no_of_tweets"; $twitter_data = $this->api_request( $api_url ); // V 2.0 if( ! empty( $twitter_data->errors[0]->message ) && strpos( $twitter_data->errors[0]->message, 'v2' ) !== false ){ // Get User ID $api_url = "https://api.twitter.com/2/users/by?usernames=$twitter_username"; $user_data = $this->api_request( $api_url ); if( ! empty( $user_data->data[0]->id ) ){ $api_url = "https://api.twitter.com/2/users/{$user_data->data[0]->id}/tweets?max_results=$no_of_tweets&tweet.fields=created_at"; $twitter_data = $this->api_request( $api_url ); $twitter_data = ! empty( $twitter_data->data ) ? $twitter_data->data : false; } } set_transient( 'list_tweets'.$widget_id, $twitter_data, 2*HOUR_IN_SECONDS ); } if( is_array( $twitter_data ) ){ $i=0; # Enqueue the Sliders Js file if( ! empty( $instance['slider'] ) ) { wp_enqueue_script( 'tie-js-sliders' ); } ?> <ul<?php if( ! empty( $instance['slider'] )) echo' class="tie-slick-slider"';?>> <?php foreach( $twitter_data as $item ){ $tweet = $item->text; $tweet = $this->hyperlinks( $tweet ); $tweet = $this->twitter_users( $tweet ); $permalink = 'http://twitter.com/'. $twitter_username .'/status/'. $item->id; $time = strtotime( $item->created_at ); if ((abs( time() - $time) ) < 86400 ){ $h_time = sprintf( esc_html__( '%s ago', TIELABS_TEXTDOMAIN ), human_time_diff( $time ) ); } else{ $h_time = date( 'Y/m/d', $time); } ?> <li class="slide"> <div class="twitter-icon-wrap"> <span class="tie-icon-twitter" aria-hidden="true"></span> </div> <div class="tweetaya-body"> <p><?php echo ( $tweet ); ?></p> <span class="tweetaya-meta"><a href="<?php echo esc_url( $permalink ) ?>" title="<?php echo date( 'Y/m/d H:i:s', $time ) ?>" target="_blank" rel="nofollow noopener"><?php echo ( $h_time ) ?></a></span> </div> </li> <?php $i++; if ( $i >= $no_of_tweets ){ break; } } ?> </ul> <?php if( ! empty( $instance['slider'] ) ){ ?> <div class="slider-links"> <ul class="tie-slider-nav"></ul><a href="https://twitter.com/<?php echo esc_attr( $twitter_username ) ?>" target="_blank" rel="nofollow noopener" class="button"><?php esc_html_e( 'Follow Us', TIELABS_TEXTDOMAIN ) ?></a> </div> <div class="clearfix"></div> <?php } else{ ?> <a href="https://twitter.com/<?php echo esc_attr( $twitter_username ) ?>" target="_blank" rel="nofollow noopener" class="button fullwidth"><?php esc_html_e( 'Follow us on X', TIELABS_TEXTDOMAIN ) ?></a> <?php } } } else{ TIELABS_HELPER::notice_message( esc_html__( 'Error Can not Get Posts, Incorrect account info.', TIELABS_TEXTDOMAIN ) ); } echo ( $after_widget ); } /** * Handles updating settings for widget instance. */ public function update( $new_instance, $old_instance ){ $id = explode("-", $this->get_field_id("widget_id")); $widget_id = $id[1] . "-" . $id[2]; $instance = $old_instance; $instance['title'] = sanitize_text_field( $new_instance['title'] ); $instance['no_of_tweets'] = absint( $new_instance['no_of_tweets'] ); $instance['username'] = $new_instance['username']; $instance['consumer_key'] = $new_instance['consumer_key']; $instance['consumer_secret'] = $new_instance['consumer_secret']; $instance['slider'] = ! empty( $new_instance['slider'] ) ? 'true' : 0; delete_option( 'tie_TwitterToken'.$widget_id ); delete_transient( 'list_tweets'.$widget_id ); return $instance; } /** * Outputs the settings form for the widget. */ public function form( $instance ){ $defaults = array( 'title' => esc_html__( 'Follow Us', TIELABS_TEXTDOMAIN ) , 'no_of_tweets' => '5' ); $instance = wp_parse_args( (array) $instance, $defaults ); $title = isset( $instance['title'] ) ? $instance['title'] : ''; $username = isset( $instance['username'] ) ? $instance['username'] : ''; $consumer_key = isset( $instance['consumer_key'] ) ? $instance['consumer_key'] : ''; $consumer_secret = isset( $instance['consumer_secret'] ) ? $instance['consumer_secret'] : ''; $no_of_tweets = isset( $instance['no_of_tweets'] ) ? $instance['no_of_tweets'] : 5; $slider = isset( $instance['slider'] ) ? $instance['slider'] : ''; ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', TIELABS_TEXTDOMAIN) ?></label> <input id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" value="<?php echo esc_attr( $title ) ?>" class="widefat" type="text" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'username' ) ); ?>"><?php esc_html_e( 'X Username', TIELABS_TEXTDOMAIN) ?></label> <input id="<?php echo esc_attr( $this->get_field_id( 'username' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'username' ) ); ?>" value="<?php echo esc_attr( $username ) ?>" class="widefat" type="text" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'consumer_key' ) ); ?>"><?php esc_html_e( 'Consumer key:', TIELABS_TEXTDOMAIN) ?> </label> <input id="<?php echo esc_attr( $this->get_field_id( 'consumer_key' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'consumer_key' ) ); ?>" value="<?php echo esc_attr( $consumer_key ) ?>" class="widefat" type="text" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'consumer_secret' ) ); ?>"><?php esc_html_e( 'Consumer secret:', TIELABS_TEXTDOMAIN) ?></label> <input id="<?php echo esc_attr( $this->get_field_id( 'consumer_secret' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'consumer_secret' ) ); ?>" value="<?php echo esc_attr( $consumer_secret ) ?>" class="widefat" type="text" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'no_of_tweets' ) ); ?>"><?php esc_html_e( 'Number of Posts to show:', TIELABS_TEXTDOMAIN) ?></label> <input id="<?php echo esc_attr( $this->get_field_id( 'no_of_tweets' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'no_of_tweets' ) ); ?>" value="<?php echo esc_attr( $no_of_tweets ) ?>" type="number" step="1" min="1" size="3" class="tiny-text" /> </p> <p> <input id="<?php echo esc_attr( $this->get_field_id( 'slider' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'slider' ) ); ?>" value="true" <?php checked( $slider, 'true' ) ?> type="checkbox" /> <label for="<?php echo esc_attr( $this->get_field_id( 'slider' ) ); ?>"><?php esc_html_e( 'Slider Layout?', TIELABS_TEXTDOMAIN) ?></label> </p> <?php } // API Requests private function api_request( $api_url = '' ){ if( ! $this->token || is_wp_error( $this->token ) ){ return false; } add_filter('https_ssl_verify', '__return_false'); $args = array( 'httpversion' => '1.1', 'timeout' => 15, 'blocking' => true, 'headers' => array( 'Authorization' => "Bearer $this->token", )); $api_url = TIELABS_HELPER::remove_spaces( $api_url ); $response = wp_remote_get( $api_url, $args ); return json_decode( wp_remote_retrieve_body( $response ) ); } // Find links and create the hyperlinks private function hyperlinks( $text ){ $text = preg_replace('/\b([a-zA-Z]+:\/\/[\w_.\-]+\.[a-zA-Z]{2,6}[\/\w\-~.?=&%#+$*!]*)\b/i',"<a href=\"$1\" target=\"_blank\" rel=\"nofollow noopener\">$1</a>", $text); $text = preg_replace('/\b(?<!:\/\/)(www\.[\w_.\-]+\.[a-zA-Z]{2,6}[\/\w\-~.?=&%#+$*!]*)\b/i',"<a href=\"http://$1\" target=\"_blank\" rel=\"nofollow noopener\">$1</a>", $text); $text = preg_replace("/\b([a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]*\@[a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]{2,6})\b/i","<a href=\"mailto://$1\" target=\"_blank\" rel=\"nofollow noopener\">$1</a>", $text); $text = preg_replace('/([\.|\,|\:|\?|\?|\>|\{|\(]?)#{1}(\w*)([\.|\,|\:|\!|\?|\>|\}|\)]?)\s/i', "$1<a href=\"https://twitter.com/hashtag/$2\" target=\"_blank\" rel=\"nofollow noopener\">#$2</a>$3 ", $text); return $text; } // Find twitter usernames and link to them private function twitter_users( $text ){ $text = preg_replace('/([\.|\,|\:|\?|\?|\>|\{|\(]?)@{1}(\w*)([\.|\,|\:|\!|\?|\>|\}|\)]?)\s/i', "$1<a href=\"http://twitter.com/$2\" target=\"_blank\" rel=\"nofollow noopener\">@$2</a>$3 ", $text); return $text; } } /** * Register the widget. */ add_action( 'widgets_init', 'tie_latest_tweet_widget_register' ); function tie_latest_tweet_widget_register(){ register_widget( 'TIE_LATEST_TWEET_WIDGET' ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings