is_active() ) { return; } if ( $contact_form->in_demo_mode() ) { return; } $consented = true; $optional_consent_tag = false; foreach ( $contact_form->scan_form_tags( 'feature=name-attr' ) as $tag ) { if ( $tag->has_option( 'consent_for:notion' ) ) { if ( $tag->has_option( 'optional' ) ) { $optional_consent_tag = $tag; } if ( null === $submission->get_posted_data( $tag->name ) ) { $consented = false; } break; } } if ( ! $consented ) { return; } $prop = wp_parse_args( $contact_form->prop( 'wpc_notion' ), array( 'enable_database' => false, 'database_selected' => '', ) ); if ( ! $prop['enable_database'] || empty( $prop['database_selected'] ) ) { return; } $database_id = $prop['database_selected']; $columns = Helpers\get_notion_databases_columns( $database_id ); $data = (array) $submission->get_posted_data(); $notion_fields = array(); $field_mapper = WPCF7_Field_Mapper::get_instance(); $mapped_tags = Helpers\get_mapped_tags_from_contact_form( $contact_form, $columns ); // Make sure mapped tags are compatible. $cleaned_mapped_tags = $field_mapper->filter_mapped_tags( $mapped_tags ); foreach ( $cleaned_mapped_tags as $wpcf7_field_name => $field ) { $column_id = $field['notion_field_id']; $original_field_value = $data[ $wpcf7_field_name ]; // Change value for special fields. if ( 'acceptance' === $field['type'] ) { $original_field_value = $original_field_value ? $field['content'] : __( 'No', 'add-on-cf7-for-notion' ); } $field_value = $field_mapper->get_formatted_field_value( $field['type'], $field['notion_field_type'], $original_field_value ); $notion_fields[ $column_id ] = (object) array( 'column_id' => $column_id, 'field_value' => $field_value, 'field_type' => $field['notion_field_type'], ); } $notion_fields_ok = Helpers\prepare_fields_for_notion( $notion_fields, $database_id ); $api = wpconnect_wpcf7_notion_get_api(); // Send form data to Notion. $response = $api->add_database_row( $database_id, $notion_fields_ok ); if ( is_wp_error( $response ) ) { $submission->set_status( 'aborted' ); $submission_response = __( "Sorry, your form data can't be saved, please try again later.", 'add-on-cf7-for-notion' ); // If there is an optional consent tag, let the user know he can uncheck it. if ( $optional_consent_tag ) { /* translators: %s: consent checkbox text */ $submission_response = sprintf( __( "Sorry, your form data can't be saved, please try again later or uncheck \"%s\".", 'add-on-cf7-for-notion' ), $optional_consent_tag->content ); } $submission->set_response( $submission_response ); $abort = true; } }