Skip to:
Content

BuddyPress.org

Ticket #7424: 7424.01.patch

File 7424.01.patch, 6.3 KB (added by r-a-y, 2 years ago)
  • src/bp-core/bp-core-avatars.php

     
    13611361add_action( 'wp_ajax_bp_avatar_set', 'bp_avatar_ajax_set' );
    13621362
    13631363/**
    1364  * Replace default WordPress avatars with BP avatars, if available.
     1364 * Filter {@link get_avatar_data()} to use the BuddyPress user avatar.
    13651365 *
    1366  * See 'get_avatar' filter description in wp-includes/pluggable.php.
     1366 * @since 2.9.0
    13671367 *
    1368  * @since 1.1.0
    1369  * @since 2.4.0 Added $args parameter to coincide with WordPress 4.2.0.
    1370  *
    1371  * @param string            $avatar  The avatar path passed to 'get_avatar'.
    1372  * @param int|string|object $user    A user ID, email address, or comment object.
    1373  * @param int               $size    Size of the avatar image ('thumb' or 'full').
    1374  * @param string            $default URL to a default image to use if no avatar is available.
    1375  * @param string            $alt     Alternate text to use in image tag. Default: ''.
    1376  * @param array             $args    Arguments passed to get_avatar_data(), after processing.
    1377  * @return string BP avatar path, if found; else the original avatar path.
     1368 * @param  array  $args        Arguments passed to get_avatar_data(), after processing.
     1369 * @param  mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
     1370 *                            user email, WP_User object, WP_Post object, or WP_Comment object.
     1371 * @return array
    13781372 */
    1379 function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '', $args = array() ) {
    1380         global $pagenow;
     1373function bp_core_get_avatar_data_filter( $args, $id_or_email ) {
     1374        $user = null;
    13811375
    1382         // Don't filter if inside WordPress options page and force_default is true.
    1383         if ( 'options-discussion.php' === $pagenow && true === $args['force_default'] ) {
    1384                 return $avatar;
     1376        // Ugh, hate duplicating code; process the user identifier.
     1377        if ( is_numeric( $id_or_email ) ) {
     1378                $user = get_user_by( 'id', absint( $id_or_email ) );
     1379        } elseif ( $id_or_email instanceof WP_User ) {
     1380                // User Object
     1381                $user = $id_or_email;
     1382        } elseif ( $id_or_email instanceof WP_Post ) {
     1383                // Post Object
     1384                $user = get_user_by( 'id', (int) $id_or_email->post_author );
     1385        } elseif ( $id_or_email instanceof WP_Comment && ! empty( $id_or_email->user_id ) ) {
     1386                $user = get_user_by( 'id', (int) $id_or_email->user_id );
    13851387        }
    13861388
    1387         // If passed an object, assume $user->user_id.
    1388         if ( is_object( $user ) ) {
    1389                 if ( isset( $user->user_id ) ) {
    1390                         $id = $user->user_id;
    1391                 } else {
    1392                         $id = $user->ID;
    1393                 }
    1394 
    1395         // If passed a number, assume it was a $user_id.
    1396         } elseif ( is_numeric( $user ) ) {
    1397                 $id = $user;
    1398 
    1399         // If passed a string and that string returns a user, get the $id.
    1400         } elseif ( is_string( $user ) && ( $user_by_email = get_user_by( 'email', $user ) ) ) {
    1401                 $id = $user_by_email->ID;
     1389        // No user, so bail.
     1390        if ( null === $user ) {
     1391                return $args;
    14021392        }
    14031393
    1404         // If somehow $id hasn't been assigned, return the result of get_avatar.
    1405         if ( empty( $id ) ) {
    1406                 return !empty( $avatar ) ? $avatar : $default;
    1407         }
    1408 
    1409         // Image alt tag.
    1410         if ( empty( $alt ) ) {
    1411                 $alt = sprintf( __( 'Profile photo of %s', 'buddypress' ), bp_core_get_user_displayname( $id ) );
    1412         }
     1394        // Set BuddyPress-specific avatar args.
     1395        $avatar_args = $args;
     1396        $avatar_args['item_id'] = $user->ID;
     1397        $avatar_args['html']    = false;
    14131398
    1414         // Use the 'thumb' type, unless the requested width is bigger than
    1415         // BP's thumb width.
    1416         $type = 'thumb';
    1417         if ( (int) $size > bp_core_avatar_thumb_width() ) {
    1418                 $type = 'full';
     1399        // Get the BuddyPress avatar URL.
     1400        if ( $bp_avatar = bp_core_fetch_avatar( $avatar_args ) ) {
     1401                $args['url'] = $bp_avatar;
    14191402        }
    14201403
    1421         $avatar_args = array(
    1422                 'item_id' => $id,
    1423                 'type'    => $type,
    1424                 'width'   => $size,
    1425                 'height'  => $size,
    1426                 'alt'     => $alt,
    1427         );
    1428 
    1429         // Support new arguments as of WordPress 4.2.0.
    1430         if ( ! empty( $args['width'] ) ) {
    1431                 $avatar_args['width'] = $args['width'];
    1432         }
    1433         if ( ! empty( $args['height'] ) ) {
    1434                 $avatar_args['height'] = $args['height'];
    1435         }
    1436         if ( ! empty( $args['class'] ) ) {
    1437                 $avatar_args['class'] = $args['class'];
    1438         }
    1439         if ( ! empty( $args['class'] ) ) {
    1440                 $avatar_args['class'] = $args['class'];
    1441         }
    1442         if ( ! empty( $args['extra_attr'] ) ) {
    1443                 $avatar_args['extra_attr'] = $args['extra_attr'];
    1444         }
    1445         if ( ! empty( $args['scheme'] ) ) {
    1446                 $avatar_args['scheme'] = $args['scheme'];
    1447         }
    1448         if ( ! empty( $args['force_default'] ) ) {
    1449                 $avatar_args['force_default'] = $args['force_default'];
    1450         }
    1451         if ( ! empty( $args['rating'] ) ) {
    1452                 $avatar_args['rating'] = $args['rating'];
    1453         }
    1454 
    1455         // Let BuddyPress handle the fetching of the avatar.
    1456         $bp_avatar = bp_core_fetch_avatar( $avatar_args );
    1457 
    1458         // If BuddyPress found an avatar, use it. If not, use the result of get_avatar.
    1459         return ( !$bp_avatar ) ? $avatar : $bp_avatar;
     1404        return $args;
    14601405}
    1461 add_filter( 'get_avatar', 'bp_core_fetch_avatar_filter', 10, 6 );
     1406add_filter( 'get_avatar_data', 'bp_core_get_avatar_data_filter', 10, 2 );
    14621407
    14631408/**
    14641409 * Is the current avatar upload error-free?
  • new file src/bp-core/deprecated/2.9.php

    new file mode 100644
    - +  
     1<?php
     2/**
     3 * Deprecated functions.
     4 *
     5 * @deprecated 2.9.0
     6 */
     7
     8// Exit if accessed directly.
     9defined( 'ABSPATH' ) || exit;
     10
     11/**
     12 * Replace default WordPress avatars with BP avatars, if available.
     13 *
     14 * See 'get_avatar' filter description in wp-includes/pluggable.php.
     15 *
     16 * @since 1.1.0
     17 * @since 2.4.0 Added $args parameter to coincide with WordPress 4.2.0.
     18 *
     19 * @param string            $avatar  The avatar path passed to 'get_avatar'.
     20 * @param int|string|object $user    A user ID, email address, or comment object.
     21 * @param int               $size    Size of the avatar image ('thumb' or 'full').
     22 * @param string            $default URL to a default image to use if no avatar is available.
     23 * @param string            $alt     Alternate text to use in image tag. Default: ''.
     24 * @param array             $args    Arguments passed to get_avatar_data(), after processing.
     25 * @return string BP avatar path, if found; else the original avatar path.
     26 */
     27function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '', $args = array() ) {
     28        _deprecated_function( __FUNCTION__, '2.9' );
     29        return $avatar;
     30}
     31 No newline at end of file