Making WordPress.org


Ignore:
Timestamp:
01/19/2017 06:48:03 AM (10 years ago)
Author:
dd32
Message:

Plugin Directory: Add stat recording for downloads to bump the plugin download counts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-serve.php

    r3081 r4728  
    179179                global $wpdb;
    180180
    181                 $stats = array(
     181                $stats_dedup_log_table = PLUGINS_TABLE_PREFIX . 'downloads';
     182                $stats_download_table = PLUGINS_TABLE_PREFIX . 'download_counts';
     183                $stats_download_daily_table = PLUGINS_TABLE_PREFIX . 'stats';
     184
     185                // Very basic de-duplication for downloads.
     186                $recent = $wpdb->get_var( $wpdb->prepare(
     187                        "SELECT `client_ip`
     188                        FROM {$stats_dedup_log_table}
     189                        WHERE
     190                                plugin_slug = %s AND
     191                                client_ip = %s AND
     192                                user_agent = %s AND
     193                                stamp BETWEEN %s AND %s
     194                        LIMIT 1",
     195                        $request['slug'],
     196                        $_SERVER['REMOTE_ADDR'],
     197                        $_SERVER['HTTP_USER_AGENT'],
     198                        gmdate( 'Y-m-d 00:00:00' ),
     199                        gmdate( 'Y-m-d 23:59:59' )
     200                ) );
     201
     202                if ( $recent ) {
     203                        return;
     204                }
     205
     206                $wpdb->query( $wpdb->prepare(
     207                        "INSERT INTO {$stats_download_table} (`plugin_slug`, `downloads`) VALUES ( %s, 1 ) ON DUPLICATE KEY UPDATE `downloads` = `downloads` + 1",
     208                        $stats['plugin_slug']
     209                ) );
     210
     211                $wpdb->query( $wpdb->prepare(
     212                        "INSERT INTO {$stats_download_daily_table} (`plugin_slug`, `stamp`, `downloads`) VALUES ( %s, %s, 1 ) ON DUPLICATE KEY UPDATE `downloads` = `downloads` + 1",
     213                        $stats['plugin_slug'],
     214                        gmdate( 'Y-m-d' )
     215                ) );
     216
     217                $wpdb->insert( $stats_dedup_log_table, array(
    182218                        'plugin_slug' => $request['slug'],
    183219                        'client_ip'   => $_SERVER['REMOTE_ADDR'],
    184                         'client_host' => gethostbyaddr( $_SERVER['REMOTE_ADDR'] ),
    185                         'user_agent'  => $_SERVER['HTTP_USER_AGENT']
    186                 );
    187                 // $wpdb->insert( stats_table, $stats );
    188                 // TODO: This is stored in bbPress tables still.
    189                 // $post_id = $this->get_post_id( $request['slug'] );
    190                 // $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->postmeta SET meta_value = meta_value + 1 WHERE post_id = %d AND meta_key = 'downloads'", $post_id ) );
     220                        'user_agent'  => $_SERVER['HTTP_USER_AGENT'],
     221                        'stamp'       => gmdate( 'Y-m-d H:i:s' )
     222                ) );
     223
    191224        }
    192225
Note: See TracChangeset for help on using the changeset viewer.