From 77f94e7b3c6caca2726e5950cb77d072cd04162a Mon Sep 17 00:00:00 2001 From: Daniel Espinoza Date: Fri, 21 Dec 2018 18:37:21 -0600 Subject: [PATCH 1/2] Fix CF7 integration for 5.0.5. Fix #137 --- admin/section/class-convertkit-settings-contactform7.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/section/class-convertkit-settings-contactform7.php b/admin/section/class-convertkit-settings-contactform7.php index 4e5917e51..1dca2594f 100644 --- a/admin/section/class-convertkit-settings-contactform7.php +++ b/admin/section/class-convertkit-settings-contactform7.php @@ -224,7 +224,7 @@ public function cf7_form_callback( $args ) { $cf7_form_id = $args['cf7_form_id']; $forms = $args['forms']; - $html = sprintf( '', $this->settings_key, $cf7_form_id ); $html .= ''; foreach ( $forms as $form ) { $selected = ''; @@ -274,7 +274,7 @@ public function sanitize_settings( $input ) { $output = $this->options; foreach ( $input as $key => $value ) { - $output[ $key ] = stripslashes( $input[ $key ] ); + $output[ $key ] = sanitize_text_field( $input[ $key ] ); } $sanitize_hook = 'sanitize' . $this->settings_key; return apply_filters( $sanitize_hook, $output, $input ); From 117e8675350acd34e22be02437a81904d2590db5 Mon Sep 17 00:00:00 2001 From: Travis Northcutt Date: Mon, 31 Dec 2018 12:37:23 -0600 Subject: [PATCH 2/2] Ensure that CF7 options are saved as an array Previously, if the option got stored wonky, it would return as a text field, and then get saved as a wonky text field. This ensures we save as an array no matter what, which is required behavior. --- admin/section/class-convertkit-settings-contactform7.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/admin/section/class-convertkit-settings-contactform7.php b/admin/section/class-convertkit-settings-contactform7.php index 1dca2594f..bd0346362 100644 --- a/admin/section/class-convertkit-settings-contactform7.php +++ b/admin/section/class-convertkit-settings-contactform7.php @@ -271,12 +271,14 @@ public function cf7_name_callback( $args ) { */ public function sanitize_settings( $input ) { // Settings page can be paginated; combine input with existing options. - $output = $this->options; + // If saved options are not an array, start fresh. Fixes rogue saved options + $output = is_array( $this->options ) ? $this->options : array(); foreach ( $input as $key => $value ) { - $output[ $key ] = sanitize_text_field( $input[ $key ] ); + $output[ $key ] = sanitize_text_field( $value ); } $sanitize_hook = 'sanitize' . $this->settings_key; + return apply_filters( $sanitize_hook, $output, $input ); } }