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
This commit is contained in:
John Oleksowicz
2023-03-30 12:43:35 -05:00
committed by John Oleksowicz
parent 2292ab09a8
commit f9d6e65ece

View File

@ -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(),
];
}
}