From f9d6e65ece75f8b0ff10f9d6c835fb2af7ed0b39 Mon Sep 17 00:00:00 2001 From: John Oleksowicz Date: Thu, 30 Mar 2023 12:43:35 -0500 Subject: [PATCH] Ensure personal data exporter includes all custom fields The test testExportSubscriberWithCustomField was only passing before because we were truncating tables in between tests, so the custom field id ended up matching the subscriber custom field id coincidentally. MAILPOET-5145 MAILPOET-5185 --- .../PersonalDataExporters/SubscriberExporter.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/SubscriberExporter.php b/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/SubscriberExporter.php index e625fb7a2f..0b12cdbcf5 100644 --- a/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/SubscriberExporter.php +++ b/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/SubscriberExporter.php @@ -3,6 +3,7 @@ namespace MailPoet\Subscribers\ImportExport\PersonalDataExporters; use MailPoet\CustomFields\CustomFieldsRepository; +use MailPoet\Entities\CustomFieldEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Subscribers\Source; use MailPoet\Subscribers\SubscribersRepository; @@ -94,11 +95,16 @@ class SubscriberExporter { : '', ]; - foreach ($subscriber->getSubscriberCustomFields() as $field) { - if (isset($this->getCustomFields()[$field->getId()])) { + foreach ($subscriber->getSubscriberCustomFields() as $subscriberCustomField) { + $customField = $subscriberCustomField->getCustomField(); + if (!$customField instanceof CustomFieldEntity) { + continue; + } + $customFieldId = $customField->getId(); + if (isset($this->getCustomFields()[$customFieldId])) { $result[] = [ - 'name' => $customFields[$field->getId()], - 'value' => $field->getValue(), + 'name' => $customFields[$customFieldId], + 'value' => $subscriberCustomField->getValue(), ]; } }