Skip to:
Content

BuddyPress.org

Changeset 10134


Ignore:
Timestamp:
09/24/2015 10:28:21 AM (11 years ago)
Author:
imath
Message:

Make sure the xprofile_avatar_uploaded action is fired once the avatar of the user is set.

In 2.3.0, we introduced a new UI to manage avatar. It now uses Ajax to upload and set the avatar. Unfortunately a confusion was made about the xprofile_avatar_uploaded action. It was firing immediately after the avatar was uploaded but before it has been set using the cropping tool.

This commit is:

  • making sure the action is fired at the right time
  • adding new parameters to the action to inform about the User ID and the way the avatar was set ("crop" or "camera")
  • making sure an activity will be generated if the avatar was set within the wp-admin/extended-profile.

Props r-a-y, landwire

See #6612 (branch 2.3)

Location:
branches/2.3/src
Files:
3 edited

Legend:

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

    r9860 r10134  
    988988        $name = trim( substr( $name, 0, - ( 1 + strlen( $name_parts['extension'] ) ) ) );
    989989
    990         if ( 'user' === $bp_params['object'] ) {
    991                 do_action( 'xprofile_avatar_uploaded' );
    992         }
    993 
    994990        // Finally return the avatar to the editor
    995991        bp_attachments_json_response( true, $is_html4, array(
    … …  
    10421038                // Crop to default values
    10431039                $crop_args = array( 'item_id' => $item_id, 'original_file' => $avatar_to_crop, 'crop_x' => 0, 'crop_y' => 0 );
    1044 
    1045                 do_action( 'xprofile_avatar_uploaded' );
    10461040
    10471041                return bp_core_avatar_handle_crop( $crop_args );
    … …  
    11791173                        );
    11801174
    1181                         do_action( 'xprofile_screen_change_avatar' );
     1175                        /**
     1176                         * Fires if the new avatar was successfully captured.
     1177                         *
     1178                         * @since 1.1.0 Used to inform the avatar was successfully cropped
     1179                         * @since 2.3.4 Add two new parameters to inform about the user id and
     1180                         *              about the way the avatar was set (eg: 'crop' or 'camera')
     1181                         *              Move the action at the right place, once the avatar is set
     1182                         *
     1183                         * @param string $item_id Inform about the user id the avatar was set for
     1184                         * @param string $type    Inform about the way the avatar was set ('camera')
     1185                         */
     1186                        do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
    11821187
    11831188                        wp_send_json_success( $return );
    … …  
    12241229
    12251230                if ( 'user' === $avatar_data['object'] ) {
    1226                         do_action( 'xprofile_screen_change_avatar' );
     1231                        /**
     1232                         * Fires if the new avatar was successfully cropped.
     1233                         *
     1234                         * @since 1.1.0 Used to inform the avatar was successfully cropped
     1235                         * @since 2.3.4 Add two new parameters to inform about the user id and
     1236                         *              about the way the avatar was set (eg: 'crop' or 'camera')
     1237                         *              Move the action at the right place, once the avatar is set
     1238                         *
     1239                         * @param string $item_id Inform about the user id the avatar was set for
     1240                         * @param string $type Inform about the way the avatar was set ('crop')
     1241                         */
     1242                        do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
    12271243                }
    12281244
  • branches/2.3/src/bp-xprofile/bp-xprofile-activity.php

    r9819 r10134  
    203203 * Adds an activity stream item when a user has uploaded a new avatar.
    204204 *
    205  * @since BuddyPress (1.0.0)
     205 * @since 1.0.0
     206 * @since 2.3.4 Add new parameter to get the user id the avatar was set for
    206207 *
    207208 * @package BuddyPress XProfile
    208209 * @uses bp_activity_add() Adds an entry to the activity component tables for a
    209210 *                         specific activity
    210  */
    211 function bp_xprofile_new_avatar_activity() {
    212 
    213         // Bail if activity component is not active
    214         if ( ! bp_is_active( 'activity' ) ) {
    215                 return false;
     211 *
     212 * @param  int $user_id The user id the avatar was set for
     213 */
     214function bp_xprofile_new_avatar_activity( $user_id = 0 ) {
     215
     216        // Bail if activity component is not active
     217        if ( ! bp_is_active( 'activity' ) ) {
     218                return false;
     219        }
     220
     221        if ( empty( $user_id ) ) {
     222                $user_id = bp_displayed_user_id();
    216223        }
    217224
    … …  
    219226         * Filters the user ID when a user has uploaded a new avatar.
    220227         *
    221          * @since BuddyPress (1.5.0)
    222          *
    223          * @param int $value ID of the displayed user.
    224          */
    225         $user_id = apply_filters( 'bp_xprofile_new_avatar_user_id', bp_displayed_user_id() );
     228         * @since 1.5.0
     229         *
     230         * @param int $user_id ID of the user the avatar was set for.
     231         */
     232        $user_id = apply_filters( 'bp_xprofile_new_avatar_user_id', $user_id );
    226233
    227234        // Add the activity
  • branches/2.3/src/bp-xprofile/bp-xprofile-screens.php

    r9819 r10134  
    264264                         * Fires right before the redirect, after processing a new avatar.
    265265                         *
    266                          * @since BuddyPress (1.1.0)
     266                         * @since 1.1.0
     267                         * @since 2.3.4 Add two new parameters to inform about the user id and
     268                         *              about the way the avatar was set (eg: 'crop' or 'camera')
     269                         *
     270                         * @param string $item_id Inform about the user id the avatar was set for
     271                         * @param string $value Inform about the way the avatar was set ('crop')
    267272                         */
    268                         do_action( 'xprofile_avatar_uploaded' );
     273                        do_action( 'xprofile_avatar_uploaded', (int) $args['item_id'], 'crop' );
    269274                        bp_core_add_message( __( 'Your new profile photo was uploaded successfully.', 'buddypress' ) );
    270275                        bp_core_redirect( bp_displayed_user_domain() );
Note: See TracChangeset for help on using the changeset viewer.