WordPress.org

Making WordPress.org


Ignore:
Timestamp:
04/07/2017 09:19:44 PM (2 years ago)
Author:
coffee2code
Message:

Support Forums, User Badges: Use get_authors() and get_contributors() from \WordPressdotorg\Forums\(Plugin|Theme) instance rather than duplicating their functionality.

See #2697, #2701.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-bbp-user-badges/inc/class-plugin.php

    r5156 r5287  
    348348     */
    349349    public function is_user_author( $user_login, $type, $slug ) {
    350         global $wpdb;
    351 
    352         $authors = wp_cache_get( $slug, $type . '_authors' );
    353 
    354         if ( false === $authors ) {
    355             if ( 'plugin' === $type ) {
    356                 // Get users who have commit access.
    357                 $authors = $wpdb->get_col( $wpdb->prepare(
    358                     "SELECT user FROM " . PLUGINS_TABLE_PREFIX . "svn_access WHERE `path` = %s",
    359                     '/' . $slug
    360                 ) );
    361             }
    362             else {
    363                 // TODO: Change this if themes support having more than one author.
    364                 $author_id = $wpdb->get_var( $wpdb->prepare(
    365                     "SELECT post_author FROM " . self::$themes_table_prefix . "posts WHERE post_name = %s LIMIT 1",
    366                     $slug
    367                 ) );
    368                 if ( $author_id ) {
    369                     $author = get_user_by( 'id', $author_id );
    370                     $authors = array( $author->user_login );
    371                 }
    372             }
    373 
    374             wp_cache_add( $slug, $authors, $type . '_authors', HOUR_IN_SECONDS );
    375         }
     350        if ( 'plugin' === $type ) {
     351            $compat = class_exists( '\WordPressdotorg\Forums\Plugin' ) ? \WordPressdotorg\Forums\Plugin::get_instance()->plugins : '';
     352        } else {
     353            $compat = class_exists( '\WordPressdotorg\Forums\Theme' ) ? \WordPressdotorg\Forums\Theme::get_instance()->themes : '';
     354        }
     355        $authors = $compat ? $compat->get_authors( $slug ) : array();
    376356
    377357        return $authors && in_array( $user_login, $authors );
     
    390370     */
    391371    public function is_user_contributor( $user_login, $type, $slug ) {
    392         global $wpdb;
    393 
    394         $contributors = wp_cache_get( $slug, $type . '_contributors' );
    395 
    396         if ( false === $contributors ) {
    397             if ( 'plugin' === $type ) {
    398                 // TODO: Change this when the Plugin Directory switches over to WordPress.
    399                 $contributors = $wpdb->get_var( $wpdb->prepare(
    400                     'SELECT meta_value FROM ' . PLUGINS_TABLE_PREFIX . 'meta m LEFT JOIN ' . PLUGINS_TABLE_PREFIX . 'topics t ON m.object_id = t.topic_id WHERE t.topic_slug = %s AND m.object_type = %s AND m.meta_key = %s',
    401                     $slug,
    402                     'bb_topic',
    403                     'contributors'
    404                 ) );
    405 
    406                 if ( $contributors ) {
    407                     $contributors = unserialize( $contributors );
    408                 }
    409             }
    410             else {
    411                 // Themes have no additional contributors at the moment.
    412                 // TODO: Change this if themes support specifying contributors.
    413                 $contributors = array();
    414             }
    415 
    416             wp_cache_add( $slug, $contributors, $type . '_contributors', HOUR_IN_SECONDS );
    417         }
     372        if ( 'plugin' === $type ) {
     373            $compat = class_exists( '\WordPressdotorg\Forums\Plugin' ) ? \WordPressdotorg\Forums\Plugin::get_instance()->plugins : '';
     374        } else {
     375            $compat = class_exists( '\WordPressdotorg\Forums\Theme' ) ? \WordPressdotorg\Forums\Theme::get_instance()->themes : '';
     376        }
     377        $contributors = $compat ? $compat->get_contributors( $slug ) : array();
    418378
    419379        return $contributors && in_array( $user_login, $contributors );
Note: See TracChangeset for help on using the changeset viewer.