From 66772080a5d8e686683aff85ed9c84fe29dc118b Mon Sep 17 00:00:00 2001 From: Kelly Dwan Date: Thu, 24 Oct 2019 16:07:54 -0400 Subject: [PATCH] Move where image handling happens so we can pass back errors --- plugins/wporg-5ftf/includes/pledge-form.php | 28 +++++++++++++++++++++ plugins/wporg-5ftf/includes/pledge-meta.php | 27 -------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/plugins/wporg-5ftf/includes/pledge-form.php b/plugins/wporg-5ftf/includes/pledge-form.php index ef32532..d9a115b 100755 --- a/plugins/wporg-5ftf/includes/pledge-form.php +++ b/plugins/wporg-5ftf/includes/pledge-form.php @@ -108,6 +108,34 @@ function process_form_new() { Contributor\create_new_contributor( $wporg_username, $new_pledge_id ); } + // Process image. + if ( ! function_exists('media_handle_upload') ) { + require_once( ABSPATH . 'wp-admin/includes/image.php' ); + require_once( ABSPATH . 'wp-admin/includes/file.php' ); + require_once( ABSPATH . 'wp-admin/includes/media.php' ); + } + + $logo = isset( $_FILES['org-logo'] ) ? $_FILES['org-logo'] : false; + if ( $logo ) { + if ( ! in_array( $logo['type'], [ 'image/png', 'image/jpg' ] ) ) { + return new WP_Error( + 'invalid_image_type', + __( 'Logo file must be a png or jpg.', 'wporg' ) + ); + } + if ( ( $logo['size'] > 5 * MB_IN_BYTES ) ) { + return new WP_Error( + 'invalid_image_size', + __( 'Logo file must be less than 5MB.', 'wporg' ) + ); + } + + $result = \media_handle_sideload( $logo, $new_pledge_id ); + if ( ! is_wp_error( $result ) ) { + set_post_thumbnail( $new_pledge_id, $result ); + } + } + return 'success'; } diff --git a/plugins/wporg-5ftf/includes/pledge-meta.php b/plugins/wporg-5ftf/includes/pledge-meta.php index c875681..2d690ad 100755 --- a/plugins/wporg-5ftf/includes/pledge-meta.php +++ b/plugins/wporg-5ftf/includes/pledge-meta.php @@ -69,12 +69,6 @@ function get_pledge_meta_config( $context = '' ) { 'sanitize_callback' => 'sanitize_text_field', 'show_in_rest' => false, ), - 'org-logo' => array( - 'single' => true, - 'sanitize_callback' => 'esc_url_raw', - 'show_in_rest' => true, - 'php_filter' => FILTER_VALIDATE_URL, - ), 'pledge-email-confirmed' => array( 'single' => true, 'sanitize_callback' => 'wp_validate_boolean', @@ -230,27 +224,6 @@ function save_pledge( $pledge_id, $pledge ) { function save_pledge_meta( $pledge_id, $new_values ) { $config = get_pledge_meta_config(); - // Process image. - if ( ! function_exists('media_handle_upload') ) { - require_once( ABSPATH . 'wp-admin/includes/image.php' ); - require_once( ABSPATH . 'wp-admin/includes/file.php' ); - require_once( ABSPATH . 'wp-admin/includes/media.php' ); - } - - $logo = isset( $_FILES['org-logo'] ) ? $_FILES['org-logo'] : false; - if ( - $logo && - in_array( $logo['type'], [ 'image/png', 'image/jpg' ] ) && - ( $logo['size'] < 5 * MB_IN_BYTES ) - ) { - $result = \media_handle_sideload( $logo, $pledge_id ); - - if ( ! is_wp_error( $result ) ) { - $new_values['org-logo'] = wp_get_attachment_url( $result ); - set_post_thumbnail( $pledge_id, $result ); - } - } - foreach ( $new_values as $key => $value ) { if ( array_key_exists( $key, $config ) ) { $meta_key = META_PREFIX . $key;