WordPress.org

Plugin Directory

Changeset 508292


Ignore:
Timestamp:
02/21/12 16:32:22 (2 years ago)
Author:
chriswallace
Message:

Changed from Snoopy class to HTTP API.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • twitter-search-for-wp/trunk/twitter_search.php

    r506336 r508292  
    33/* 
    44Plugin Name: Twitter Search 
    5 Version: 1.0.1 
     5Version: 1.1.1 
    66Plugin URI: http://upthemes.com/plugins/twitter-search/ 
    77Description: Displays tweets in a handy dandy, customizable widget via the Twitter Search API. There are no options for the overall plugin. Simply visit your Widgets section and drop it into a widget area. 
     
    3232*/ 
    3333 
    34 require_once(ABSPATH . "wp-includes/class-snoopy.php"); 
     34//require_once(ABSPATH . "wp-includes/http.php"); 
     35 
     36/* 
     37 * Assign theme folder name that you want to get information. 
     38 * make sure theme exist in wp-content/themes/ folder. 
     39 */ 
     40 
     41$theme_name = '365psd';  
     42 
     43/* 
     44* Do not use get_stylesheet_uri() as $theme_filename, 
     45* it will result in PHP fopen error if allow_url_fopen is set to Off in php.ini, 
     46* which is what most shared hosting does. You can use get_stylesheet_directory() 
     47* or get_template_directory() though, because they return local paths. 
     48*/ 
     49 
     50$theme_data = get_theme_data( get_theme_root() . '/' . $theme_name . '/style.css' ); 
     51 
     52define('TWITS_VERSION',$theme_data['Version']); 
    3553 
    3654/** 
     
    5573 
    5674function add_js_to_widget_page(){ 
    57     wp_enqueue_script( 'widget_admin', trailingslashit( get_bloginfo('url') ) . PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)) . '/js/widget_admin.js', array('jquery') ); 
     75    wp_enqueue_script( 'widget_admin', trailingslashit( get_bloginfo('url') ) . PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)) . '/js/widget_admin.js', array('jquery'), TWITS_VERSION ); 
    5876 
    5977} 
     
    6280 
    6381function add_css_to_widget_page(){ 
    64     wp_enqueue_style( 'twitter_search_admin', trailingslashit( get_bloginfo('url') ) . PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)) . '/style/twitter_search_admin.css', false ); 
     82    wp_enqueue_style( 'twitter_search_admin', trailingslashit( get_bloginfo('url') ) . PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)) . '/style/twitter_search_admin.css', TWITS_VERSION ); 
    6583 
    6684} 
     
    8199    public $tweetsToShow = 10; 
    82100     
    83     public $cacheMinutes = 3; 
     101    public $cacheMinutes = 15; 
    84102     
    85103    public $showReplies = true; 
     
    126144        $before = $instance['twitter_before']; 
    127145        $after = $instance['twitter_after']; 
    128         $useCustomCSS = $instance['twitter_use_custom_css']; 
     146        $this->cacheMinutes = (int)$instance['twitter_cache_minutes']; 
    129147                 
    130148        $this->tweetsToShow = intval( $iShow ); 
    131         $this->cacheMinutes = $iCacheExpires; 
    132149         
    133150        /* Before widget (defined by themes). */ 
     
    136153         
    137154        if( $useCustomCSS == 'no' ) 
    138             echo '<link href="' . plugin_dir_url( __FILE__ ) . '/style/default.css' . '" rel="stylesheet" type="text/css" />'; 
     155            echo '<link href="' . trailingslashit( get_bloginfo('url') ) . PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)) . '/style/default.css' . '" rel="stylesheet" type="text/css" />'; 
    139156         
    140157        $this->search( $sQuery ); 
     
    154171        /* Strip tags for title and name to remove HTML (important for text inputs). */ 
    155172        $instance['title'] = strip_tags( $new_instance['title'] ); 
    156         $instance['twitter_search_query'] = $new_instance['twitter_search_query']; 
    157         $instance['twitter_search_show'] = $new_instance['twitter_search_show']; 
     173        $instance['twitter_search_query'] = strip_tags( $new_instance['twitter_search_query'] ); 
     174        $instance['twitter_search_show'] = strip_tags( $new_instance['twitter_search_show'] ); 
    158175        $instance['twitter_search_template'] = $new_instance['twitter_search_template']; 
    159176        $instance['twitter_before'] = $new_instance['twitter_before']; 
    160177        $instance['twitter_after'] = $new_instance['twitter_after']; 
    161178        $instance['twitter_use_custom_css'] = $new_instance['twitter_use_custom_css']; 
     179        $instance['twitter_cache_minutes'] = (int)$new_instance['twitter_cache_minutes']; 
    162180         
    163181        return $instance; 
     
    172190 
    173191        /* Set up some default widget settings. */ 
    174         $defaults = array( 'title' => __('Latest Tweets', 'twitsearch'), 'twitter_search_query' => '@upthemes', 'twitter_search_show' => $this->tweetsToShow, 'twitter_search_template' => $this->tpl['tweet'], 'twitter_before' => $this->tpl['before'], 'twitter_after' => $this->tpl['after'], 'twitter_use_custom_css' => 'no' ); 
     192        $defaults = array( 'title' => __('Latest Tweets', 'twitsearch'), 'twitter_search_query' => '@upthemes', 'twitter_search_show' => $this->tweetsToShow, 'twitter_search_template' => $this->tpl['tweet'], 'twitter_before' => $this->tpl['before'], 'twitter_after' => $this->tpl['after'], 'twitter_use_custom_css' => 'no', 'twitter_cache_minutes' => $this->cacheMinutes ); 
    175193        $instance = wp_parse_args( (array) $instance, $defaults ); ?> 
    176194         
     
    178196        <p> 
    179197            <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e("Widget Title","twitsearch"); ?></label> 
    180             <input type="text" size="28" value="<?php echo esc_attr($instance['title']); ?>" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" /> 
     198            <input type="text" size="28" value="<?php echo $instance['title']; ?>" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" /> 
    181199        </p> 
    182200 
     
    236254            <label for="<?php echo $this->get_field_id( 'twitter_after' ); ?>"><?php _e("HTML After Tweets","twitsearch"); ?></label> 
    237255            <input type="text" size="4" value="<?php echo $instance['twitter_after']; ?>" id="<?php echo $this->get_field_id( 'twitter_after' ); ?>" name="<?php echo $this->get_field_name( 'twitter_after' ); ?>" /> 
     256        </p> 
     257 
     258        <!-- HTML Minutes to Cache Twitter Search --> 
     259        <p> 
     260            <label for="<?php echo $this->get_field_id( 'twitter_cache_minutes' ); ?>"><?php _e("Minutes to Cache Tweets","twitsearch"); ?></label> 
     261            <input type="text" size="3" value="<?php echo $instance['twitter_cache_minutes']; ?>" id="<?php echo $this->get_field_id( 'twitter_cache_minutes' ); ?>" name="<?php echo $this->get_field_name( 'twitter_cache_minutes' ); ?>" /> 
    238262        </p> 
    239263             
     
    278302        $this->q = $query; 
    279303         
    280         $cachedJSON = get_transient($this->q); 
    281                  
    282         if( $cachedJSON == false ){ 
    283  
     304        $tempJSON = get_option("twitsearch_cache_{$this->id}"); 
     305         
     306        $cachedJSON = $tempJSON['json']; 
     307         
     308        $time = time(); 
     309 
     310        if( $tempJSON ) 
     311            $from_time = $tempJSON['time']; 
     312        else 
     313            $from_time = $time; 
     314             
     315        $difference = (($time - $from_time) / 60); 
     316         
     317        if( ($difference > $this->cacheMinutes) || $cachedJSON == false ): // set up database cache object if no cached object found 
     318             
    284319            $this->currentUrl = $this->url . "?rpp=" . $this->tweetsToShow . "&q=" . urlencode($this->q); 
    285320             
    286             $snoopy = new Snoopy(); 
    287             $got = $snoopy->fetch($this->currentUrl);        
    288              
    289             if( $got ){ 
    290              
    291                $this->json = json_decode( $snoopy->results, true ); 
    292              
    293             if( array_key_exists('error', $this->json) ){ 
    294                 
    295                echo($this->json['error']); 
    296                 
    297                return null; 
    298             };    
    299              
    300             $results = array(); 
    301              
    302             if( $this->showReplies == false ){ 
    303                 foreach( $this->json['results'] as $index => $tweet ){                   
    304                      
    305                     if( !is_numeric($tweet['to_user_id']) ){ 
    306                         $results[] = $tweet; 
    307  
    308                     } 
    309                 } 
    310                 $this->json['results'] = $results; 
    311             } 
    312                          
    313             set_transient( $this->q,$this->json, 60*5 ); 
    314             } 
    315              
    316         }else{ 
     321            $got = wp_remote_get($this->currentUrl);         
     322 
     323            if( $got ): 
     324             
     325               $this->json = json_decode( $got['body'], true ); 
     326                 
     327                if( array_key_exists('error', $this->json) ): 
     328                                    
     329                    $twitsearch_cache = get_option("twitsearch_cache_{$this->id}"); 
     330     
     331                    if( $twitsearch_cache['json'] ): 
     332                        $cachedJSON = $twitsearch_cache['json']; 
     333                    else: 
     334                        $cachedJSON = false; 
     335                    endif; 
     336     
     337                    $this->json = $cachedJSON; 
     338                     
     339                    return; 
     340                    
     341                endif; 
     342                 
     343                $results = array(); 
     344                 
     345                if( $this->showReplies == false ): 
     346                 
     347                    foreach( $this->json['results'] as $index => $tweet ):               
     348                         
     349                        if( !is_numeric($tweet['to_user_id']) ): 
     350                            $results[] = $tweet; 
     351     
     352                        endif; 
     353                         
     354                    endforeach; 
     355                     
     356                    $this->json['results'] = $results; 
     357 
     358                    return; 
     359                     
     360                endif; 
     361                 
     362                $args = array("json" => $this->json,  
     363                              "time" => $time ); 
     364             
     365                update_option("twitsearch_cache_{$this->id}", $args ); 
     366                 
     367                $twitsearch_cache = get_option("twitsearch_cache_{$this->id}"); 
     368 
     369                if( $twitsearch_cache['json'] ): 
     370                    $cachedJSON = $twitsearch_cache['json']; 
     371                else: 
     372                    $cachedJSON = false; 
     373                endif; 
     374     
     375                $this->json = $cachedJSON; 
     376 
     377                return; 
     378                 
     379            else: 
     380             
     381                $twitsearch_cache = get_option("twitsearch_cache_{$this->id}"); 
     382 
     383                if( $twitsearch_cache['json'] ): 
     384                    $cachedJSON = $twitsearch_cache['json']; 
     385                else: 
     386                    $cachedJSON = false; 
     387                endif; 
     388 
     389                $this->json = $cachedJSON; 
     390 
     391                return; 
     392                 
     393            endif; 
     394         
     395        else: 
    317396         
    318397            $this->json = $cachedJSON; 
    319              
    320         } 
    321  
    322         return $this->json;  
     398         
     399        endif; 
     400 
     401        return $this->json; 
     402         
    323403    } 
    324404 
     
    326406       
    327407      echo $this->tpl['before']; 
    328            
    329         foreach( $this->json['results'] as $index => $tweet ){                   
    330             if( $index >= $this->tweetsToShow ){ 
    331                break; 
    332             }else{   
    333                $tweet['index'] = $index; 
    334                echo( $this->applyTemplate( $tweet, $this->tpl['tweet'] ) ); 
     408       
     409        if( !empty($this->json) && is_array($this->json) ): 
     410               
     411            foreach( $this->json['results'] as $index => $tweet ){                   
     412                if( $index >= $this->tweetsToShow ){ 
     413                   break; 
     414                }else{   
     415                   $tweet['index'] = $index; 
     416                   echo( $this->applyTemplate( $tweet, $this->tpl['tweet'] ) ); 
     417                } 
    335418            } 
    336         } 
     419             
     420        else: 
     421         
     422            echo "<li>" . __("No feed available.","twitsearch") . "</li>"; 
     423             
     424        endif; 
    337425         
    338426      echo $this->tpl['after']; 
Note: See TracChangeset for help on using the changeset viewer.