Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
12/11/2021 01:40:24 PM (2 years ago)
Author:
imath
Message:

Make sure the new_avatar activity can use the avatar crop results

Since [13175] the BP_Attachment_Avatar::crop() method include the timestamp the avatar was generated on into its returned array. This array is now transported into the action the function creating a new_avatar activity hooks to. This function (bp_members_new_avatar_activity()) now accepts 3 more parameters included the transported crop results. This makes it possible to use the timestamp when the avatar was generated on as the new_avatar activity recorded time. Doing so, we don't need to add an extra activity meta to store the name of the avatar file to be sure to display the avatar the user had at the time the activity was created.

Props vapvarun, oztaser

See #8581

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/bp-core-avatars.php

    r13176 r13177  
    11771177 *
    11781178 * @since 2.3.0
     1179 * @since 10.0.0 Adds the `$return` param to eventually return the crop result.
    11791180 *
    11801181 * @param string $data    Base64 encoded image.
    11811182 * @param int    $item_id Item to associate.
    1182  * @return bool True on success, false on failure.
    1183  */
    1184 function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
     1183 * @param string $return  Whether to get the crop `array` or a `boolean`. Defaults to `boolean`.
     1184 * @return array|bool True on success, false on failure.
     1185 */
     1186function bp_avatar_handle_capture( $data = '', $item_id = 0, $return = 'boolean' ) {
    11851187    if ( empty( $data ) || empty( $item_id ) ) {
    11861188        return false;
     
    12381240        $crop_args = array( 'item_id' => $item_id, 'original_file' => $avatar_to_crop, 'crop_x' => 0, 'crop_y' => 0 );
    12391241
     1242        if ( 'array' === $return ) {
     1243            return bp_core_avatar_handle_crop( $crop_args, 'array' );
     1244        }
     1245
    12401246        return bp_core_avatar_handle_crop( $crop_args );
    12411247    } else {
     
    12481254 *
    12491255 * @since 1.1.0
     1256 * @since 10.0.0 Adds the `$return` param to eventually return the crop result.
    12501257 *
    12511258 * @param array|string $args {
     
    12661273 *     @type int         $crop_y        The vertical starting point of the crop. Default: 0.
    12671274 * }
    1268  * @return bool True on success, false on failure.
    1269  */
    1270 function bp_core_avatar_handle_crop( $args = '' ) {
     1275 * @param string       $return Whether to get the crop `array` or a `boolean`. Defaults to `boolean`.
     1276 * @return array|bool True or the crop result on success, false on failure.
     1277 */
     1278function bp_core_avatar_handle_crop( $args = '', $return = 'boolean' ) {
    12711279
    12721280    $r = bp_parse_args(
     
    13071315    }
    13081316
     1317    if ( 'array' === $return ) {
     1318        return $cropped;
     1319    }
     1320
    13091321    return true;
    13101322}
     
    13531365        }
    13541366
    1355         if ( ! bp_avatar_handle_capture( $webcam_avatar, $avatar_data['item_id'] ) ) {
     1367        $cropped_webcam_avatar = bp_avatar_handle_capture( $webcam_avatar, $avatar_data['item_id'], 'array' );
     1368
     1369        if ( ! $cropped_webcam_avatar ) {
    13561370            wp_send_json_error( array(
    13571371                'feedback_code' => 1
     
    13601374        } else {
    13611375            $return = array(
    1362                 'avatar' => esc_url( bp_core_fetch_avatar( array(
    1363                     'object'  => $avatar_data['object'],
    1364                     'item_id' => $avatar_data['item_id'],
    1365                     'html'    => false,
    1366                     'type'    => 'full',
    1367                 ) ) ),
     1376                'avatar' => esc_url(
     1377                    bp_core_fetch_avatar(
     1378                        array(
     1379                            'object'  => $avatar_data['object'],
     1380                            'item_id' => $avatar_data['item_id'],
     1381                            'html'    => false,
     1382                            'type'    => 'full',
     1383                        )
     1384                    )
     1385                ),
    13681386                'feedback_code' => 2,
    13691387                'item_id'       => $avatar_data['item_id'],
     
    13771395             *
    13781396             * @since 6.0.0
     1397             * @since 10.0.0 Adds a new param: an array containing the full, thumb avatar and the timestamp.
    13791398             *
    1380              * @param string $item_id     Inform about the user id the avatar was set for.
    1381              * @param string $type        Inform about the way the avatar was set ('camera').
    1382              * @param array  $avatar_data Array of parameters passed to the avatar handler.
     1399             * @param string $item_id               Inform about the user id the avatar was set for.
     1400             * @param string $type                  Inform about the way the avatar was set ('camera').
     1401             * @param array  $avatar_data           Array of parameters passed to the crop handler.
     1402             * @param array  $cropped_webcam_avatar Array containing the full, thumb avatar and the timestamp.
    13831403             */
    1384             do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data );
     1404            do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data, $cropped_webcam_avatar );
    13851405
    13861406            wp_send_json_success( $return );
     
    14141434
    14151435    // Handle crop.
    1416     if ( bp_core_avatar_handle_crop( $r ) ) {
     1436    $cropped_avatar = bp_core_avatar_handle_crop( $r, 'array' );
     1437
     1438    if ( $cropped_avatar ) {
    14171439        $return = array(
    1418             'avatar' => esc_url( bp_core_fetch_avatar( array(
    1419                 'object'  => $avatar_data['object'],
    1420                 'item_id' => $avatar_data['item_id'],
    1421                 'html'    => false,
    1422                 'type'    => 'full',
    1423             ) ) ),
     1440            'avatar' => esc_url(
     1441                bp_core_fetch_avatar(
     1442                    array(
     1443                        'object'  => $avatar_data['object'],
     1444                        'item_id' => $avatar_data['item_id'],
     1445                        'html'    => false,
     1446                        'type'    => 'full',
     1447                    )
     1448                )
     1449            ),
    14241450            'feedback_code' => 2,
    14251451            'item_id'       => $avatar_data['item_id'],
     
    14311457
    14321458            /** This action is documented in bp-core/bp-core-avatars.php */
    1433             do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
     1459            do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r, $cropped_avatar );
    14341460        } elseif ( 'group' === $avatar_data['object'] ) {
    14351461            /** This action is documented in bp-groups/bp-groups-screens.php */
    1436             do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
     1462            do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r, $cropped_avatar );
    14371463        }
    14381464
Note: See TracChangeset for help on using the changeset viewer.