Сохранить частичные записи формы в Gravity Form как «Сохранить и продолжить» с токеном - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь получить каждую частичную отправку формы с помощью плагина частичных форм GF, которая будет сохранена как «Сохранить и продолжить» со своим уникальным токеном. Это позволит нам использовать токен и отправить по электронной почте ссылку пользователям в маркетинговых сообщениях, где они могут продолжить позже.

Я сделал это по большей части, но когда частичная запись обновлена, по какой-то причине GF удаление resume_token, resume_url и date_saved из мета-таблицы, чтобы, пока токен все еще работал, маленькая сохраненная иконка не появлялась, когда мета не существует, поэтому найти ссылку сложнее. Я должен go прямо в базе данных, чтобы найти токен.

add_action( 'gform_partialentries_post_entry_saved', 'create_save_and_continue_link', 10, 2 );
function create_save_and_continue_link( $partial_entry, $form ) {
    $lead = GFFormsModel::get_current_lead();
    $field_values = RGForms::post( 'gform_field_values' );
    $page_number = 1;
    $files = [];
    $form_unique_id = GFFormsModel::get_form_unique_id( $form['id'] );
    $ip = rgars( $form, 'personalData/preventIP' ) ? '' : GFFormsModel::get_ip();
    $source_url = GFFormsModel::get_current_page_url();
    $source_url = esc_url_raw( $source_url );
    $entry_id = $partial_entry['id'];

    $resume_token = GFFormsModel::save_draft_submission($form, $entry_id, $field_values, $page_number, $files, $form_unique_id, $ip, $source_url);

    // Variables needed to be saved for save and continue to work
    $resume_url = apply_filters( 'gform_save_and_continue_resume_url', add_query_arg( array( 'gf_token' => $resume_token ), GFFormsModel::get_current_page_url() ), $form, $resume_token, null );
    $resume_url = esc_url( $resume_url );

    // Save entry meta
    gform_add_meta( $entry_id, 'resume_token', $resume_token );
    gform_add_meta( $entry_id, 'resume_url', $resume_url );
    gform_add_meta( $entry_id, 'date_saved', current_time( 'mysql', true ) );
}
...