WordPress.org

Plugin Directory

Changeset 609653


Ignore:
Timestamp:
10/08/12 16:13:36 (19 months ago)
Author:
cfinke
Message:

Handling postview and clickthrough tracking in a proper init action instead of sending those requests directly to the feed-statistics.php file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wordpress-feed-statistics/trunk/feed-statistics.php

    r609644 r609653  
    1111 
    1212if (preg_match("/feed\-statistics\.php$/", $_SERVER["PHP_SELF"])) { 
     13    /** 
     14     * Deprecated. Versions before 2.0 sent requests directly to this file, which 
     15     * required hacky ways of loading some of the WordPress core stuff. Version 2 
     16     * does everything in an init action to catch these views and redirects. 
     17     * This code will be removed in the next version; it's left in only to catch 
     18     * views and redirects from stored feeds. 
     19     */ 
     20     
    1321    if (!defined('DB_NAME')) { 
    1422        $root = __FILE__; 
     
    220228                 
    221229                break; 
     230        } 
     231         
     232        if ( isset( $_GET['feed-stats-post-id'] ) ) { 
     233            if ( ! empty( $_GET['feed-stats-view'] ) && get_option( "feed_statistics_track_postviews" ) ) { 
     234                $wpdb->insert( 
     235                    $table_prefix . 'feed_postviews', 
     236                    array( 
     237                        'post_id' => $_GET['feed-stats-view'], 
     238                        'time' => date( 'Y-m-d H:i:s' ) 
     239                    ), 
     240                    array( 
     241                        '%d', 
     242                        '%s' 
     243                    ) 
     244                ); 
     245            } 
     246 
     247            header("Content-Type: image/gif"); 
     248            echo base64_decode("R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); 
     249            die(); 
     250        } 
     251 
     252        if ( isset( $_GET['feed-stats-url'] ) ) { 
     253            $url = trim( base64_decode( $_GET['feed-stats-url'] ) ); 
     254             
     255            if ( ! $url ) die; 
     256             
     257            if ( get_option( 'feed_statistics_track_clickthroughs' ) ) { 
     258                $link_id = 0; 
     259 
     260                $wpdb->hide_errors(); 
     261                 
     262                $link_id = $wpdb->get_var( 
     263                    $wpdb->prepare( 
     264                        "SELECT id FROM " . $table_prefix . "feed_links WHERE url=%d", 
     265                        $url 
     266                    ) 
     267                ); 
     268                 
     269                if ( ! $link_id ) { 
     270                    if ( 
     271                        $wpdb->insert( 
     272                            $table_prefix . 'feed_links', 
     273                            array( 'url' => $url ), 
     274                            array( '%s' ) 
     275                        ) 
     276                    ) { 
     277                        $link_id = $wpdb->insert_id; 
     278                    } 
     279                } 
     280 
     281                if ( $link_id ) { 
     282                    $wpdb->insert( 
     283                        $table_prefix . 'feed_clickthroughs', 
     284                        array( 
     285                            'link_id' => $link_id, 
     286                            'time' => date( 'Y-m-d H:i:s' ) 
     287                        ), 
     288                        array( 
     289                            '%d', 
     290                            '%s' 
     291                        ) 
     292                    ); 
     293                } 
     294            } 
     295 
     296            $wpdb->show_errors(); 
     297 
     298            header( 'Location: ' . $url ); 
     299            die(); 
    222300        } 
    223301         
     
    736814            $this_file = __FILE__; 
    737815             
    738             $redirect_url = feed_statistics_get_plugin_url() ."?url="; 
    739          
    740             $content = preg_replace("/(<a[^>]+href=)(['\"])([^'\"]+)(['\"])([^>]*>)/e", "'$1\"$redirect_url'.base64_encode('\\3').'\"$5'", $content); 
     816            $redirect_url = home_url( '/?feed-stats-url=' ); 
     817         
     818            $content = preg_replace("/(<a[^>]+href=)(['\"])([^'\"]+)(['\"])([^>]*>)/e", "'$1\"'.esc_url('$redirect_url' . base64_encode('\\3') ) . '\"$5'", $content); 
    741819        }    
    742820         
     
    748826         
    749827        if (is_feed()) { 
    750             $content .= ' <img src="'.feed_statistics_get_plugin_url().'?view=1&post_id='.$id.'" width="1" height="1" style="display: none;" />'; 
     828            $content .= ' <img src="' . esc_url( home_url( '/?feed-stats-post-id=' . $id ) ) . '" width="1" height="1" style="display: none;" />'; 
    751829        } 
    752830         
Note: See TracChangeset for help on using the changeset viewer.