From 616eeb18331338f05e55036fef0ffadf20a5da41 Mon Sep 17 00:00:00 2001 From: kagg-design <info@kagg.eu> Date: Sat, 25 Jan 2025 23:00:37 +0300 Subject: [PATCH] Fix bug in GF shortcode (via tests). --- src/php/GravityForms/Form.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/php/GravityForms/Form.php b/src/php/GravityForms/Form.php index dfe8ee5f..5eb55bda 100644 --- a/src/php/GravityForms/Form.php +++ b/src/php/GravityForms/Form.php @@ -96,7 +96,7 @@ public function add_hcaptcha( $button_input, array $form ): string { $form_id = $form['id'] ?? 0; - if ( $this->mode_embed && $this->has_hcaptcha( $form_id ) ) { + if ( $this->has_hcaptcha( $form_id ) ) { return $button_input; } @@ -354,7 +354,7 @@ private function should_verify(): bool { $form_meta = (array) GFFormsModel::get_form_meta( $form_id ); if ( - 0 !== (int) $_POST[ $target_page_name ] && + 0 !== $target_page && $target_page !== $source_page && isset( $form_meta['pagination']['pages'][ $target_page - 1 ], @@ -398,9 +398,12 @@ private function has_hcaptcha( int $form_id ): bool { $captcha_types = [ 'captcha', 'hcaptcha' ]; foreach ( $form['fields'] as $field ) { + $type = $field->type ?? ''; + $content = $field->content ?? ''; + if ( - in_array( $field->type, $captcha_types, true ) || - has_shortcode( $field['content'], 'hcaptcha' ) + ( $this->mode_embed && in_array( $type, $captcha_types, true ) ) || + has_shortcode( $content, 'hcaptcha' ) ) { return true; }