BP_Attachment::crop( array $args = array() )
Crop an image file.
Description
Parameters
- $args
-
(Optional)
- 'original_file'
(string) The source file (absolute path) for the Attachment. - 'crop_x'
(int) The start x position to crop from. - 'crop_y'
(int) The start y position to crop from. - 'crop_w'
(int) The width to crop. - 'crop_h'
(int) The height to crop. - 'dst_w'
(int) The destination width. - 'dst_h'
(int) The destination height. - 'src_abs'
(int) Optional. If the source crop points are absolute. - 'dst_file'
(string) Optional. The destination file to write to.
Default value: array()
- 'original_file'
Return
(string|WP_Error) New filepath on success, WP_Error on failure.
Source
File: bp-core/classes/class-bp-attachment.php
public function crop( $args = array() ) { $wp_error = new WP_Error(); $r = bp_parse_args( $args, array( 'original_file' => '', 'crop_x' => 0, 'crop_y' => 0, 'crop_w' => 0, 'crop_h' => 0, 'dst_w' => 0, 'dst_h' => 0, 'src_abs' => false, 'dst_file' => false, ), 'bp_attachment_crop_args' ); if ( empty( $r['original_file'] ) || ! file_exists( $r['original_file'] ) ) { $wp_error->add( 'crop_error', __( 'Cropping the file failed: missing source file.', 'buddyboss' ) ); return $wp_error; } // Check image file pathes. $path_error = __( 'Cropping the file failed: the file path is not allowed.', 'buddyboss' ); // Make sure it's coming from an uploaded file. if ( false === strpos( $r['original_file'], $this->upload_path ) ) { $wp_error->add( 'crop_error', $path_error ); return $wp_error; } /** * If no destination file is provided, WordPress will use a default name * and will write the file in the source file's folder. * If a destination file is provided, we need to make sure it's going into uploads. */ if ( ! empty( $r['dst_file'] ) && false === strpos( $r['dst_file'], $this->upload_path ) ) { $wp_error->add( 'crop_error', $path_error ); return $wp_error; } // Check image file types. $check_types = array( 'src_file' => array( 'file' => $r['original_file'], 'error' => __( 'source file', 'buddyboss' ) ) ); if ( ! empty( $r['dst_file'] ) ) { $check_types['dst_file'] = array( 'file' => $r['dst_file'], 'error' => __( 'destination file', 'buddyboss' ) ); } /** * WordPress image supported types. * @see wp_attachment_is() */ $supported_image_types = array( 'jpg' => 1, 'jpeg' => 1, 'jpe' => 1, 'gif' => 1, 'png' => 1, ); foreach ( $check_types as $file ) { $is_image = wp_check_filetype( $file['file'] ); $ext = $is_image['ext']; if ( empty( $ext ) || empty( $supported_image_types[ $ext ] ) ) { $wp_error->add( 'crop_error', sprintf( __( 'Cropping the file failed: %s is not a supported image file.', 'buddyboss' ), $file['error'] ) ); return $wp_error; } } // Add the image.php to the required WordPress files, if it's not already the case. $required_files = array_flip( $this->required_wp_files ); if ( ! isset( $required_files['image'] ) ) { $this->required_wp_files[] = 'image'; } // Load the files. $this->includes(); // Finally crop the image. return wp_crop_image( $r['original_file'], (int) $r['crop_x'], (int) $r['crop_y'], (int) $r['crop_w'], (int) $r['crop_h'], (int) $r['dst_w'], (int) $r['dst_h'], $r['src_abs'], $r['dst_file'] ); }
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.