From 53a7d54253e9a8d75efd81888c6338dc461e8953 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 13:22:09 +0000 Subject: [PATCH] Update settings once --- ...ss-wc-rest-payment-gateways-controller.php | 51 +++++++++---------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/includes/api/class-wc-rest-payment-gateways-controller.php b/includes/api/class-wc-rest-payment-gateways-controller.php index e0ddeb6c1f4..5b9465b6647 100644 --- a/includes/api/class-wc-rest-payment-gateways-controller.php +++ b/includes/api/class-wc-rest-payment-gateways-controller.php @@ -159,10 +159,12 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { return new WP_Error( 'woocommerce_rest_payment_gateway_invalid', __( 'Resource does not exist.', 'woocommerce' ), array( 'status' => 404 ) ); } - // Update settings if present + // Get settings. + $gateway->init_form_fields(); + $settings = $gateway->settings; + + // Update settings. if ( isset( $request['settings'] ) ) { - $gateway->init_form_fields(); - $settings = $gateway->settings; $errors_found = false; foreach ( $gateway->form_fields as $key => $field ) { if ( isset( $request['settings'][ $key ] ) ) { @@ -182,11 +184,27 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { if ( $errors_found ) { return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'woocommerce' ), array( 'status' => 400 ) ); } - - $gateway->settings = $settings; - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); } + // Update if this method is enabled or not. + if ( isset( $request['enabled'] ) ) { + $gateway->enabled = $settings['enabled'] = wc_bool_to_string( $request['enabled'] ); + } + + // Update title. + if ( isset( $request['title'] ) ) { + $gateway->title = $settings['title'] = $request['title']; + } + + // Update description. + if ( isset( $request['description'] ) ) { + $gateway->description = $settings['description'] = $request['description']; + } + + // Update options. + $gateway->settings = $settings; + update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); + // Update order if ( isset( $request['order'] ) ) { $order = (array) get_option( 'woocommerce_gateway_order' ); @@ -195,27 +213,6 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { $gateway->order = absint( $request['order'] ); } - // Update if this method is enabled or not. - if ( isset( $request['enabled'] ) ) { - $settings = $gateway->settings; - $gateway->enabled = $settings['enabled'] = wc_bool_to_string( $request['enabled'] ); - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); - } - - // Update title. - if ( isset( $request['title'] ) ) { - $settings = $gateway->settings; - $gateway->title = $settings['title'] = $request['title']; - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); - } - - // Update description. - if ( isset( $request['description'] ) ) { - $settings = $gateway->settings; - $gateway->description = $settings['description'] = $request['description']; - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); - } - $gateway = $this->prepare_item_for_response( $gateway, $request ); return rest_ensure_response( $gateway ); }