Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php /* Plugin Name: AI Twitter Feeds (Twitter widget & shortcode) Plugin URI: http://..
Decoded Output download
<?php
/*
Plugin Name: AI Twitter Feeds (Twitter widget & shortcode)
Plugin URI: http://www.augustinfotech.com
Description: Replaces a shortcode such as [AIGetTwitterFeeds ai_username='Your Twitter Name(Without the "@" symbol)' ai_numberoftweets='Number Of Tweets' ai_tweet_title='Your Title'], or a widget, with a tweets display.<strong style="color:red;">As per twitter API 1.1 developer display requirements policy new version is updated. PLEASE DO NOT USE OLDER VERSIONS.</strong>
Version: 2.3
Text Domain: aitwitterfeeds
Author: August Infotech
Author URI: http://www.augustinfotech.com
*/
add_action('plugins_loaded', 'ai_tweets_init');
/*
*Make Admin Menu Item
*/
add_action('admin_menu','ai_twitter_setting');
/*
*Register Twitter Specific Options
*/
add_action('admin_init','ai_init');
add_action('wp_dashboard_setup', 'ai_add_dashboard_tweets_feed' );
/** Start Upgrade Notice **/
global $pagenow;
if ( 'plugins.php' === $pagenow ) {
// Better update message
$file = basename( __FILE__ );
$folder = basename( dirname( __FILE__ ) );
$hook = "in_plugin_update_message-{$folder}/{$file}";
add_action( $hook, 'ai_twitter_update_notification_message', 20, 2 );
}
function ai_twitter_update_notification_message( $plugin_data, $r ) {
$data = file_get_contents( 'http://plugins.trac.wordpress.org/browser/ai-twitter-feeds/trunk/readme.txt?format=txt' );
$upgradetext = stristr( $data, '== Upgrade Notice ==' );
$upgradenotice = stristr( $upgradetext, '*' );
$output = "<div style='color:#EEC2C1;font-weight: normal;background: #C92727;padding: 10px;border: 1px solid #eed3d7;border-radius: 4px;'><strong style='color:rgb(253, 230, 61)'>Update Notice : </strong> ".$upgradenotice."</div>";
return print $output;
}
/** End Upgrade Notice **/
# Load the language files
function ai_tweets_init() {
load_plugin_textdomain( 'aitwitterfeeds', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
/*
*Setup Admin menu item
*/
function ai_twitter_setting() {
add_options_page('AI Twitter Settings','AI Twitter Settings','manage_options','ai-plugin','ai_option_page');
}
function ai_add_dashboard_tweets_feed() {
wp_add_dashboard_widget('ai_dashboard_widget', 'AI Twitter Feeds', 'ai_get_twitter_feeds');
}
/*
*Register Twitter Specific Options
*/
function ai_init(){
register_setting('ai_options','ai_loklak_api');
register_setting('ai_options','ai_consumer_screen_name');//todo - add sanitization function ", 'functionName'"
register_setting('ai_options','ai_consumer_key');
register_setting('ai_options','ai_consumer_secret');
register_setting('ai_options','ai_access_token');
register_setting('ai_options','ai_access_token_secret');
register_setting('ai_options','ai_display_number_of_tweets');
register_setting('ai_options','ai_twitter_css');
}
if( function_exists('register_uninstall_hook') )
register_uninstall_hook(__FILE__,'ai_twitterfeed_uninstall');
function ai_twitterfeed_uninstall(){
delete_option('ai_loklak_api');
delete_option('ai_consumer_screen_name');
delete_option('ai_consumer_key');
delete_option('ai_consumer_secret');
delete_option('ai_access_token');
delete_option('ai_access_token_secret');
delete_option('ai_display_number_of_tweets');
delete_option('ai_twitter_css');
}
/*
*Display the Options form for AI Twitter Feed
*/
function ai_option_page(){ ?>
<div class="wrap">
<img src="<?php echo plugins_url('ai-twitter-feeds/css/augustinfotech.jpg'); ?>" class="icon32" />
<h2 style="padding:5px 15px 5px 0;"><?php _e('AI Twitter Feed Options','aitwitterfeeds');?></h2>
<p><?php _e('Here you can set or edit the fields needed for the plugin.','aitwitterfeeds');?></p>
<p><?php _e('You can find these settings here: <a href="https://dev.twitter.com/apps" target="_blank">Twitter API</a>','aitwitterfeeds');?></p>
<form action="options.php" method="post" id="ai-options-form">
<?php settings_fields('ai_options'); ?>
<table class="form-table">
<tr class="even" valign="top">
<th scope="row">
<label for="ai_loklak_api">
<?php _e('Use Loklak API instead of twitter','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="checkbox" id="ai_loklak_api" name="ai_loklak_api" <?php checked( get_option('ai_loklak_api'), 'on' ); ?>/>
<p class="description">
Use anonymous API of <a href="http://loklak.org/">loklak.org</a> and get plugin data<br/> through loklak (no registration and authentication required).<br/> <a href="http://loklak.org/">Find out more</a>
</p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_consumer_screen_name">
<?php _e('Twitter Screen(User) Name or Hashtags/keywords:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_consumer_screen_name" name="ai_consumer_screen_name" class="regular-text" value="<?php echo esc_attr(get_option('ai_consumer_screen_name')); ?>" />
<p class="description">
<?php _e('(Without the "@" / "#" symbol)','aitwitterfeeds');?>
</p>
</td>
</tr>
<tr class="odd" valign="top">
<th scope="row">
<label for="ai_consumer_key">
<?php _e('Consumer Key:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_consumer_key" name="ai_consumer_key" class="regular-text" value="<?php echo esc_attr(get_option('ai_consumer_key')); ?>" />
<p></p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_consumer_secret">
<?php _e('Consumer Secret:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_consumer_secret" name="ai_consumer_secret" class="regular-text" value="<?php echo esc_attr(get_option('ai_consumer_secret')); ?>" />
<p></p>
</td>
</tr>
<tr class="odd" valign="top">
<th scope="row">
<label for="ai_access_token">
<?php _e('Access Token:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_access_token" name="ai_access_token" class="regular-text" value="<?php echo esc_attr(get_option('ai_access_token')); ?>" />
<p></p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_access_token_secret">
<?php _e('Access Token Secret:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_access_token_secret" name="ai_access_token_secret" class="regular-text" value="<?php echo esc_attr(get_option('ai_access_token_secret')); ?>" />
<p></p>
</td>
</tr>
<tr class="odd" valign="top">
<th scope="row">
<label for="ai_display_number_of_tweets">
<?php _e('Number Of Tweets:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_display_number_of_tweets" name="ai_display_number_of_tweets" class="regular-text" value="<?php echo esc_attr(get_option('ai_display_number_of_tweets')); ?>" />
<p></p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_twitter_css">
<?php _e('Custom CSS:','aitwitterfeeds');?>
</label>
</th>
<td>
<textarea id="ai_twitter_css" name="ai_twitter_css" class="regular-text" cols="37" rows="12" > <?php echo esc_attr(get_option('ai_twitter_css')); ?></textarea>
<p></p>
</td>
</tr>
</table>
<p class="submit">
<input type="submit" name="submit" class="button-primary" value="Save Settings" />
</p>
</form>
</div>
<?php }
function IMTConvertLinks( $status, $targetBlank=true, $linkMaxLen=250 ){
$target=$targetBlank ? " target=\"_blank\" " : "";
$status = preg_replace("/((http:\/\/|https:\/\/)[^ )
]+)/e", "'<a href=\"$1\" title=\"$1\" $target >'. ((strlen('$1')>=$linkMaxLen ? substr('$1',0,$linkMaxLen).'...':'$1')).'</a>'", $status);
$status = preg_replace("/(@([_a-z0-9\-]+))/i","<a href=\"http://twitter.com/$2\" title=\"Follow $2\" $target >$1</a>",$status);
$status = preg_replace("/([a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]*\@[a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]{2,6})/i","<a href=\"mailto://$1\" class=\"twitter-link\">$1</a>", $status);
$status = preg_replace("/(#([_a-z0-9\-]+))/i","<a href=\"https://twitter.com/search?q=$2\" title=\"Search $1\" $target >$1</a>",$status);
return $status;
}
// parse time in a twitter style
function ai_getTime($ai_date){
$ai_timediff = time() - strtotime($ai_date);
if($ai_timediff < 60) return $ai_timediff . 's';
else if($ai_timediff < 3600) return intval(date('i', $ai_timediff)) . 'm';
else if($ai_timediff < 86400) return round($ai_timediff/60/60) . 'h';
else return date_i18n('M d', strtotime($ai_date));
}
function ai_twitter_formatter($ai_date){
$ai_epoch_timestamp = strtotime( $ai_date );
$ai_twitter_time = human_time_diff($ai_epoch_timestamp, current_time('timestamp') ) . ' ago';
return $ai_twitter_time;
}
if(!class_exists('Loklak'))
require_once("loklak_php_api/loklak.php"); //Path to Loklak API library
if(!class_exists('TwitterOAuth'))
require_once("twitteroauth/twitteroauth.php"); //Path to twitteroauth library
function get_loklak_connect($ai_twitteruser_gt,$ai_notweets_gt){
$ai_connection = new loklak();
$ai_tweets_all = $ai_connection->search('', null, null, $ai_twitteruser_gt, $ai_notweets_gt);
$ai_tweets_all = json_decode($ai_tweets_all, true);
$ai_tweets_all = json_decode($ai_tweets_all['body'], true);
$ai_tweets_all = $ai_tweets_all['statuses'];
return $ai_tweets_all;
}
function ai_getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret){
$ai_connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
return $ai_connection;
}
function get_connect($ai_consumerkey_gt, $ai_consumersecret_gt, $ai_accesstoken_gt, $ai_accesstokensecret_gt,$ai_twitteruser_gt,$ai_notweets_gt){
$ai_connection = ai_getConnectionWithAccessToken($ai_consumerkey_gt, $ai_consumersecret_gt, $ai_accesstoken_gt, $ai_accesstokensecret_gt);
$ai_tweets_all = $ai_connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$ai_twitteruser_gt."&count=".$ai_notweets_gt);
return $ai_tweets_all;
}
/* Short code */
add_shortcode( 'AIGetTwitterFeeds' , 'ai_get_twitter_feeds' );
function ai_get_twitter_feeds($atts){
extract( shortcode_atts( array(
'ai_username' => '',
'ai_numberoftweets' => '',
'ai_tweet_title' =>''
), $atts));
$ai_get_twitteruser=$ai_username ? $ai_username : get_option('ai_consumer_screen_name');
$ai_get_notweets=$ai_numberoftweets ? $ai_numberoftweets : get_option('ai_display_number_of_tweets');
$ai_get_tweetstitle=$ai_tweet_title ? $ai_tweet_title:'Latest Twetter Feeds';
$ai_twitteruser = $ai_get_twitteruser;
$ai_notweets = $ai_get_notweets;
$ai_loklakapi = get_option('ai_loklak_api');
$ai_consumerkey = get_option('ai_consumer_key');
$ai_consumersecret = get_option('ai_consumer_secret');
$ai_accesstoken = get_option('ai_access_token');
$ai_accesstokensecret = get_option('ai_access_token_secret');
$ai_twitter_css = get_option('ai_twitter_css');
if($ai_twitteruser!='' && $ai_notweets !='' && ($ai_loklakapi == true || ($ai_consumerkey!='' && $ai_consumersecret!='' && $ai_accesstoken!='' && $ai_accesstokensecret!=''))) {
if($ai_loklakapi)
$ai_tweets = get_loklak_connect($ai_twitteruser,$ai_notweets);
else
$ai_tweets = get_connect($ai_consumerkey, $ai_consumersecret, $ai_accesstoken, $ai_accesstokensecret,$ai_twitteruser,$ai_notweets);
wp_register_style('aitwitter', plugins_url('css/aitwitter.css', __FILE__));
wp_enqueue_style('aitwitter');
if(!empty($ai_twitter_css)) {
wp_add_inline_style( 'aitwitter', $ai_twitter_css );
}
if(is_admin()) {
$screen = get_current_screen();
if($screen->id == 'dashboard'){
$ai_wid_title="";
$ai_class="";
} else {
$ai_wid_title="<h3 class='widget-title'>".$ai_get_tweetstitle."</h3>";
$ai_class="aiwidgetscss widget";
}
} else {
$ai_wid_title="<h3 class='widget-title'>".$ai_get_tweetstitle."</h3>";
$ai_class="aiwidgetscss widget";
}
$ai_output="<div class='".$ai_class."'>
".$ai_wid_title."
<div class='aiwidget-title'><span class='tweet_author_name'>".$ai_twitteruser."</span> <span class='tweet_author_heading'><a href='https://twitter.com/$ai_twitteruser' target='_blank'>@".$ai_twitteruser."</a></span></div>";
for($i=0; $i<count($ai_tweets); $i++) {
$ai_tweets[$i] = (object)$ai_tweets[$i];
$ai_tweets[$i]->user = (object)$ai_tweets[$i]->user;
if(!empty($ai_tweets->errors)) {
$ai_output .= '<p>'.$ai_tweets->errors[$i]->message.'</p>';
} else {
$ai_img_html='<a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank"><img src="'.$ai_tweets[$i]->user->profile_image_url_https.'" class="imgalign"/></a>';
$ai_username_html='<span class="tweet_author_name">
<a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank">'.$ai_tweets[$i]->user->name.'</a>
</span> <span class="tweet_author"><a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank">@'.$ai_twitteruser.'</a></span><br />';
$ai_timestamp_html='<a href="https://twitter.com/'.$ai_tweets[$i]->user->screen_name.'/status/'.$ai_tweets[$i]->id_str.'" target="_blank">'.ai_getTime($ai_tweets[$i]->created_at).'</a>';
$ai_replay_html='<a target="_blank" href="https://twitter.com/intent/tweet?in_reply_to='.$ai_tweets[$i]->id_str.'">reply</a>';
$ai_retweet_html='<a target="_blank" href="https://twitter.com/intent/retweet?tweet_id='.$ai_tweets[$i]->id_str.'">retweet</a>';
$ai_favorite_html='<a target="_blank" href="https://twitter.com/intent/favorite?tweet_id='.$ai_tweets[$i]->id_str.'">favorite</a>';
$ai_follow_html='<p class="thinkTwitFollow"><a href="https://twitter.com/'. $ai_twitteruser.'" class="twitter-follow-button" data-show-count="false" data-dnt="true">Follow @'.$ai_twitteruser.'</a></p>';
$ai_follow_html.="<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>";
if( preg_match('/RT +@[^ :]+:?/ui', $ai_tweets[$i]->text, $retweets) ) {
$ai_tweets_text = $retweets[0].$ai_tweets[$i]->retweeted_status->text;
} else {
$ai_tweets_text = $ai_tweets[$i]->text;
}
$ai_output.='<div class="imgdisplay">'.$ai_img_html.'
<div class="tweettxts">
<div class="tweettext">'.$ai_username_html.''.IMTConvertLinks($ai_tweets_text).' </div>
<div class="tweetlink">
'.$ai_timestamp_html.'
'.$ai_replay_html.'
'.$ai_retweet_html.'
'.$ai_favorite_html.'
<a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank">'.ai_twitter_formatter($ai_tweets[$i]->created_at).'</a>
</div>
</div>
</div>';
}
}
$ai_output.=$ai_follow_html."</div>";
} else {
$ai_output="<div id='aiwidgetscss'>
<h1>".$ai_get_tweetstitle."</h1>
<div>Please Fill All Required Value</div>
</div>";
}
return $ai_output;
}
/*
*AI Twitter Widget Widget
* enables the ability to use a widget to place the tweet feed in the widget areas
* of a theme.
*/
class AI_Twitter_Widget extends WP_Widget {
/* Register the widget for use in WordPress */
function __construct(){
$this->options = array(
array(
'label' => '<div style="background-color: #ddd; padding: 5px; text-align:center; color: red; font-weight:bold;">AI Widget settings</div>',
'type' => 'separator'),
array(
'name' => 'ai_widget_title', 'label' => 'Widget title',
'type' => 'text', 'default' => 'Latest Tweets', 'tooltip' => 'Title of the widget'),
array(
'name' => 'ai_widget_username', 'label' => 'Username (Without the "@" symbol)',
'type' => 'text', 'default' => 'twitter', 'tooltip' => 'Twitter username for which you want to display tweets if widget type is set to Timeline'),
array(
'name' => 'ai_widget_count', 'label' => 'Tweet number',
'type' => 'text', 'default' => '5', 'tooltip' => 'Number of Tweets to display'),
);
/* Widget settings. */
$widget_options = array(
'classname' => 'ai_widget',
'description' => 'AI Simple Twitter Feed Widget, Displays your latest Tweet',
);
/* Widget control settings. */
$control_ops = array('width' => 250);
parent::WP_Widget('ai_widget','AI Twiiter Feeds',$widget_options,$control_ops);
}
public function widget($args, $instance) {
$ai_get_widget_twitteruser=$instance['ai_widget_username'] ? $instance['ai_widget_username'] : get_option('ai_consumer_screen_name');
$ai_get_widget_notweets=$instance['ai_widget_count'] ? $instance['ai_widget_count'] : get_option('ai_display_number_of_tweets');
$title = ($instance['ai_widget_title']) ? $instance['ai_widget_title'] : 'Latest Twitter Feeds';
$ai_wid_twitteruser = $ai_get_widget_twitteruser;
$ai_wid_notweets = $ai_get_widget_notweets;
extract($args, EXTR_SKIP);
$atts_arr=array('ai_username' => $ai_get_widget_twitteruser,
'ai_numberoftweets' => $ai_get_widget_notweets,
'ai_tweet_title' =>$title);
echo ai_get_twitter_feeds($atts_arr);
}
function update($new_instance, $old_instance) {
return $new_instance;
}
public function form($instance) {
if(empty($instance)) {
foreach($this->options as $val) {
if($val['type'] == 'separator') {
continue;
}
$instance[$val['name']] = $val['default'];
}
}
if(!is_callable('curl_init')) {
echo __('Your PHP doesn\'t have cURL extension enabled. Please contact your host and ask them to enable it.');
return;
}
foreach($this->options as $val) {
$title = '';
if(!empty($val['tooltip'])) {
$title = ' title="' . $val['tooltip'] . '"';
}
if($val['type'] == 'separator') {
echo $val['label'] . '<br/ >';
} else if($val['type'] == 'text') {
$label = '<label for="' . $this->get_field_id($val['name']) . '" ' . $title . '>' . $val['label'] . '</label>';
$value = $val['default'];
if(isset($instance[$val['name']]))
$value = esc_attr($instance[$val['name']]);
echo '<p>' . $label . '<br />';
echo '<input class="widefat" id="' . $this->get_field_id($val['name']) . '" name="' . $this->get_field_name($val['name']) . '" type="text" value="' . $value . '" ' . $title . '/></p>';
}
}
echo "<a href='".admin_url()."options-general.php?page=ai-plugin'>More Settings</a>";
}
}
add_action('admin_enqueue_scripts', 'ai_loadjs');
function ai_loadjs() {
wp_enqueue_style('wp-color-picker');
wp_enqueue_script('aisettings', plugins_url('/js/aisettings.js', __FILE__ ), array('jquery', 'wp-color-picker'));
}
/*
* Register the AI_Twitter_Widget widget
*/
function ai_widget_init() {
register_widget('AI_Twitter_Widget');
}
add_action('widgets_init', 'ai_widget_init'); ?>
Did this file decode correctly?
Original Code
<?php
/*
Plugin Name: AI Twitter Feeds (Twitter widget & shortcode)
Plugin URI: http://www.augustinfotech.com
Description: Replaces a shortcode such as [AIGetTwitterFeeds ai_username='Your Twitter Name(Without the "@" symbol)' ai_numberoftweets='Number Of Tweets' ai_tweet_title='Your Title'], or a widget, with a tweets display.<strong style="color:red;">As per twitter API 1.1 developer display requirements policy new version is updated. PLEASE DO NOT USE OLDER VERSIONS.</strong>
Version: 2.3
Text Domain: aitwitterfeeds
Author: August Infotech
Author URI: http://www.augustinfotech.com
*/
add_action('plugins_loaded', 'ai_tweets_init');
/*
*Make Admin Menu Item
*/
add_action('admin_menu','ai_twitter_setting');
/*
*Register Twitter Specific Options
*/
add_action('admin_init','ai_init');
add_action('wp_dashboard_setup', 'ai_add_dashboard_tweets_feed' );
/** Start Upgrade Notice **/
global $pagenow;
if ( 'plugins.php' === $pagenow ) {
// Better update message
$file = basename( __FILE__ );
$folder = basename( dirname( __FILE__ ) );
$hook = "in_plugin_update_message-{$folder}/{$file}";
add_action( $hook, 'ai_twitter_update_notification_message', 20, 2 );
}
function ai_twitter_update_notification_message( $plugin_data, $r ) {
$data = file_get_contents( 'http://plugins.trac.wordpress.org/browser/ai-twitter-feeds/trunk/readme.txt?format=txt' );
$upgradetext = stristr( $data, '== Upgrade Notice ==' );
$upgradenotice = stristr( $upgradetext, '*' );
$output = "<div style='color:#EEC2C1;font-weight: normal;background: #C92727;padding: 10px;border: 1px solid #eed3d7;border-radius: 4px;'><strong style='color:rgb(253, 230, 61)'>Update Notice : </strong> ".$upgradenotice."</div>";
return print $output;
}
/** End Upgrade Notice **/
# Load the language files
function ai_tweets_init() {
load_plugin_textdomain( 'aitwitterfeeds', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
/*
*Setup Admin menu item
*/
function ai_twitter_setting() {
add_options_page('AI Twitter Settings','AI Twitter Settings','manage_options','ai-plugin','ai_option_page');
}
function ai_add_dashboard_tweets_feed() {
wp_add_dashboard_widget('ai_dashboard_widget', 'AI Twitter Feeds', 'ai_get_twitter_feeds');
}
/*
*Register Twitter Specific Options
*/
function ai_init(){
register_setting('ai_options','ai_loklak_api');
register_setting('ai_options','ai_consumer_screen_name');//todo - add sanitization function ", 'functionName'"
register_setting('ai_options','ai_consumer_key');
register_setting('ai_options','ai_consumer_secret');
register_setting('ai_options','ai_access_token');
register_setting('ai_options','ai_access_token_secret');
register_setting('ai_options','ai_display_number_of_tweets');
register_setting('ai_options','ai_twitter_css');
}
if( function_exists('register_uninstall_hook') )
register_uninstall_hook(__FILE__,'ai_twitterfeed_uninstall');
function ai_twitterfeed_uninstall(){
delete_option('ai_loklak_api');
delete_option('ai_consumer_screen_name');
delete_option('ai_consumer_key');
delete_option('ai_consumer_secret');
delete_option('ai_access_token');
delete_option('ai_access_token_secret');
delete_option('ai_display_number_of_tweets');
delete_option('ai_twitter_css');
}
/*
*Display the Options form for AI Twitter Feed
*/
function ai_option_page(){ ?>
<div class="wrap">
<img src="<?php echo plugins_url('ai-twitter-feeds/css/augustinfotech.jpg'); ?>" class="icon32" />
<h2 style="padding:5px 15px 5px 0;"><?php _e('AI Twitter Feed Options','aitwitterfeeds');?></h2>
<p><?php _e('Here you can set or edit the fields needed for the plugin.','aitwitterfeeds');?></p>
<p><?php _e('You can find these settings here: <a href="https://dev.twitter.com/apps" target="_blank">Twitter API</a>','aitwitterfeeds');?></p>
<form action="options.php" method="post" id="ai-options-form">
<?php settings_fields('ai_options'); ?>
<table class="form-table">
<tr class="even" valign="top">
<th scope="row">
<label for="ai_loklak_api">
<?php _e('Use Loklak API instead of twitter','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="checkbox" id="ai_loklak_api" name="ai_loklak_api" <?php checked( get_option('ai_loklak_api'), 'on' ); ?>/>
<p class="description">
Use anonymous API of <a href="http://loklak.org/">loklak.org</a> and get plugin data<br/> through loklak (no registration and authentication required).<br/> <a href="http://loklak.org/">Find out more</a>
</p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_consumer_screen_name">
<?php _e('Twitter Screen(User) Name or Hashtags/keywords:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_consumer_screen_name" name="ai_consumer_screen_name" class="regular-text" value="<?php echo esc_attr(get_option('ai_consumer_screen_name')); ?>" />
<p class="description">
<?php _e('(Without the "@" / "#" symbol)','aitwitterfeeds');?>
</p>
</td>
</tr>
<tr class="odd" valign="top">
<th scope="row">
<label for="ai_consumer_key">
<?php _e('Consumer Key:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_consumer_key" name="ai_consumer_key" class="regular-text" value="<?php echo esc_attr(get_option('ai_consumer_key')); ?>" />
<p></p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_consumer_secret">
<?php _e('Consumer Secret:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_consumer_secret" name="ai_consumer_secret" class="regular-text" value="<?php echo esc_attr(get_option('ai_consumer_secret')); ?>" />
<p></p>
</td>
</tr>
<tr class="odd" valign="top">
<th scope="row">
<label for="ai_access_token">
<?php _e('Access Token:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_access_token" name="ai_access_token" class="regular-text" value="<?php echo esc_attr(get_option('ai_access_token')); ?>" />
<p></p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_access_token_secret">
<?php _e('Access Token Secret:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_access_token_secret" name="ai_access_token_secret" class="regular-text" value="<?php echo esc_attr(get_option('ai_access_token_secret')); ?>" />
<p></p>
</td>
</tr>
<tr class="odd" valign="top">
<th scope="row">
<label for="ai_display_number_of_tweets">
<?php _e('Number Of Tweets:','aitwitterfeeds');?>
</label>
</th>
<td>
<input type="text" id="ai_display_number_of_tweets" name="ai_display_number_of_tweets" class="regular-text" value="<?php echo esc_attr(get_option('ai_display_number_of_tweets')); ?>" />
<p></p>
</td>
</tr>
<tr class="even" valign="top">
<th scope="row">
<label for="ai_twitter_css">
<?php _e('Custom CSS:','aitwitterfeeds');?>
</label>
</th>
<td>
<textarea id="ai_twitter_css" name="ai_twitter_css" class="regular-text" cols="37" rows="12" > <?php echo esc_attr(get_option('ai_twitter_css')); ?></textarea>
<p></p>
</td>
</tr>
</table>
<p class="submit">
<input type="submit" name="submit" class="button-primary" value="Save Settings" />
</p>
</form>
</div>
<?php }
function IMTConvertLinks( $status, $targetBlank=true, $linkMaxLen=250 ){
$target=$targetBlank ? " target=\"_blank\" " : "";
$status = preg_replace("/((http:\/\/|https:\/\/)[^ )
]+)/e", "'<a href=\"$1\" title=\"$1\" $target >'. ((strlen('$1')>=$linkMaxLen ? substr('$1',0,$linkMaxLen).'...':'$1')).'</a>'", $status);
$status = preg_replace("/(@([_a-z0-9\-]+))/i","<a href=\"http://twitter.com/$2\" title=\"Follow $2\" $target >$1</a>",$status);
$status = 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\" class=\"twitter-link\">$1</a>", $status);
$status = preg_replace("/(#([_a-z0-9\-]+))/i","<a href=\"https://twitter.com/search?q=$2\" title=\"Search $1\" $target >$1</a>",$status);
return $status;
}
// parse time in a twitter style
function ai_getTime($ai_date){
$ai_timediff = time() - strtotime($ai_date);
if($ai_timediff < 60) return $ai_timediff . 's';
else if($ai_timediff < 3600) return intval(date('i', $ai_timediff)) . 'm';
else if($ai_timediff < 86400) return round($ai_timediff/60/60) . 'h';
else return date_i18n('M d', strtotime($ai_date));
}
function ai_twitter_formatter($ai_date){
$ai_epoch_timestamp = strtotime( $ai_date );
$ai_twitter_time = human_time_diff($ai_epoch_timestamp, current_time('timestamp') ) . ' ago';
return $ai_twitter_time;
}
if(!class_exists('Loklak'))
require_once("loklak_php_api/loklak.php"); //Path to Loklak API library
if(!class_exists('TwitterOAuth'))
require_once("twitteroauth/twitteroauth.php"); //Path to twitteroauth library
function get_loklak_connect($ai_twitteruser_gt,$ai_notweets_gt){
$ai_connection = new loklak();
$ai_tweets_all = $ai_connection->search('', null, null, $ai_twitteruser_gt, $ai_notweets_gt);
$ai_tweets_all = json_decode($ai_tweets_all, true);
$ai_tweets_all = json_decode($ai_tweets_all['body'], true);
$ai_tweets_all = $ai_tweets_all['statuses'];
return $ai_tweets_all;
}
function ai_getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret){
$ai_connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
return $ai_connection;
}
function get_connect($ai_consumerkey_gt, $ai_consumersecret_gt, $ai_accesstoken_gt, $ai_accesstokensecret_gt,$ai_twitteruser_gt,$ai_notweets_gt){
$ai_connection = ai_getConnectionWithAccessToken($ai_consumerkey_gt, $ai_consumersecret_gt, $ai_accesstoken_gt, $ai_accesstokensecret_gt);
$ai_tweets_all = $ai_connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$ai_twitteruser_gt."&count=".$ai_notweets_gt);
return $ai_tweets_all;
}
/* Short code */
add_shortcode( 'AIGetTwitterFeeds' , 'ai_get_twitter_feeds' );
function ai_get_twitter_feeds($atts){
extract( shortcode_atts( array(
'ai_username' => '',
'ai_numberoftweets' => '',
'ai_tweet_title' =>''
), $atts));
$ai_get_twitteruser=$ai_username ? $ai_username : get_option('ai_consumer_screen_name');
$ai_get_notweets=$ai_numberoftweets ? $ai_numberoftweets : get_option('ai_display_number_of_tweets');
$ai_get_tweetstitle=$ai_tweet_title ? $ai_tweet_title:'Latest Twetter Feeds';
$ai_twitteruser = $ai_get_twitteruser;
$ai_notweets = $ai_get_notweets;
$ai_loklakapi = get_option('ai_loklak_api');
$ai_consumerkey = get_option('ai_consumer_key');
$ai_consumersecret = get_option('ai_consumer_secret');
$ai_accesstoken = get_option('ai_access_token');
$ai_accesstokensecret = get_option('ai_access_token_secret');
$ai_twitter_css = get_option('ai_twitter_css');
if($ai_twitteruser!='' && $ai_notweets !='' && ($ai_loklakapi == true || ($ai_consumerkey!='' && $ai_consumersecret!='' && $ai_accesstoken!='' && $ai_accesstokensecret!=''))) {
if($ai_loklakapi)
$ai_tweets = get_loklak_connect($ai_twitteruser,$ai_notweets);
else
$ai_tweets = get_connect($ai_consumerkey, $ai_consumersecret, $ai_accesstoken, $ai_accesstokensecret,$ai_twitteruser,$ai_notweets);
wp_register_style('aitwitter', plugins_url('css/aitwitter.css', __FILE__));
wp_enqueue_style('aitwitter');
if(!empty($ai_twitter_css)) {
wp_add_inline_style( 'aitwitter', $ai_twitter_css );
}
if(is_admin()) {
$screen = get_current_screen();
if($screen->id == 'dashboard'){
$ai_wid_title="";
$ai_class="";
} else {
$ai_wid_title="<h3 class='widget-title'>".$ai_get_tweetstitle."</h3>";
$ai_class="aiwidgetscss widget";
}
} else {
$ai_wid_title="<h3 class='widget-title'>".$ai_get_tweetstitle."</h3>";
$ai_class="aiwidgetscss widget";
}
$ai_output="<div class='".$ai_class."'>
".$ai_wid_title."
<div class='aiwidget-title'><span class='tweet_author_name'>".$ai_twitteruser."</span> <span class='tweet_author_heading'><a href='https://twitter.com/$ai_twitteruser' target='_blank'>@".$ai_twitteruser."</a></span></div>";
for($i=0; $i<count($ai_tweets); $i++) {
$ai_tweets[$i] = (object)$ai_tweets[$i];
$ai_tweets[$i]->user = (object)$ai_tweets[$i]->user;
if(!empty($ai_tweets->errors)) {
$ai_output .= '<p>'.$ai_tweets->errors[$i]->message.'</p>';
} else {
$ai_img_html='<a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank"><img src="'.$ai_tweets[$i]->user->profile_image_url_https.'" class="imgalign"/></a>';
$ai_username_html='<span class="tweet_author_name">
<a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank">'.$ai_tweets[$i]->user->name.'</a>
</span> <span class="tweet_author"><a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank">@'.$ai_twitteruser.'</a></span><br />';
$ai_timestamp_html='<a href="https://twitter.com/'.$ai_tweets[$i]->user->screen_name.'/status/'.$ai_tweets[$i]->id_str.'" target="_blank">'.ai_getTime($ai_tweets[$i]->created_at).'</a>';
$ai_replay_html='<a target="_blank" href="https://twitter.com/intent/tweet?in_reply_to='.$ai_tweets[$i]->id_str.'">reply</a>';
$ai_retweet_html='<a target="_blank" href="https://twitter.com/intent/retweet?tweet_id='.$ai_tweets[$i]->id_str.'">retweet</a>';
$ai_favorite_html='<a target="_blank" href="https://twitter.com/intent/favorite?tweet_id='.$ai_tweets[$i]->id_str.'">favorite</a>';
$ai_follow_html='<p class="thinkTwitFollow"><a href="https://twitter.com/'. $ai_twitteruser.'" class="twitter-follow-button" data-show-count="false" data-dnt="true">Follow @'.$ai_twitteruser.'</a></p>';
$ai_follow_html.="<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>";
if( preg_match('/RT +@[^ :]+:?/ui', $ai_tweets[$i]->text, $retweets) ) {
$ai_tweets_text = $retweets[0].$ai_tweets[$i]->retweeted_status->text;
} else {
$ai_tweets_text = $ai_tweets[$i]->text;
}
$ai_output.='<div class="imgdisplay">'.$ai_img_html.'
<div class="tweettxts">
<div class="tweettext">'.$ai_username_html.''.IMTConvertLinks($ai_tweets_text).' </div>
<div class="tweetlink">
'.$ai_timestamp_html.'
'.$ai_replay_html.'
'.$ai_retweet_html.'
'.$ai_favorite_html.'
<a href="https://twitter.com/'.$ai_twitteruser.'" target="_blank">'.ai_twitter_formatter($ai_tweets[$i]->created_at).'</a>
</div>
</div>
</div>';
}
}
$ai_output.=$ai_follow_html."</div>";
} else {
$ai_output="<div id='aiwidgetscss'>
<h1>".$ai_get_tweetstitle."</h1>
<div>Please Fill All Required Value</div>
</div>";
}
return $ai_output;
}
/*
*AI Twitter Widget Widget
* enables the ability to use a widget to place the tweet feed in the widget areas
* of a theme.
*/
class AI_Twitter_Widget extends WP_Widget {
/* Register the widget for use in WordPress */
function __construct(){
$this->options = array(
array(
'label' => '<div style="background-color: #ddd; padding: 5px; text-align:center; color: red; font-weight:bold;">AI Widget settings</div>',
'type' => 'separator'),
array(
'name' => 'ai_widget_title', 'label' => 'Widget title',
'type' => 'text', 'default' => 'Latest Tweets', 'tooltip' => 'Title of the widget'),
array(
'name' => 'ai_widget_username', 'label' => 'Username (Without the "@" symbol)',
'type' => 'text', 'default' => 'twitter', 'tooltip' => 'Twitter username for which you want to display tweets if widget type is set to Timeline'),
array(
'name' => 'ai_widget_count', 'label' => 'Tweet number',
'type' => 'text', 'default' => '5', 'tooltip' => 'Number of Tweets to display'),
);
/* Widget settings. */
$widget_options = array(
'classname' => 'ai_widget',
'description' => 'AI Simple Twitter Feed Widget, Displays your latest Tweet',
);
/* Widget control settings. */
$control_ops = array('width' => 250);
parent::WP_Widget('ai_widget','AI Twiiter Feeds',$widget_options,$control_ops);
}
public function widget($args, $instance) {
$ai_get_widget_twitteruser=$instance['ai_widget_username'] ? $instance['ai_widget_username'] : get_option('ai_consumer_screen_name');
$ai_get_widget_notweets=$instance['ai_widget_count'] ? $instance['ai_widget_count'] : get_option('ai_display_number_of_tweets');
$title = ($instance['ai_widget_title']) ? $instance['ai_widget_title'] : 'Latest Twitter Feeds';
$ai_wid_twitteruser = $ai_get_widget_twitteruser;
$ai_wid_notweets = $ai_get_widget_notweets;
extract($args, EXTR_SKIP);
$atts_arr=array('ai_username' => $ai_get_widget_twitteruser,
'ai_numberoftweets' => $ai_get_widget_notweets,
'ai_tweet_title' =>$title);
echo ai_get_twitter_feeds($atts_arr);
}
function update($new_instance, $old_instance) {
return $new_instance;
}
public function form($instance) {
if(empty($instance)) {
foreach($this->options as $val) {
if($val['type'] == 'separator') {
continue;
}
$instance[$val['name']] = $val['default'];
}
}
if(!is_callable('curl_init')) {
echo __('Your PHP doesn\'t have cURL extension enabled. Please contact your host and ask them to enable it.');
return;
}
foreach($this->options as $val) {
$title = '';
if(!empty($val['tooltip'])) {
$title = ' title="' . $val['tooltip'] . '"';
}
if($val['type'] == 'separator') {
echo $val['label'] . '<br/ >';
} else if($val['type'] == 'text') {
$label = '<label for="' . $this->get_field_id($val['name']) . '" ' . $title . '>' . $val['label'] . '</label>';
$value = $val['default'];
if(isset($instance[$val['name']]))
$value = esc_attr($instance[$val['name']]);
echo '<p>' . $label . '<br />';
echo '<input class="widefat" id="' . $this->get_field_id($val['name']) . '" name="' . $this->get_field_name($val['name']) . '" type="text" value="' . $value . '" ' . $title . '/></p>';
}
}
echo "<a href='".admin_url()."options-general.php?page=ai-plugin'>More Settings</a>";
}
}
add_action('admin_enqueue_scripts', 'ai_loadjs');
function ai_loadjs() {
wp_enqueue_style('wp-color-picker');
wp_enqueue_script('aisettings', plugins_url('/js/aisettings.js', __FILE__ ), array('jquery', 'wp-color-picker'));
}
/*
* Register the AI_Twitter_Widget widget
*/
function ai_widget_init() {
register_widget('AI_Twitter_Widget');
}
add_action('widgets_init', 'ai_widget_init');
Function Calls
add_action | 1 |
Stats
MD5 | 60608418f3cea1e53bf02686288feba0 |
Eval Count | 0 |
Decode Time | 152 ms |