I have a plugin which uploads image using wp_upload_handler
here is a function:
//handles upload, a modified version of bp_core_avatar_handle_upload(from bp-core/bp-core-avatars.php)
function handle_upload( ) {
global $bp;
//include core files
require_once( ABSPATH . '/wp-admin/includes/file.php' );
$max_upload_size=$this->get_max_upload_size();
$max_upload_size=$max_upload_size*1024;//convert kb to bytes
$file=$_FILES;
//I am not changing the domain of erro messages as these are same as bp, so you should have a translation for this
$uploadErrors = array(
0 => __('There is no error, the file uploaded with success', 'buddypress'),
1 => __('Your image was bigger than the maximum allowed file size of: ', 'buddypress') . size_format($max_upload_size),
2 => __('Your image was bigger than the maximum allowed file size of: ', 'buddypress') . size_format($max_upload_size),
3 => __('The uploaded file was only partially uploaded', 'buddypress'),
4 => __('No file was uploaded', 'buddypress'),
6 => __('Missing a temporary folder', 'buddypress')
);
if ( $file['error'] ) {
bp_core_add_message( sprintf( __( 'Your upload failed, please try again. Error was: %s', 'buddypress' ), $uploadErrors[$file['file']['error']] ), 'error' );
return false;
}
if ( ! ($file['file']['size']<$max_upload_size) ) {
bp_core_add_message( sprintf( __( 'The file you uploaded is too big. Please upload a file under %s', 'buddypress'), size_format($max_upload_size) ), 'error' );
return false;
}
if ( ( !empty( $file['file']['type'] ) && !preg_match('/(jpe?g|gif|png)$/i', $file['file']['type'] ) ) || !preg_match( '/(jpe?g|gif|png)$/i', $file['file']['name'] ) )
{
bp_core_add_message( __( 'Please upload only JPG, GIF or PNG photos.', 'buddypress' ), 'error' );
return false;
}
$uploaded_file = wp_handle_upload( $file['file'], array( 'action'=> 'bp_upload_profile_bg' ) );
//if file was not uploaded correctly
if ( !empty($uploaded_file['error'] ) ) {
bp_core_add_message( sprintf( __( 'Upload Failed! Error was: %s', 'buddypress' ), $uploaded_file['error'] ), 'error' );
return false;
}
//assume that the file uploaded succesfully
//delete any previous uploaded image
self::delete_bg_for_user();
//save in usermeta
update_user_meta(bp_loggedin_user_id(),'profile_bg',$uploaded_file['url']);
update_user_meta(bp_loggedin_user_id(),'profile_bg_file_path',$uploaded_file['file']);
update_user_meta(bp_loggedin_user_id(),'profile_bg_pos',0);
do_action('bppg_background_uploaded',$uploaded_file['url']);//allow to do some other actions when a new background is uploaded
return true;
}
before uploading I want to modify this file. Generally I want to add “blur” effect to image. is it possible with such structure?