Skip to:
Content

BuddyPress.org

Changeset 10641


Ignore:
Timestamp:
03/09/2016 11:40:10 AM (4 years ago)
Author:
djpaul
Message:

Add filters and actions to support short-circuiting of standard avatar/cover image uploads/crops.

Fixes #6948

Props DJPaul, imath

Location:
trunk/src/bp-core
Files:
2 edited

Legend:

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

    r10497 r10641  
    411411    ), 'attachments_get_attachment_src' );
    412412
     413    /**
     414     * Filters whether or not to handle fetching a BuddyPress image attachment.
     415     *
     416     * If you want to override this function, make sure you return false.
     417     *
     418     * @since 2.5.1
     419     *
     420     * @param null|string $value If null is returned, proceed with default behaviour. Otherwise, value returned verbatim.
     421     * @param array $r {
     422     *     @type string $object_dir The object dir (eg: members/groups). Defaults to members.
     423     *     @type int    $item_id    The object id (eg: a user or a group id). Defaults to current user.
     424     *     @type string $type       The type of the attachment which is also the subdir where files are saved.
     425     *                              Defaults to 'cover-image'
     426     *     @type string $file       The name of the file.
     427     * }
     428     */
     429    $pre_filter = apply_filters( 'bp_attachments_pre_get_attachment', null, $r );
     430    if ( $pre_filter !== null ) {
     431        return $pre_filter;
     432    }
     433
    413434    // Get BuddyPress Attachments Uploads Dir datas.
    414435    $bp_attachments_uploads_dir = bp_attachments_uploads_dir_get();
     
    478499function bp_attachments_delete_file( $args = array() ) {
    479500    $attachment_path = bp_attachments_get_attachment( 'path', $args );
     501
     502    /**
     503     * Filters whether or not to handle deleting an existing BuddyPress attachment.
     504     *
     505     * If you want to override this function, make sure you return false.
     506     *
     507     * @since 2.5.1
     508     *
     509     * @param bool $value Whether or not to delete the BuddyPress attachment.
     510     * @param array Array of arguments for the attachment deletion.
     511     */
     512    if ( ! apply_filters( 'bp_attachments_pre_delete_file', true, $args ) ) {
     513        return true;
     514    }
    480515
    481516    if ( empty( $attachment_path ) ) {
     
    12241259    }
    12251260
     1261    /**
     1262     * Filters whether or not to handle cover image uploading.
     1263     *
     1264     * If you want to override this function, make sure you return an array with the 'result' key set.
     1265     *
     1266     * @since 2.5.1
     1267     *
     1268     * @param array $value
     1269     * @param array $bp_params
     1270     * @param array $needs_reset Stores original value of certain globals we need to revert to later.
     1271     * @param array $object_data
     1272     */
     1273    $pre_filter = apply_filters( 'bp_attachments_pre_cover_image_ajax_upload', array(), $bp_params, $needs_reset, $object_data );
     1274    if ( isset( $pre_filter['result'] ) ) {
     1275        bp_attachments_json_response( $pre_filter['result'], $is_html4, $pre_filter );
     1276    }
     1277
    12261278    $cover_image_attachment = new BP_Attachment_Cover_Image();
    12271279    $uploaded = $cover_image_attachment->upload( $_FILES );
  • trunk/src/bp-core/bp-core-avatars.php

    r10497 r10641  
    704704    extract( $args, EXTR_SKIP );
    705705
     706    /**
     707     * Filters whether or not to handle deleting an existing avatar.
     708     *
     709     * If you want to override this function, make sure you return false.
     710     *
     711     * @since 2.5.1
     712     *
     713     * @param bool $value Whether or not to delete the avatar.
     714     * @param array $args {
     715     *     Array of function parameters.
     716     *
     717     *     @type bool|int    $item_id    ID of the item whose avatar you're deleting.
     718     *                                   Defaults to the current item of type $object.
     719     *     @type string      $object     Object type of the item whose avatar you're
     720     *                                   deleting. 'user', 'group', 'blog', or custom.
     721     *                                   Default: 'user'.
     722     *     @type bool|string $avatar_dir Subdirectory where avatar is located.
     723     *                                   Default: false, which falls back on the default location
     724     *                                   corresponding to the $object.
     725     * }
     726     */
     727    if ( ! apply_filters( 'bp_core_pre_delete_existing_avatar', true, $args ) ) {
     728        return true;
     729    }
     730
    706731    if ( empty( $item_id ) ) {
    707732        if ( 'user' == $object )
     
    10681093    if ( empty( $data ) || empty( $item_id ) ) {
    10691094        return false;
     1095    }
     1096
     1097    /**
     1098     * Filters whether or not to handle avatar webcam capture.
     1099     *
     1100     * If you want to override this function, make sure you return false.
     1101     *
     1102     * @since 2.5.1
     1103     *
     1104     * @param bool   $value   Whether or not to crop.
     1105     * @param string $data    Base64 encoded image.
     1106     * @param int    $item_id Item to associate.
     1107     */
     1108    if ( ! apply_filters( 'bp_avatar_pre_handle_capture', true, $data, $item_id ) ) {
     1109        return true;
    10701110    }
    10711111
Note: See TracChangeset for help on using the changeset viewer.