From 096ea16aad78c554c6f71ae07f83d7d80f5e398a Mon Sep 17 00:00:00 2001 From: pancho <pancho@15425.no-reply.drupal.org> Date: Fri, 17 May 2019 16:38:03 -0400 Subject: [PATCH] Issue #3023330 by Pancho, Liam Morland: Consolidate duplicate form field instances parsed by pdftk --- fillpdf.module | 23 ++++++++++++++++++----- tests/FillPdfTestHelper.test | 2 ++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/fillpdf.module b/fillpdf.module index 37d90f7..1a68591 100644 --- a/fillpdf.module +++ b/fillpdf.module @@ -1570,6 +1570,7 @@ function fillpdf_parse_pdf($fid) { ->execute(); // Create fields. + $unique_fields = array(); foreach ((array) $parsed_fields as $key => $field) { // Don't store "container" fields. if (!empty($field['type'])) { @@ -1580,13 +1581,19 @@ function fillpdf_parse_pdf($fid) { // improper parsing. $field['name'] = str_replace('�', '', $field['name']); - $record = array( - 'label' => NULL, - 'value' => '', - ); - fillpdf_fields_create_update($fid, $field['name'], $record); + // Use the field name as key, so to consolidate duplicate fields. + $unique_fields[$field['name']] = TRUE; } } + + // Save the fields that were parsed out (if any). + foreach (array_keys($unique_fields) as $pdf_key) { + $record = array( + 'label' => NULL, + 'value' => '', + ); + fillpdf_fields_create_update($fid, $pdf_key, $record); + } } /** @@ -1774,6 +1781,12 @@ function fillpdf_execute_parse($method, $fillpdf, $mode = 'url') { 'value' => '', 'type' => 'Text', ), + // Test duplicate name. + 3 => [ + 'name' => 'ImageField', + 'value' => '', + 'type' => 'Pushbutton', + ], ); break; } diff --git a/tests/FillPdfTestHelper.test b/tests/FillPdfTestHelper.test index dbee395..c8681cf 100644 --- a/tests/FillPdfTestHelper.test +++ b/tests/FillPdfTestHelper.test @@ -40,6 +40,8 @@ trait FillPdfTestHelper { $this->drupalPost('admin/structure/fillpdf', array( 'files[upload_pdf]' => drupal_realpath(drupal_get_path('module', 'fillpdf') . '/tests/fillpdf_test_v4.pdf'), ), t('Upload')); + $this->assertText('fillpdf_test_v4.pdf was successfully uploaded.'); + $this->assertResponse(200, "The duplicate field is consolidated and doesn't lead to an integrity constraint violation."); } /** -- GitLab