BP_Attachment_Avatar::crop( array $args = array() )
Crop the avatar.
Description
See also
- BP_Attachment::crop: for the list of parameters
Parameters
- $args
-
(Optional) Array of arguments for the cropping.
Default value: array()
Return
(array) The cropped avatars (full and thumb).
Source
File: bp-core/classes/class-bp-attachment-avatar.php
public function crop( $args = array() ) { // Bail if the original file is missing. if ( empty( $args['original_file'] ) ) { return false; } if ( ! bp_attachments_current_user_can( 'edit_avatar', $args ) ) { return false; } if ( 'user' === $args['object'] ) { $avatar_dir = 'avatars'; } else { $avatar_dir = sanitize_key( $args['object'] ) . '-avatars'; } $args['item_id'] = (int) $args['item_id']; /** * Original file is a relative path to the image * eg: /avatars/1/avatar.jpg */ $relative_path = sprintf( '/%s/%s/%s', $avatar_dir, $args['item_id'], basename( $args['original_file'] ) ); $absolute_path = $this->upload_path . $relative_path; // Bail if the avatar is not available. if ( ! file_exists( $absolute_path ) ) { return false; } if ( empty( $args['item_id'] ) ) { /** This filter is documented in bp-core/bp-core-avatars.php */ $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', dirname( $absolute_path ), $args['item_id'], $args['object'], $args['avatar_dir'] ); } else { /** This filter is documented in bp-core/bp-core-avatars.php */ $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', $this->upload_path . '/' . $args['avatar_dir'] . '/' . $args['item_id'], $args['item_id'], $args['object'], $args['avatar_dir'] ); } // Bail if the avatar folder is missing for this item_id. if ( ! file_exists( $avatar_folder_dir ) ) { return false; } // Delete the existing avatar files for the object. $existing_avatar = bp_core_fetch_avatar( array( 'object' => $args['object'], 'item_id' => $args['item_id'], 'html' => false, ) ); /** * Check that the new avatar doesn't have the same name as the * old one before deleting */ if ( ! empty( $existing_avatar ) && $existing_avatar !== $this->url . $relative_path ) { bp_core_delete_existing_avatar( array( 'object' => $args['object'], 'item_id' => $args['item_id'], 'avatar_path' => $avatar_folder_dir ) ); } // Make sure we at least have minimal data for cropping. if ( empty( $args['crop_w'] ) ) { $args['crop_w'] = bp_core_avatar_full_width(); } if ( empty( $args['crop_h'] ) ) { $args['crop_h'] = bp_core_avatar_full_height(); } // Get the file extension. $data = @getimagesize( $absolute_path ); $ext = $data['mime'] == 'image/png' ? 'png' : 'jpg'; $args['original_file'] = $absolute_path; $args['src_abs'] = false; $avatar_types = array( 'full' => '', 'thumb' => '' ); foreach ( $avatar_types as $key_type => $type ) { if ( 'thumb' === $key_type ) { $args['dst_w'] = bp_core_avatar_thumb_width(); $args['dst_h'] = bp_core_avatar_thumb_height(); } else { $args['dst_w'] = bp_core_avatar_full_width(); $args['dst_h'] = bp_core_avatar_full_height(); } $filename = wp_unique_filename( $avatar_folder_dir, uniqid() . "-bp{$key_type}.{$ext}" ); $args['dst_file'] = $avatar_folder_dir . '/' . $filename; $avatar_types[ $key_type ] = parent::crop( $args ); } // Remove the original. @unlink( $absolute_path ); // Return the full and thumb cropped avatars. return $avatar_types; }
Changelog
Version | Description |
---|---|
BuddyPress 2.3.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.