Skip to content

Commit b2d553a

Browse files
committed
Add afterGetList method in CustomerRepository plugin to retrieve is_subscribed
1 parent 4988790 commit b2d553a

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

app/code/Magento/Newsletter/Model/Plugin/CustomerPlugin.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
use Magento\Customer\Api\CustomerRepositoryInterface as CustomerRepository;
99
use Magento\Customer\Api\Data\CustomerInterface;
10+
use Magento\Framework\Api\SearchCriteria;
11+
use Magento\Framework\Api\SearchResults;
1012
use Magento\Newsletter\Model\SubscriberFactory;
1113
use Magento\Framework\Api\ExtensionAttributesFactory;
1214
use Magento\Newsletter\Model\ResourceModel\Subscriber;
@@ -165,6 +167,34 @@ public function afterGetById(CustomerRepository $subject, CustomerInterface $cus
165167
return $customer;
166168
}
167169

170+
/**
171+
* Plugin after getById customer that obtains newsletter subscription status for given customer.
172+
*
173+
* @param CustomerRepository $subject
174+
* @param SearchResults $searchResults
175+
* @param SearchCriteria $searchCriteria
176+
* @return SearchResults
177+
*/
178+
public function afterGetList(CustomerRepository $subject, SearchResults $searchResults, SearchCriteria $searchCriteria)
179+
{
180+
181+
foreach ($searchResults->getItems() as $customer) {
182+
$extensionAttributes = $customer->getExtensionAttributes();
183+
184+
if ($extensionAttributes === null) {
185+
/** @var CustomerExtensionInterface $extensionAttributes */
186+
$extensionAttributes = $this->extensionFactory->create(CustomerInterface::class);
187+
$customer->setExtensionAttributes($extensionAttributes);
188+
}
189+
if ($extensionAttributes->getIsSubscribed() === null) {
190+
$isSubscribed = $this->isSubscribed($customer);
191+
$extensionAttributes->setIsSubscribed($isSubscribed);
192+
}
193+
}
194+
195+
return $searchResults;
196+
}
197+
168198
/**
169199
* This method returns newsletters subscription status for given customer.
170200
*

0 commit comments

Comments
 (0)