'use_external_url', 'type' => 'checkbox', 'label' => __( 'Use custom URL', 'wpcf7-redirect' ), 'sub_title' => '', 'placeholder' => '', 'show_selector' => '.field-wrap-external_url,.field-wrap-page_id', 'value' => $this->get( 'use_external_url' ), ), array( 'name' => 'page_id', 'type' => 'page_select', 'label' => __( 'Select a page', 'wpcf7-redirect' ), 'placeholder' => __( 'Select a page', 'wpcf7-redirect' ), 'value' => $this->get( 'page_id' ), 'class' => $this->get( 'use_external_url' ) ? 'field-hidden' : '', ), array( 'name' => 'external_url', 'type' => 'text', 'label' => __( 'Use external URL', 'wpcf7-redirect' ), 'placeholder' => __( 'Use external URL', 'wpcf7-redirect' ), 'tooltip' => __( 'You can build a custom url like this https://example.com/[your-name]?[your-email]&[your-tel]', 'wpcf7-redirect' ), 'footer' => '
' . $this->get_formatted_mail_tags() . '
', 'value' => $this->get( 'external_url' ), 'class' => $this->get( 'use_external_url' ) ? '' : 'field-hidden', ), array( 'name' => 'redirect_as_x_form_encoded_url', 'type' => 'checkbox', 'label' => __( 'Redirect as X-WWW-FORM-URLENCODED (Form Post)', 'wpcf7-redirect' ), 'sub_title' => '', 'placeholder' => '', 'value' => $this->get( 'redirect_as_x_form_encoded_url' ), ), array( 'name' => 'open_in_new_tab', 'type' => 'checkbox', 'label' => __( 'Open page in a new tab', 'wpcf7-redirect' ), 'sub_title' => '', 'placeholder' => '', 'show_selector' => '.field-wrap-open_in_new_tab_notice', 'value' => $this->get( 'open_in_new_tab' ), ), array( 'name' => 'open_in_new_tab_notice', 'type' => 'notice', 'label' => '' . __( 'Notice!', 'wpcf7-redirect' ) . '', 'sub_title' => __( 'This option might not work as expected, since browsers often block popup windows. This option depends on the browser settings.', 'wpcf7-redirect' ), 'placeholder' => '', 'class' => $this->get( 'open_in_new_tab' ) ? 'field-notice-alert' : 'field-hidden field-notice-alert', 'show_selector' => '', ), array( 'name' => 'http_build_query', 'type' => 'checkbox', 'label' => __( 'Pass all the fields from the form as URL query parameters', 'wpcf7-redirect' ), 'sub_title' => '', 'placeholder' => '', 'show_selector' => '.field-wrap-get_param_shortcode', 'value' => $this->get( 'http_build_query' ), ), array( 'name' => 'http_build_query_selectively', 'type' => 'checkbox', 'label' => __( 'Pass specific fields from the form as URL query parameters', 'wpcf7-redirect' ), 'sub_title' => '', 'placeholder' => '', 'show_selector' => '.field-wrap-http_build_query_selectively_fields,.field-wrap-get_param_shortcode', 'value' => $this->get( 'http_build_query_selectively' ), ), array( 'name' => 'url_encode', 'type' => 'checkbox', 'label' => __( 'Encode passed query parameters', 'wpcf7-redirect' ), 'sub_title' => '', 'placeholder' => '', 'value' => $this->get( 'url_encode' ), ), array( 'name' => 'http_build_query_selectively_fields', 'type' => 'text', 'label' => __( 'Fields to pass as URL query parameters, separated by commas:', 'wpcf7-redirect' ), 'footer' => '
' . $this->get_formatted_mail_tags( true ) . '
', 'placeholder' => '', 'value' => $this->get( 'http_build_query_selectively_fields' ), 'class' => $this->get( 'http_build_query_selectively' ) ? '' : 'field-hidden', ), array( 'name' => 'get_param_shortcode', 'type' => 'notice', 'label' => '' . __( '[get_param]!', 'wpcf7-redirect' ) . '', 'sub_title' => __( 'You can use this tag on the target page to collect the data transerred [get_param param="your-name"].', 'wpcf7-redirect' ), 'placeholder' => '', 'class' => $this->get( 'http_build_query_selectively' ) ? 'field-notice-alert' : 'field-hidden field-notice-alert', 'show_selector' => '', ), array( 'name' => 'delay_redirect_seconds', 'type' => 'number', 'label' => __( 'How many seconds to delay', 'wpcf7-redirect' ), 'placeholder' => __( 'Number of seconds', 'wpcf7-redirect' ), 'value' => $this->get( 'delay_redirect_seconds' ), 'class' => '', ), 'action_status' => array( 'name' => 'action_status', 'type' => 'checkbox', 'label' => $this->get_action_status_label(), 'sub_title' => __( 'if this is off the rule will not be applied', 'wpcf7-redirect' ), 'placeholder' => '', 'show_selector' => '.field-wrap-disable_default_email', 'toggle-label' => json_encode( array( '.field-wrap-action_status .checkbox-label,.column-status a' => array( __( 'Enabled', 'wpcf7-redirect' ), __( 'Disabled', 'wpcf7-redirect' ), ), ) ), 'value' => $this->get( 'action_status' ), ), 'disable_default_email' => array( 'name' => 'disable_default_email', 'type' => 'notice', 'label' => __( 'NOTICE!
', 'wpcf7-redirect' ), 'sub_title' => __( 'Redirection will always be the last action regardless of the actions order.', 'wpcf7-redirect' ), 'placeholder' => '', 'class' => $this->get( 'action_status' ) ? 'field-notice-alert' : 'field-hidden field-notice-alert', 'show_selector' => '', ), ), $parent_fields ); } /** * Get an HTML of the */ public function get_action_settings() { $this->get_settings_template( 'html-action-redirect.php' ); } /** * Handle a simple redirect rule * * @param $submission */ public function process( $submission ) { $response = array(); $this->posted_data = $submission->get_posted_data(); foreach ( $this->posted_data as $posted_data_key => $posted_data_value ) { if ( is_array( $posted_data_value ) ) { $this->posted_data[ $posted_data_key ] = implode( ',', $posted_data_value ); } elseif ( $this->get( 'url_encode' ) ) { $this->posted_data[ $posted_data_key ] = rawurlencode( $posted_data_value ); } } if ( $this->get( 'use_external_url' ) === 'on' && $this->get( 'external_url' ) ) { $response = array( 'type' => 'redirect', 'redirect_url' => $this->replace_tags( $this->get( 'external_url' ) ), 'delay' => $this->get( 'delay_redirect_seconds' ) ? (int) $this->get( 'delay_redirect_seconds' ) : 0, ); } elseif ( $this->get( 'page_id' ) ) { $response = array( 'type' => 'redirect', 'redirect_url' => get_permalink( $this->get( 'page_id' ) ), 'delay' => $this->get( 'delay_redirect_seconds' ) ? (int) $this->get( 'delay_redirect_seconds' ) : 0, ); } if ( $this->get( 'redirect_as_x_form_encoded_url' ) && isset( $response['redirect_url'] ) && $response['redirect_url'] ) { ob_start(); $params = parse_url( $response['redirect_url'] ); parse_str( $params['query'], $fields ); if ( isset( $fields['sum'] ) && isset( $fields['qty'] ) ) { $fields['sum'] = $fields['sum'] * $fields['qty']; } if ( $this->get( 'http_build_query_selectively' ) === 'on' ) { $fields_to_add = explode( ',', $this->get( 'http_build_query_selectively_fields' ) ); foreach ( $fields_to_add as $field_to_add ) { $field_to_add = trim( $field_to_add ); $fields[ $field_to_add ] = isset( $this->posted_data[ $field_to_add ] ) ? $this->posted_data[ $field_to_add ] : ''; } } elseif ( $this->get( 'http_build_query' ) === 'on' ) { $fields = array_merge( $this->posted_data, $fields ); } ?>
$field_value ) : ?>
get( 'http_build_query' ) === 'on' ) { $response['http_build_query'] = true; $response['redirect_url'] = add_query_arg( $this->posted_data, $response['redirect_url'] ); } elseif ( $this->get( 'http_build_query_selectively' ) === 'on' ) { $fields_to_add = explode( ',', $this->get( 'http_build_query_selectively_fields' ) ); $fields_to_add_args = array(); foreach ( $fields_to_add as $field_to_add ) { $field_to_add = trim( $field_to_add ); $fields_to_add_args[ $field_to_add ] = isset( $this->posted_data[ $field_to_add ] ) ? $this->posted_data[ $field_to_add ] : ''; } $response['redirect_url'] = add_query_arg( $fields_to_add_args, $response['redirect_url'] ); } if ( $this->get( 'after_sent_script' ) ) { $response['after_sent_script'] = $this->get( 'after_sent_script' ); } if ( $this->get( 'open_in_new_tab' ) === 'on' ) { $response['type'] = 'new_tab'; } return $response; } }