function ut_twitter_rotator($atts, $content = null) { extract(shortcode_atts(array('avatar' => 'off', 'width' => '', 'count' => '3', 'speed' => '9000', 'class' => '', 'last' => 'false', '' => ''), $atts)); /* grid settings */ $grid = array('third' => 'ut-one-third', 'fourth' => 'ut-one-fourth', 'half' => 'ut-one-half', 'fullwdith' => ''); $last = $last == 'true' ? 'ut-column-last' : ''; /* fallback */ $gridwidth = !empty($grid[$width]) ? $grid[$width] : ''; $twitter_options = is_array(get_option('ut_twitter_options')) ? get_option('ut_twitter_options') : array(); /** Set access tokens here - see: https://dev.twitter.com/apps/ **/ $settings = array('oauth_access_token' => $twitter_options['oauth_access_token'], 'oauth_access_token_secret' => $twitter_options['oauth_access_token_secret'], 'consumer_key' => $twitter_options['consumer_key'], 'consumer_secret' => $twitter_options['consumer_secret']); if (empty($twitter_options['oauth_access_token']) || empty($twitter_options['oauth_access_token_secret']) || empty($twitter_options['consumer_key']) || empty($twitter_options['consumer_secret'])) { return '<div class="ut-alert themecolor">' . __('Please make sure you have entered all necessary Twitter API Keys under Dashboard -> Settings -> Twitter', 'ut_shortcodes') . '</div>'; } else { /* config */ $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; $getfield = '?count=' . $count; $requestMethod = 'GET'; $twitter = new TwitterAPIExchange($settings); $tweets = $twitter->setGetfield($getfield)->buildOauth($url, $requestMethod)->performRequest(); $tweets = json_decode($tweets); /* create twitter feed option */ if (!get_option('ut_twitter_feed')) { add_option('ut_twitter_feed'); } /* update feeds */ if (!empty($tweets) && !isset($tweets->errors[0]->code)) { update_option('ut_twitter_feed', $tweets); } /* we have an error - let's use the cached feeds */ if (empty($tweets) || isset($tweets->errors[0]->code)) { $tweets = get_option('ut_twitter_feed'); } if (empty($tweets)) { return '<div class="ut-alert themecolor">' . __('An Error has occured, no Twitter Feeds are available', 'ut_shortcodes') . '</div>'; } else { /* set unique ID for this rotator */ $id = uniqid("ut_tweet_"); /* output for slider without avatar */ if ($avatar == 'off') { $script = ' <script type="text/javascript"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ $("#' . $id . '").flexslider({ useCSS: false, animation: "fade", directionNav:true, controlNav:false, smoothHeight: false, animationLoop:true, slideshow: false, slideshowSpeed: ' . $speed . ', prevText: "", nextText: "" }); }); })(jQuery); /* ]]> */ </script>'; $quote_rotator = '<div class="ut-testimonials ut-twitter-rotator ' . $gridwidth . ' ' . $last . '">'; $quote_rotator .= '<div class="ut-rotate-quote-alt flexslider" id="' . $id . '">'; $quote_rotator .= '<ul class="slides">'; foreach ($tweets as $tweet) { $tweetdate = new DateTime($tweet->created_at); $tweetdate = strtotime($tweetdate->format('Y-m-d H:i:s')); $currentdate = strtotime(date('Y-m-d H:i:s')); $days = ut_twitter_time_ago($tweetdate, $currentdate); $quote_rotator .= '<li><i class="ut-rq-icon-tw fa fa-twitter fa-3x"></i><h2>' . ut_twitterify($tweet->text) . '</h2><span class="ut-quote-name">' . $tweet->user->name . __(' about ', 'ut_shortcodes') . $days . '</span></li>'; } $quote_rotator .= '</ul>'; $quote_rotator .= '</div>'; $quote_rotator .= '</div>'; return $script . $quote_rotator; } /* output for slider with avatar */ if ($avatar == 'on') { $script = ' <script type="text/javascript"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ $("#avatarSlider_' . $id . '").flexslider({ animation: "fade", directionNav:false, controlNav:false, smoothHeight: true, animationLoop:true, slideshow: false, slideshowSpeed: 3000, slideToStart: 0, prevText: "", nextText: "" }); $("#quoteSlider_' . $id . '").flexslider({ animation: "slide", directionNav:true, controlNav:false, slideshow: false, smoothHeight: true, animationLoop:true, sync: "#avatarSlider_' . $id . '", slideshowSpeed: 3000, slideToStart: 0, prevText: "", nextText: "" }); }); })(jQuery); /* ]]> */ </script>'; $quote_rotator = '<div class="ut-testimonials ut-twitter-rotator ' . $gridwidth . ' ' . $last . '">'; $quote_rotator .= '<div class="ut-rotate-twitter-avatar flexslider" id="avatarSlider_' . $id . '">'; $quote_rotator .= '<ul class="slides">'; foreach ($tweets as $tweet) { $avatar = preg_replace('/_normal/', '', $tweet->user->profile_image_url); $quote_rotator .= '<li><img alt="' . $tweet->user->name . '" class="ut-twitter-avatar" src="' . $avatar . '" /></li>'; } $quote_rotator .= '</ul>'; $quote_rotator .= '</div>'; $quote_rotator .= '<div class="ut-rotate-quote" id="quoteSlider_' . $id . '">'; $quote_rotator .= '<ul class="slides">'; foreach ($tweets as $tweet) { $tweetdate = new DateTime($tweet->created_at); $tweetdate = strtotime($tweetdate->format('Y-m-d H:i:s')); $currentdate = strtotime(date('Y-m-d H:i:s')); $days = ut_twitter_time_ago($tweetdate, $currentdate); $quote_rotator .= '<li><h3 class="ut-quote-comment">' . ut_twitterify($tweet->text) . '</h3><span class="ut-quote-name">' . $tweet->user->name . __(' about ', 'ut_shortcodes') . $days . '</span></li>'; } $quote_rotator .= '</ul>'; $quote_rotator .= '</div>'; $quote_rotator .= '</div>'; return $script . $quote_rotator; } } } }
function widget($args, $instance) { $twitter_options = is_array(get_option('ut_twitter_options')) ? get_option('ut_twitter_options') : array(); extract($args); extract($instance); $title = apply_filters($this->slug, $title); if (empty($count)) { $count = 3; } /** Set access tokens here - see: https://dev.twitter.com/apps/ **/ $settings = array('oauth_access_token' => $twitter_options['oauth_access_token'], 'oauth_access_token_secret' => $twitter_options['oauth_access_token_secret'], 'consumer_key' => $twitter_options['consumer_key'], 'consumer_secret' => $twitter_options['consumer_secret']); if (empty($twitter_options['oauth_access_token']) || empty($twitter_options['oauth_access_token_secret']) || empty($twitter_options['consumer_key']) || empty($twitter_options['consumer_secret'])) { _e('Please make sure you have entered all necessary Twitter API Keys under Dashboard -> Settings -> Twitter', 'ut_lang'); } else { $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; $getfield = '?count=' . $count; $requestMethod = 'GET'; $twitter = new TwitterAPIExchange($settings); $tweets = $twitter->setGetfield($getfield)->buildOauth($url, $requestMethod)->performRequest(); $tweets = json_decode($tweets); /* create twitter feed option */ if (!get_option('ut_twitter_feed')) { add_option('ut_twitter_feed'); } /* update feeds */ if (!empty($tweets) && !isset($tweets->errors[0]->code)) { update_option('ut_twitter_feed', $tweets); } /* we have an error - let's use the cached feeds */ if (empty($tweets) || isset($tweets->errors[0]->code)) { $tweets = get_option('ut_twitter_feed'); } if (empty($tweets)) { return '<div class="ut-alert themecolor">' . __('An Error has occured, no Twitter Feeds are available', 'ut_lang') . '</div>'; } else { /* fallback */ $title = isset($title) ? $before_title . do_shortcode($title) . $after_title : ''; /* output */ echo $before_widget; echo $title; /* tweets */ ?> <div class="ut-tweets"> <ul class="tweet_list"> <?php foreach ($tweets as $tweet) { ?> <?php /* tweet data */ $tweetdate = new DateTime($tweet->created_at); $tweetdate = strtotime($tweetdate->format('Y-m-d H:i:s')); $currentdate = strtotime(date('Y-m-d H:i:s')); $days = ut_twitter_time_ago($tweetdate, $currentdate); /* end tweet data */ ?> <li class="tweet"> <div class=""> <div class="tweet-left"> <img src="<?php echo $tweet->user->profile_image_url; ?> "> <div class="clear"></div> <span class="tweet-actions"> <a href="https://twitter.com/intent/favorite?tweet_id=<?php echo $tweet->id_str; ?> " title="Favorite" rel="nofollow"><i class="icon-star icon-2"></i></a> <a href="https://twitter.com/intent/retweet?tweet_id=<?php echo $tweet->id_str; ?> " title="Retweet" rel="nofollow"><i class="icon-refresh icon-2"></i></a> </span> </div> <div class="tweet-right"> <span class="tweet_text"><?php echo ut_twitterify($tweet->text); ?> </span> </div> <div class="clear"></div> <div class="tweet-bottom clearfix"> <span class="tweet_time"><a href="http://twitter.com/<?php echo $tweet->user->screen_name; ?> /status/<?php echo $tweet->id_str; ?> "><?php _e('about', 'ut_lang'); ?> <?php echo $days; ?> </a></span> </div> </div> </li> <?php } ?> </ul> </div> <?php /* end tweets */ echo $after_widget; } } }